我已经训练了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
我可以按值比较特征向量的值,如果距离更近=>文本更相似?
答案 0 :(得分:1)
您好,如果有人感兴趣,您只需要两个向量之间的余弦距离即可。
我发现大多数人为此目的使用“空间”
如果您已经训练了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())
similairty = spatial.distance.cosine(vec1, vec2)
# similarity is how much two text differ from each other, higher values mean more distinct texts
答案 1 :(得分:0)
文档相似度范围从-1(不相关)到1(相同)。验证的最佳方法是检查文档与其自身的相似性 值-1或1很少(从不)满足,因为该模型基于所有句子。因此,自相似度为0.85,您就很安全了