使用 Gensim Doc2Vec 查找 'Doctag' 和 'infer_vector' 之间的距离?

Finding the distance between 'Doctag' and 'infer_vector' with Gensim Doc2Vec?

如何使用 Gensim 的 Doc2Vec 找到 Doctaginfer_vector() 之间的距离?

非常感谢

Doctag 是文档向量键的内部名称。 infer_vector() 操作的结果是一个向量。所以正如你从字面上问的那样,这些没有可比性。

您可以通过 model.docvecs[doctag] 在训练期间提供的 doc-tag 键,向模型询问已知的 doc-vector。这与 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,在其 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