Найти расстояние между Doctag и infer_vector с помощью Gensim Doc2Vec?

1

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

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

Теги:
gensim
doc2vec

1 ответ

1
Лучший ответ

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

Вы можете спросить модель для известного doc-вектора с помощью ключа 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 делает сходство/расстояние между векторами, которые известны (по их именам ключей доктрины) внутри модели, в ее функциях similarity() и distance(): at:

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

  • 1
    Приветствия для обеспечения решения и дополнительных ссылок в конце! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню