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