Интерпретация отрицательного сходства 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 код, в котором реализована функция подобия.)


person alvas    schedule 22.02.2017    source источник
comment
Если используется косинусоидальное подобие, то диапазон равен [-1, 1]. Из статьи в Википедии: Таким образом, это суждение об ориентации, а не о величине: два вектора с одинаковой ориентацией имеют косинусное сходство 1, два вектора под углом 90 ° имеют сходство 0, а два диаметрально противоположных вектора имеют сходство - 1, независимо от их величины.   -  person juanpa.arrivillaga    schedule 22.02.2017
comment
Косинусное подобие можно интерпретировать как скалярное произведение. Таким образом, если два слова имеют сходство с косинусом 0, они полностью ортогональны, то есть имеют два разных значения и совершенно не связаны между собой. В то время как отрицательное сходство означает, что два слова связаны компонентно, но противоположным (или отрицательным) образом.   -  person The Brofessor    schedule 08.03.2017


Ответы (2)


Сходство косинуса колеблется от -1 до 1, как обычная косинусоидальная волна.

Косинусная волна

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

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])
person Eugene K    schedule 01.03.2017