Jak mogę uzyskać miarę semantycznego podobieństwa słów?

20

Jak najlepiej ustalić semantyczne podobieństwo słów? Word2Vec jest w porządku, ale nie idealny:

# 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

Wydaje się, że metody Wordnet NLTK po prostu się poddają:

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

Jakie są inne opcje?

Thomas Johnson
źródło
1
Czy możesz powiedzieć, dlaczego word2vec nie jest idealny? Word2vec jest zaprojektowany do przechwytywania semantycznego podobieństwa słów, dlaczego więc nie jest idealny?
SHASHANK GUPTA
3
Tak, dlatego podałem przykłady w pytaniu. Powtórzmy: „gorące” i „zimne” są antonimami, ale są bardziej podobne (zgodnie z word2vec) niż „gorące” i „ciepłe”, które są znacznie bliższe synonimom. „Gorący” może również oznaczać „popularny” (np. „Gorący przedmiot”), ale znowu „gorący” i „zimny” są bliżej siebie niż „gorący” i „popularny”. Więc word2vec nie jest idealny, ponieważ zdobywa antonimy (które są przeciwieństwami semantycznymi) jako bardziej podobne do synonimów (które są semantycznie równoważne)
Thomas Johnson

Odpowiedzi:

12

Word2vec nie przechwytuje podobieństwa na podstawie antonimów i synonimów. Word2vec dałoby większe podobieństwo, gdyby dwa słowa miały podobny kontekst. Np. Pogoda w Kalifornii wynosiła _____. Półwyrób może być wypełniony zarówno na gorąco, jak i na zimno, dlatego podobieństwo byłoby większe. Ta koncepcja nazywa się relacjami paradygmatycznymi.

Jeśli chcesz uchwycić relacje, takie jak hiperny, hiponimy, synonimy, antonimy, musisz użyć dowolnej miary podobieństwa opartej na słowie. Istnieje wiele miar podobieństwa opartych na wordnet. Możesz sprawdzić ten link http://ws4jdemo.appspot.com/

Trideep Rath
źródło
7

W tekstowych narzędziach analitycznych dla podobieństwa semantycznego opracowali algorytm w celu znalezienia podobieństwa między dwoma zdaniami. Ale jeśli czytasz uważnie, znajdują podobieństwo słowa w macierzy i sumują się, aby znaleźć podobieństwo między zdaniami. Sprawdzanie podobieństwa słów może być strzałem w dziesiątkę.

Również w SimLex-999: Ocena modeli semantycznych z (oryginalną) podobieństwem , wyjaśniają różnicę między, associationa similarityktóra prawdopodobnie jest również przyczyną twojej obserwacji. Na przykład kawa i filiżanka. Nie są podobne, ale są skojarzone. Samo rozważenie podobieństwa dałoby inny wynik. Autorzy sugerują różne modele do ich oszacowania.

Hima Varsha
źródło
Przerwany link, „Narzędzia analizy tekstu dla podobieństwa semantycznego”.
xtian
2

Word2vec jest dobrym punktem wyjścia dla większości scenariuszy. To robi semantykę przechwytywania drodze przewidywania stosując metodę CBOW. Pozwala na tłumaczenie (jak najbardziej powtarzający się przykład, który mogę tu ponownie umieścić), V (król) - V (królowa) ~~ V (mężczyźni) - V (kobiety) i tak dalej.

Więc jaki jest problem? Problem polega na dwuznaczności słownej. Ilekroć samo słowo ma dwa różne znaczenia w dwóch różnych kontekstach, wektor słów będzie miał tendencję do oddalania się od obu kontekstów. Python ~ Boa (oba węże) i Python - Java (oba języki programowania) ..

Jakaś alternatywa?

Do bardzo konkretnego celu „synonimów”, jeśli chcesz Wordnet byłoby idealnym miejscem. Przechwytuje wyraźną relację dwóch słów, a nie domniemaną zależność na podstawie użycia i zdarzeń.

Wordnet jest przeważnie tworzony jako słownik - gdzie word2vec jest wydobywany przez użycie.

Dipan Mehta
źródło
0

W kontekście wolnej od kontekstu gramatyki, myślę, że naprawdę niemożliwe jest określenie bliskości słów. Możesz użyć wektorów leksykalnych, a jeśli słowo jest bliskie wartościom między dwoma leksykonami, to wartość powinna być bliska.

Josh
źródło