Недавно я увидел интересную функцию, которая когда- то была доступна в Google Sheets: вы начинаете с написания нескольких связанных ключевых слов в последовательных ячейках, скажем: «синий», «зеленый», «желтый», и автоматически генерирует похожие ключевые слова (в данном случае другие цвета). Смотрите больше примеров в этом видео на YouTube .
Я хотел бы воспроизвести это в моей собственной программе. Я думаю об использовании Freebase, и это будет работать так интуитивно:
- Получить список заданных слов в Freebase;
- Найти их «общий знаменатель (и)» и построить метрику расстояния на основе этого;
- Ранжировать другие понятия на основе их «расстояния» до исходных ключевых слов;
- Покажите следующие ближайшие понятия.
Поскольку я не знаком с этой областью, мои вопросы:
- Есть лучший способ это сделать?
- Какие инструменты доступны для каждого шага?
nlp
text-mining
freebase
nassimhddd
источник
источник
Ответы:
Word2vec алгоритм может быть хорошим способом , чтобы получить больше элементов для списка похожих слов. Это неконтролируемый алгоритм «глубокого обучения», который ранее демонстрировался с обучающими данными на основе Википедии (вспомогательные сценарии представлены на кодовой странице Google).
В настоящее время есть реализации на C и Python . Этот урок от Radim ůeh Radřek , автора библиотеки тематических моделей Gensim , является отличным местом для начала.
«Одной теме» демонстрация на учебник является хорошим примером retreiving подобные слова к одному члену (попробуйте найти на «красный» или «желтый»). Должна быть возможность расширить эту технику, чтобы найти слова, которые имеют наибольшее общее сходство с набором входных слов.
источник
Рассматривали ли вы частотный подход, использующий простое совпадение слов в корпусах? По крайней мере, это то, что я видел, что большинство людей используют для этого. Я думаю, что это может быть кратко рассмотрено в книге Мэннинга и Шютце, и я, кажется, помню что-то вроде этого как домашнее задание в аспирантуре ...
Более подробная информация здесь: 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
источник
Это одна из приятных проблем, когда сфера действия может варьироваться от домашнего задания до размера проекта Google.
Действительно, вы можете начать с одновременного появления слов (например, условной вероятности). Вы быстро обнаружите, что вы получаете список стоп-слов, связанных с большинством слов просто потому, что они очень популярны. Использование подъема условной вероятности позаботится о стоп-словах, но сделает отношение подверженным ошибкам в небольшом количестве (в большинстве случаев). Вы можете попробовать Жакара, но, поскольку он симметричен, будет много отношений, которые он не найдет.
Тогда вы можете рассмотреть отношения, которые появляются только на небольшом расстоянии от базового слова. Вы можете (и должны) рассматривать отношения, основанные на общем корпусе (например, Википедии) и конкретных пользователя (например, его электронные письма).
Очень скоро у вас будет множество мер по связности, когда все меры хороши и имеют некоторое преимущество над другими.
Чтобы объединить такие меры, я хотел бы свести проблему к проблеме классификации.
Вам следует создать набор данных из слов и пометить их как «связанные». Чтобы построить большой набор данных с метками, вы можете:
Затем используйте все меры, которые у вас есть, как особенности пар. Теперь вы находитесь в области контролируемой проблемы классификации. Создайте классификатор на основе набора данных, оцените его в соответствии с вашими потребностями и получите показатель сходства, который соответствует вашим потребностям.
источник