使用 Doc2Vec 测量两个文档之间的相似性

Measure similarity between two documents using Doc2Vec

我已经训练了 gensim doc2Vec 模型,它正在寻找与未知文档最相似的文档。

现在我需要找到两个未知文档之间的相似度值(它们不在训练数据中,因此无法通过文档 ID 引用它们)

d2v_model = doc2vec.Doc2Vec.load(model_file)

string1 = 'this is some random paragraph'
string2 = 'this is another random paragraph'

vec1 = d2v_model.infer_vector(string1.split())
vec2 = d2v_model.infer_vector(string2.split())

在上面的代码中,vec1 和 vec2 已成功初始化为某些值和大小 - 'vector_size'

现在浏览 gensim api 和示例我找不到适合我的方法,他们都期待 TaggedDocument

我可以逐个比较特征向量吗?如果它们更接近 => 文本更相似?

你好,万一有人感兴趣,要做到这一点,你只需要两个向量之间的余弦距离。

我发现大多数人都在使用 'spatial' 这个目的

这里是一段截取的小代码,如果您已经训练过 doc2vec,它应该能很好地工作

from gensim.models import doc2vec
from scipy import spatial

d2v_model = doc2vec.Doc2Vec.load(model_file)

fisrt_text = '..'
second_text = '..'

vec1 = d2v_model.infer_vector(fisrt_text.split())
vec2 = d2v_model.infer_vector(second_text.split())

cos_distance = spatial.distance.cosine(vec1, vec2)
# cos_distance indicates how much the two texts differ from each other:
# higher values mean more distant (i.e. different) texts