Wie kann ich die semantische Ähnlichkeit von Wörtern messen?

20

Was ist der beste Weg, um die semantische Ähnlichkeit von Wörtern herauszufinden? Word2Vec ist okay, aber nicht ideal:

# 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

NLTKs Wordnet-Methoden scheinen einfach aufzugeben:

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

Was sind andere Möglichkeiten?

Thomas Johnson
quelle
1
Kannst du sagen, warum word2vec nicht ideal ist? Word2vec wurde entwickelt, um die semantische Ähnlichkeit von Wörtern zu erfassen. Warum ist es dann nicht ideal?
SHASHANK GUPTA
3
Ja, deshalb habe ich die Beispiele in der Frage angegeben. Um es noch einmal zu wiederholen: 'heiß' und 'kalt' sind Antonyme, aber sie sind (laut word2vec) ähnlicher als 'heiß' und 'warm', die den Synonymen viel näher kommen. 'Heiß' kann auch 'beliebt' bedeuten (z. B. ein "heißer Gegenstand"), aber "heiß" und "kalt" liegen näher beieinander als "heiß" und "beliebt". Daher ist word2vec nicht ideal, da es Antonyme erzielt (das sind semantische Gegensätze) ähnlicher als Synonyme (die semantisch gleichwertig sind)
Thomas Johnson

Antworten:

11

Word2vec erfasst keine Ähnlichkeit basierend auf Antonyme und Synonyme. Word2vec würde eine höhere Ähnlichkeit ergeben, wenn die beiden Wörter einen ähnlichen Kontext haben. ZB war das Wetter in Kalifornien _____. Die Lücke könnte sowohl heiß als auch kalt gefüllt werden, daher wäre die Ähnlichkeit höher. Dieses Konzept nennt man paradigmatische Beziehungen.

Wenn Sie sich für die Erfassung von Beziehungen wie Hypernymen, Hyponymen, Synonymen und Antonymen interessieren, müssen Sie jedes wordnet-basierte Ähnlichkeitsmaß verwenden. Es gibt viele Ähnlichkeitsmaße, die auf wordnet basieren. Sie können diesen Link überprüfen http://ws4jdemo.appspot.com/

Trideep Rath
quelle
7

In Text Analytic Tools für semantische Ähnlichkeit haben sie einen Algorithmus entwickelt, um die Ähnlichkeit zwischen zwei Sätzen zu ermitteln. Wenn Sie jedoch genau lesen, finden Sie die Ähnlichkeit des Wortes in einer Matrix und addieren sie, um die Ähnlichkeit zwischen Sätzen zu ermitteln. Es könnte also ein Versuch sein, die Ähnlichkeit von Wörtern zu überprüfen.

Auch in SimLex-999: Auswertung semantischer Modelle mit (echter) Ähnlichkeitsschätzung erklären sie den Unterschied zwischen associationund similaritywas wahrscheinlich auch der Grund für Ihre Beobachtung ist. Zum Beispiel Kaffee und eine Tasse. Sie sind nicht ähnlich, aber sie sind assoziativ. Wenn man also nur die Ähnlichkeit berücksichtigt, ergibt sich ein anderes Ergebnis. Die Autoren schlagen verschiedene Modelle vor, um diese einzuschätzen.

Hima Varsha
quelle
Defekter Link, "Textanalyse-Tools für semantische Ähnlichkeit".
Xtian
2

Word2vec ist ein guter Ausgangspunkt für die meisten Szenarien. Es tut Capture Semantik anhand Vorhersage CBOW Methode. Es erlaubt Übersetzungen (wie ich es am meisten wiederholen kann), V (König) - V (Königin) ~~ V (Männer) - V (Frauen) und so weiter.

Was ist also das Problem? Das Problem liegt in der Mehrdeutigkeit des Wortsinns. Wenn das Wort selbst in zwei verschiedenen Kontexten zwei verschiedene Bedeutungen hat, ist der Wortvektor in der Regel von beiden Kontexten weit entfernt. Python ~ Boa (beide Schlangen) und Python - Java (beide Programmiersprachen).

Irgendeine Alternative?

Für den ganz bestimmten Zweck von "Synonymen" wäre Wordnet der ideale Ort. Es erfasst die explizite Beziehung von zwei Wörtern und nicht die implizite Beziehung, die auf der Verwendung und dem Vorkommen basiert.

Wordnet wird meistens als Wörterbuch erstellt - wobei word2vec durch Verwendung gewonnen wird.

Dipan Mehta
quelle
0

In einer kontextfreien Grammatik halte ich es für unmöglich, die Nähe von Wörtern zu bestimmen. Was Sie tun können, ist die Verwendung von Lexikonvektoren. Wenn ein Wort in Werten zwischen zwei Lexika nahe beieinander liegt, sollte der Wert nahe beieinander liegen.

Josh
quelle