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