首页 > 解决方案 > 使用 Doc2Vec 测量两个文档之间的相似性

问题描述

我已经训练了 gensim doc2Vec 模型,它可以找到与未知文档最相似的文档。

现在我需要找到两个未知文档之间的相似度值(它们不在训练数据中,所以它们不能被 doc 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

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

标签: pythonmachine-learningnlpgensimdoc2vec

解决方案


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

我发现大多数人都在使用“空间”来表达这种姿势

这是一个小代码,如果您已经训练过 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

推荐阅读