Como posso obter uma medida da semelhança semântica das palavras?

20

Qual é a melhor maneira de descobrir a semelhança semântica das palavras? Word2Vec está bom, mas não é o 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

Os métodos Wordnet do NLTK parecem simplesmente desistir:

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

Quais são as outras opções?

Thomas Johnson
fonte
1
Você pode dizer por que o word2vec não é o ideal? O Word2vec foi projetado para capturar semelhança semântica de palavras; por que não é o ideal?
SHASHANK GUPTA
3
Sim, é por isso que forneci os exemplos da pergunta. Para reiterar: 'quente' e 'frio' são antônimos, mas são mais semelhantes (de acordo com o word2vec) do que 'quente' e 'quente', que estão muito mais próximos dos sinônimos. "Quente" também pode significar "popular" (por exemplo, um "item quente"), mas novamente "quente" e "frio" estão mais próximos um do outro do que "quente e" popular ". Portanto, o word2vec não é o ideal porque obtém antônimos (que são opostos semântica) como mais semelhantes do que sinónimos (que são semanticamente equivalentes).
Thomas Johnson

Respostas:

11

O Word2vec não captura semelhança com base em antônimos e sinônimos. O Word2vec daria uma semelhança mais alta se as duas palavras tivessem o contexto semelhante. Por exemplo, o tempo na Califórnia era _____. O espaço em branco pode ser preenchido por quente e frio, portanto, a semelhança seria maior. Esse conceito é chamado de relações paradigmáticas.

Se você estiver interessado em capturar relações como hiper-hinos, hiponímias, sinônimos e antônimo, seria necessário usar qualquer medida de similaridade baseada em wordnet. Existem muitas medidas de similaridade baseadas no wordnet. Você pode verificar este link http://ws4jdemo.appspot.com/

Trideep Rath
fonte
7

Nas Ferramentas Analíticas de Texto para Similaridade Semântica , eles desenvolveram um algoritmo para encontrar a semelhança entre duas frases. Mas se você ler atentamente, eles encontrarão a semelhança da palavra em uma matriz e serão somados para descobrir a semelhança entre as frases. Portanto, pode ser uma tentativa verificar a semelhança das palavras.

Também no SimLex-999: Avaliando modelos semânticos com estimativa de similaridade (genuína) , eles explicam a diferença entre associatione similarityqual é provavelmente o motivo da sua observação. Por exemplo, café e uma xícara. Eles não são semelhantes, mas são associativos. Portanto, apenas considerar a similaridade daria um resultado diferente. Os autores sugerem vários modelos para estimar.

Hima Varsha
fonte
Link quebrado, "Ferramentas analíticas de texto para semelhança semântica".
Xtian
2

O Word2vec é um bom ponto de partida para a maioria dos cenários. Ele faz a semântica de captura por meio de previsão usando o método CBOW. Permite traduções (como o exemplo mais repetido que posso colocar aqui novamente), V (rei) - V (rainha) ~~ V (homens) - V (mulheres) e assim por diante.

Então qual é o problema? A questão está na ambiguidade do sentido da palavra. Sempre que a palavra em si tiver dois significados diferentes em dois contextos diferentes, o vetor de palavras tenderá a ficar realmente longe de qualquer contexto. Python ~ Boa (ambas as cobras) e Python - Java (ambas as linguagens de programação) ..

Alguma alternativa?

Para o propósito muito específico de "sinônimos", se você deseja que o Wordnet seja o local ideal. Ele captura o relacionamento explícito de duas palavras, em vez do implícito, com base no uso e nas ocorrências.

O Wordnet é criado principalmente como um dicionário - onde o word2vec é extraído pelo uso.

Dipan Mehta
fonte
0

Em uma gramática livre de contexto, acho que é realmente impossível determinar a proximidade das palavras. O que você pode fazer é usar vetores de léxico e, se uma palavra estiver próxima em valores entre dois léxicos, o valor deverá estar próximo.

Josh
fonte