Каков хороший способ получить слова, связанные с данным словом?

Я ищу что-то вроде Google Sets, но в форме API. Наборы Google не позволяет соскабливать и не имеет API.

Например, я бы хотел найти "электронику" и вернуть ее "cd-плеер, телевизор, телефон, компьютер и т.д.". Возможно, как и в Google Sets, попросите пару слов.

Любые идеи? Есть ли какой-нибудь открытый API или другой способ извлечь такие данные?

Ответ 1

Взгляните на API Большой Огромный Тезаурус:

http://words.bighugelabs.com/api.php

http://blog.programmableweb.com/2008/09/04/big-huge-thesaurus-api-access-145000-words-and-phrases/

Надеюсь, это сработает... Вы также можете проверить WordNet, но если вам нужен веб-сервис, вам придется разместить свой собственный (но там код для него!): http://wnws.sourceforge.net/

Ответ 2

Может быть, что wordnet может вам помочь: http://wordnet.princeton.edu/

В face wordnet лежит большая лексическая база данных английского языка, здесь слова взаимосвязаны с помощью концептуально-семантических и лексических отношений.

Ответ 3

Wordnik может соответствовать тому, что вы ищете, и имеет API. http://developer.wordnik.com/

Ответ 4

Похоже на то, что вы ищете, это не тезаурус, поскольку вы не ищете альтернативные слова со схожими значениями, но вы на самом деле ищете слова, которые имеют некоторые касательные отношения.

Не пробовал это сам, но это может быть хорошим местом для начала

http://www.wait-till-i.com/2008/11/13/yahoo-boss-keyword-extraction-api-wrappers-jsphp/

Ответ 5

Для этого нет надежного API-интерфейса, но вы можете построить его самостоятельно, если вы амбициозны.

1) Создайте веб-искатель, который может сканировать как минимум миллион веб-страниц. Вы можете остановить его, как только он достигнет этой точки. Используйте парсер NLP для извлечения существительных/существительных фраз из заголовков и текста и их хранения в индекс поиска, такой как ElasticSearch. Для индекса поиска, есть поле "теги", которое содержит все существительные-фразы для веб-страницы:

IE:

tags: ["ruby", "rails", "programming", "dev"]
tags: ["mlb", "baseball", "fans", "stadium", "miguel cabrera"]

Затем выполните факсированный поиск в поле тегов. Поэтому, если вы выполните поиск термина "mlb", он вернет самые популярные термины, которые были на той же веб-странице, что и MLB.

Ответ 6

Если существующего API недостаточно, существует множество веб-сервисов, которые позволяют вам размывать контент и делать с ними аккуратные вещи, причем одним из самых мощных является YQL. Вы можете использовать YQL для извлечения контента с любой веб-страницы и в основном превратить его в свой персональный веб-сервис.

Предположим, вы хотите использовать WordNet в качестве источника для связанных слов, и вы хотите получить список слов, связанных с "grok" в формате JSON. Вот как:

  • Посмотрите "grok" в WordNet, чтобы захватить URL-адрес:

    http://wordnetweb.princeton.edu/perl/webwn?s=grok

  • Осмотрите элемент (ы), который содержит связанные слова (<ul> в этом случае), чтобы получить XPath.

  • Используйте информацию, собранную в шагах 1-2, чтобы построить свой оператор YQL в консоли YQL:

    select * from html where url="http://wordnetweb.princeton.edu/perl/webwn?s=grok" and xpath="//ul"

  • Нажмите кнопку "JSON", чтобы отформатировать извлеченный контент как JSON в ответе. При желании вы также можете снять флажок "Диагностика", чтобы исключить диагностические данные и уменьшить размер ответа JSON.

  • Нажмите кнопку "Тест", чтобы просмотреть извлеченный контент. Вы заметите, что содержимое форматируется как JSON, со связанными словами, хранящимися в массиве объектов. Возвращенные данные не идеальны, так как он также имеет белый шум (контент вам не нужен), но он работоспособен.

Если вы довольны результатами, то URL-адрес "веб-службы" предоставляется вам в нижней части страницы в разделе "ВОПРОС ОСТРОВ". Вы можете использовать этот URL-адрес в своем вызове $.ajax() - вам просто нужно заменить "grok" в URL-адресе любым словом, которое вы хотите найти.

ПРИМЕЧАНИЕ. Если веб-форма на шаге 1 использует POST вместо GET, тогда также возможно очистить результаты формы POST.

Однако существуют некоторые ограничения в этом подходе. Основные из них:

  • Это зависит от чего-то сверх вашего контроля, что никогда не бывает хорошим. Например, если структура HTML изменится, ваш запрос, скорее всего, сломается.

  • Часто возвращаемый объект JSON будет более сложным, чем вы предпочли бы, требуя дополнительной логики последующей обработки, чтобы получить точные данные, которые вы хотите.