Найти расстояние между Doctag и infer_vector с помощью Gensim Doc2Vec? - PullRequest
0 голосов
/ 25 сентября 2018

Используя Doc2Vec от Gensim, как найти расстояние между Doctag и infer_vector()?

Большое спасибо

1 Ответ

0 голосов
/ 25 сентября 2018

Doctag - это внутреннее имя ключей к документам-векторам.Результатом операции infer_vector() является вектор.Итак, как вы буквально спросили, они не сопоставимы

Вы можете запросить модель для известного вектора документа по его ключу тега doc, который был предоставлен во время обучения, через model.docvecs[doctag].Это было бы сопоставимо с результатом вызова infer_vector().

Имея два вектора в руках, вы можете использовать подпрограммы scipy для вычисления различных видов расстояния.Например:

import scipy.spatial.distance.cosine as cosine_distance
vec_by_doctag = model.docvecs["doc0007"]
vec_by_inference = model.infer_vector(['a', 'cat', 'was', 'in', 'a', 'hat'])
dist = cosine_distance(vec_by_doctag, vec_by_inference)

Вы также можете посмотреть, как gensim Doc2VecKeyedVectors делает сходство / расстояние между векторами, которые известны (по именам ключей doctag) внутри модели, в ее similarity() и distance() функции, по адресу:

https://github.com/RaRe-Technologies/gensim/blob/ca0dcaa1eca8b1764f6456adac5719309e0d8e6d/gensim/models/keyedvectors.py#L1701

https://github.com/RaRe-Technologies/gensim/blob/ca0dcaa1eca8b1764f6456adac5719309e0d8e6d/gensim/models/keyedvectors.py#L1743

...