Как я могу получить меру семантического сходства слов?

20

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

# Using the 840B word Common Crawl GloVe vectors with gensim:

# 'hot' is closer to 'cold' than 'warm'
In [7]: model.similarity('hot', 'cold')
Out[7]: 0.59720456121072973

In [8]: model.similarity('hot', 'warm')
Out[8]: 0.56784095376659627

# Cold is much closer to 'hot' than 'popular'
In [9]: model.similarity('hot', 'popular')
Out[9]: 0.33708479049537632

Методы Wordnet в NLTK, похоже, просто сдаются:

In [25]: print wn.synset('hot.a.01').path_similarity(wn.synset('warm.a.01'))
None

Какие есть другие варианты?

Томас Джонсон
источник
1
Можете ли вы сказать, почему word2vec не идеален? Word2vec предназначен для захвата семантического сходства слов, тогда почему он не идеален?
ШАШАНК ГУПТА
3
Да, именно поэтому я привел примеры в вопросе. Повторим еще раз: «горячий» и «холодный» являются антонимами, но они больше похожи (согласно word2vec), чем «горячие» и «теплые», которые намного ближе к синонимам. «Горячий» также может означать «популярный» (например, «горячий элемент»), но опять же «горячий» и «холодный» ближе друг к другу, чем «горячий» и «популярный». Так что word2vec не идеален, потому что он получает антонимы (которые являются семантическими противоположностями) как более сходные, чем синонимы (которые семантически эквивалентны)
Томас Джонсон

Ответы:

11

Word2vec не отражает сходство, основанное на антонимах и синонимах. Word2vec даст более высокое сходство, если два слова имеют одинаковый контекст. Например, погода в Калифорнии была _____. Бланк может быть заполнен как горячим, так и холодным, поэтому сходство будет выше. Эта концепция называется парадигматическими отношениями.

Если вы заинтересованы в фиксации отношений, таких как гиперонимы, гипонимы, синонимы, антоним, вам придется использовать любую меру сходства, основанную на Wordnet. Есть много мер сходства, основанных на Wordnet. Вы можете проверить эту ссылку http://ws4jdemo.appspot.com/

Trideep Rath
источник
7

В инструментах анализа текста для семантического сходства они разработали алгоритм, чтобы найти сходство между двумя предложениями. Но если вы читаете внимательно, они находят сходство слова в матрице и суммируют вместе, чтобы выяснить сходство между предложениями. Таким образом, это может быть попытка проверить сходство слов.

Также в SimLex-999: Оценка семантических моделей с (Подлинной) оценкой сходства , они объясняют разницу между ними associationи, similarityвероятно, также являются причиной вашего наблюдения. Например, кофе и чашка. Они не похожи, но они ассоциативны. Так что просто рассмотрение сходства даст другой результат. Авторы предлагают различные модели для их оценки.

Хима Варша
источник
Неработающая ссылка, "Инструменты анализа текста для семантического сходства".
xtian
2

Word2vec является хорошей отправной точкой для большинства сценариев. Это делает захват семантику путем прогнозирования с использованием метода CBOW. Это позволяет переводы (как наиболее повторяющийся пример, который я могу привести здесь снова), V (Король) - V (Королева) ~~ V (мужчины) - V (женщины) и так далее.

Так в чем проблема? Проблема заключается в неоднозначности смысла слова. Всякий раз, когда само слово имеет два разных значения в двух разных контекстах, слово вектор будет иметь тенденцию быть действительно вне любого контекста. Python ~ Boa (оба змеи) и Python - Java (оба языка программирования).

Любая альтернатива?

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

Wordnet в основном создается как словарь, где word2vec добывается при использовании.

Дипан Мехта
источник
0

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

мистифицировать
источник