Существует ли API для получения результатов, похожих на Google, "люди также ищут"?

Я ищу API, который дал бы результаты, аналогичные функции Google "люди также ищут". Так что, например, когда я ищу Стэнли Кубрика, я вижу всех других режиссеров, которых ищут люди.

Я знаю об API Freebase, но он просто предоставляет информацию об элементе поиска, а не о том, с какими другими элементами поиска он может быть связан.

В API Google AdWords также есть инструмент TargetingIdeaSelector, который показывает связанные ключевые слова, но на самом деле не семантически ранжирует результаты.

Наконец, есть очень простой Bing API, который показывает связанные поиски (также здесь), но, опять же, он не охватывает информацию семантически.

Знаете ли вы о каком-либо API или, может быть, есть что-то подобное в API Google, которое показало бы, что связанные поиски ранжировались семантически?

2 ответа

Результаты, которые показывает Google, основаны на огромном количестве данных, которые, как я предполагаю, основаны на том, "что X искал Y, который также искал", "что другие люди, похожие на X, которые также искали Y, искали" и так далее. Кроме того, возможно, есть некоторая зависимость от семантической информации, поступающей из Freebase.

По инициативе, чтобы понять, какие свойства Google показывает в своих информационных блоках, например, почему, когда мы ищем Францию, мы получаем карту с картой, флагом, столицей, населением... и т. Д. Среди сотен свойств, связанных с Францией, я создал " Извлечение базы знаний ", которое может анализировать инфобокс Google и представлять данные как RDF с использованием словаря Френеля.

Алгоритм реализован следующим образом:

  • Запросите DBpedia для всех концепций (типов), для которых существует хотя бы один экземпляр, имеющий ссылку на идентификатор Freebase
  • Для каждого из этих понятий выберите (n) экземпляров случайным образом
  • Для каждого экземпляра выполните запрос поиска Google:
  • если имеется инфобокс -> удалите инфобокс, чтобы извлечь свойства
  • если информация не доступна, проверьте, предлагает ли Google "вы имеете в виду...?" и если да, пройдите по ссылке и найдите инфобокс
  • если инфобокс или коррекция недоступны, устраните неоднозначность понятия (типа), использованного в поисковом запросе, и проверьте, возвращен ли инфобокс
  • если Google предлагает устранить неоднозначность в информационном блоке, проанализируйте все ссылки в нем -> лучше всего найти, какое предложение соответствует текущему типу данных, который мы используем -> проверить сопоставления Freebase - DBpedia
  • Свойства кластера для каждой концепции

Я также фиксирую раздел "люди искали", но вы также можете настроить его немного больше.

Также обратите внимание, что вы можете проверить селекторы CSS для инфобокса, так как Google часто их меняет (возможно, автоматически). Это сделано в options.json

"knowledgeBox"                : "#kno-result",
"knowledgeBox_disambiguate"   : ".kp-blk",
"property"                    : "._Nl",
"property_value"              : ".kno-fv",
"label"                       : ".kno-ecr-pt",
"description"                 : ".kno-rdesc",
"type"                        : "._kx",
"images"                      : ".bicc",
"special_property"            : ".kno-sh",
"special_property_value"      : "._Zh",
"special_property_value_link" : "a._dt"

Google имел обыкновение предлагать такой API, но он был обезглавлен несколько лет назад. Я не уверен, почему это было так, но я думаю, потому что он не принес им никакой реальной выгоды и, вероятно, стоил слишком дорого. большинство поисковых систем, как правило, не имеют поисковых API в моем опыте.

Тем не менее, вы можете попробовать сделать свой собственный, используя PHP и DOM Parser, чтобы анализировать результаты откуда-то вроде Google и экспортировать данные в виде JSON.

доступно для скачивания здесь http://simplehtmldom.sourceforge.net/

Это должно вытянуть все ссылки из Google, которые вы затем можете отформатировать. Вы можете анализировать все данные и можете целевые объекты см. Документацию для получения дополнительной информации.

  $search = $_GET['search'];
> $google_search = file_get_html('https://www.google.co.uk/?gws_rd=ssl#q=' . $search);
> 
> foreach($google_search->find('a') as $item) {
>       echo $item->href . '<br>';
> }

надеюсь, это поможет

Другие вопросы по тегам