我已经训练了一个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 doc2vecfrom scipy import spatiald2v_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表示两个文本之间的差异程度:# 数值越高表示文本越不同