Как вырастить список связанных слов на основе начальных ключевых слов?

19

Недавно я увидел интересную функцию, которая когда- то была доступна в Google Sheets: вы начинаете с написания нескольких связанных ключевых слов в последовательных ячейках, скажем: «синий», «зеленый», «желтый», и автоматически генерирует похожие ключевые слова (в данном случае другие цвета). Смотрите больше примеров в этом видео на YouTube .

Я хотел бы воспроизвести это в моей собственной программе. Я думаю об использовании Freebase, и это будет работать так интуитивно:

  1. Получить список заданных слов в Freebase;
  2. Найти их «общий знаменатель (и)» и построить метрику расстояния на основе этого;
  3. Ранжировать другие понятия на основе их «расстояния» до исходных ключевых слов;
  4. Покажите следующие ближайшие понятия.

Поскольку я не знаком с этой областью, мои вопросы:

  • Есть лучший способ это сделать?
  • Какие инструменты доступны для каждого шага?
nassimhddd
источник
Я предполагаю, что это основано на изучении тем в большом корпусе.
Чакраварти
Если вы хотите найти их объяснение, я полагаю, что была статья о базовом методе под названием Google Sets.
jamesmf
1
Эта проблема называется «расширение запроса».
Эмре

Ответы:

15

Word2vec алгоритм может быть хорошим способом , чтобы получить больше элементов для списка похожих слов. Это неконтролируемый алгоритм «глубокого обучения», который ранее демонстрировался с обучающими данными на основе Википедии (вспомогательные сценарии представлены на кодовой странице Google).

В настоящее время есть реализации на C и Python . Этот урок от Radim ůeh Radřek , автора библиотеки тематических моделей Gensim , является отличным местом для начала.

«Одной теме» демонстрация на учебник является хорошим примером retreiving подобные слова к одному члену (попробуйте найти на «красный» или «желтый»). Должна быть возможность расширить эту технику, чтобы найти слова, которые имеют наибольшее общее сходство с набором входных слов.

joews
источник
5

Рассматривали ли вы частотный подход, использующий простое совпадение слов в корпусах? По крайней мере, это то, что я видел, что большинство людей используют для этого. Я думаю, что это может быть кратко рассмотрено в книге Мэннинга и Шютце, и я, кажется, помню что-то вроде этого как домашнее задание в аспирантуре ...

Более подробная информация здесь: http://nlp.stanford.edu/IR-book/html/htmledition/automatic-thesaurus-generation-1.html

Для этого шага:

Ранжировать другие понятия на основе их «расстояния» до исходных ключевых слов;

Есть несколько семантических метрик сходства, которые вы можете посмотреть. Вот ссылка на некоторые слайды, которые я собрал для проекта класса, используя некоторые из этих метрик сходства в WordNet: http://www.eecis.udel.edu/~trnka/CISC889-11S/lectures/greenbacker-WordNet-S Similarity . PDF

Чарли Гринбакер
источник
3

Это одна из приятных проблем, когда сфера действия может варьироваться от домашнего задания до размера проекта Google.

Действительно, вы можете начать с одновременного появления слов (например, условной вероятности). Вы быстро обнаружите, что вы получаете список стоп-слов, связанных с большинством слов просто потому, что они очень популярны. Использование подъема условной вероятности позаботится о стоп-словах, но сделает отношение подверженным ошибкам в небольшом количестве (в большинстве случаев). Вы можете попробовать Жакара, но, поскольку он симметричен, будет много отношений, которые он не найдет.

Тогда вы можете рассмотреть отношения, которые появляются только на небольшом расстоянии от базового слова. Вы можете (и должны) рассматривать отношения, основанные на общем корпусе (например, Википедии) и конкретных пользователя (например, его электронные письма).

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

Чтобы объединить такие меры, я хотел бы свести проблему к проблеме классификации.

Вам следует создать набор данных из слов и пометить их как «связанные». Чтобы построить большой набор данных с метками, вы можете:

  • Используйте источники известных связанных слов (например, старые добрые категории Википедии) для позитива
  • Большинство слов, не связанных как родственные, не связаны между собой.

Затем используйте все меры, которые у вас есть, как особенности пар. Теперь вы находитесь в области контролируемой проблемы классификации. Создайте классификатор на основе набора данных, оцените его в соответствии с вашими потребностями и получите показатель сходства, который соответствует вашим потребностям.

Dal
источник