2017-02-22 10 views
8

E.g. мы готовим модель word2vec с помощью gensim:Интерпретация отрицательного сходства Word2Vec с gensim

from gensim import corpora, models, similarities 
from gensim.models.word2vec import Word2Vec 

documents = ["Human machine interface for lab abc computer applications", 
       "A survey of user opinion of computer system response time", 
       "The EPS user interface management system", 
       "System and human system engineering testing of EPS", 
       "Relation of user perceived response time to error measurement", 
       "The generation of random binary unordered trees", 
       "The intersection graph of paths in trees", 
       "Graph minors IV Widths of trees and well quasi ordering", 
       "Graph minors A survey"] 

texts = [[word for word in document.lower().split()] for document in documents] 
w2v_model = Word2Vec(texts, size=500, window=5, min_count=1) 

И когда мы запрашиваем сходство между словами, мы находим отрицательные оценки подобия:

>>> w2v_model.similarity('graph', 'computer') 
0.046929569156789336 
>>> w2v_model.similarity('graph', 'system') 
0.063683518562347399 
>>> w2v_model.similarity('survey', 'generation') 
-0.040026775040430063 
>>> w2v_model.similarity('graph', 'trees') 
-0.0072684112978664561 

Как интерпретировать отрицательные баллы?

Если это сходство с косинусом, то не должно быть [0,1]?

Что такое верхняя граница и нижняя граница функции Word2Vec.similarity(x,y)? Там значительно не написано в документации: https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Word2Vec.similarity = (

Глядя на код Python обертку, есть не слишком: https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/word2vec.py#L1165

(Если это возможно, пожалуйста, укажите мне на .pyx код где функция подобия реализована.)

+2

Если используется косинус-подобие, то диапазон равен [-1, 1]. Из статьи Википедии: «Таким образом, это определение ориентации, а не величины: два вектора с одинаковой ориентацией имеют косинус-сходство 1, два вектора при 90 ° имеют сходство 0, а два вектора, диаметрально противоположные, имеют сходство -1, независимо от их величины ». –

+0

Тождество косинуса можно интерпретировать как точечный продукт. Таким образом, если два слова имеют косинус-подобие, они полностью ортогональны, что означает, что они имеют два разных «значения» и совершенно не связаны между собой. В то время как отрицательное сходство означает, что два слова связаны в компоненте, но противоположным (или отрицательным) образом. –

ответ

4
диапазоны

косинусного подобия от -1 до 1, то же, как обычный косинус волны.

Cosine Wave

Что касается источника:

https://github.com/RaRe-Technologies/gensim/blob/ba1ce894a5192fc493a865c535202695bb3c0424/gensim/models/word2vec.py#L1511

def similarity(self, w1, w2): 
    """ 
    Compute cosine similarity between two words. 
    Example:: 
     >>> trained_model.similarity('woman', 'man') 
     0.73723527 
     >>> trained_model.similarity('woman', 'woman') 
     1.0 
    """ 
    return dot(matutils.unitvec(self[w1]), matutils.unitvec(self[w2]) 
-1

Как уже говорили другие, косинус сходство может находиться в диапазоне от -1 до 1 на основе угла между двумя векторами сравниваемых. Точная реализация в gensim является простым точечным произведением нормированных векторов.

https://github.com/RaRe-Technologies/gensim/blob/4f0e2ae0531d67cee8d3e06636e82298cb554b04/gensim/models/keyedvectors.py#L581

def similarity(self, w1, w2): 
     """ 
     Compute cosine similarity between two words. 
     Example:: 
      >>> trained_model.similarity('woman', 'man') 
      0.73723527 
      >>> trained_model.similarity('woman', 'woman') 
      1.0 
     """ 
     return dot(matutils.unitvec(self[w1]), matutils.unitvec(self[w2])) 

С точкой зрения интерпретации, вы можете думать об этих ценностях, как вы могли бы подумать о коэффициентах корреляции. Значение 1 является идеальным соотношением между векторами слов (например, «женщина» по сравнению с «женщиной»), значение 0 не представляет отношения между словами, а значение -1 представляет собой совершенную противоположную связь между словами.

Смежные вопросы