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

Bor*_*lov 6 python nlp machine-learning gensim 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())
Run Code Online (Sandbox Code Playgroud)

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

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

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

Bor*_*lov 6

您好,以防万一有人感兴趣,为此您只需要两个向量之间的余弦距离。

我发现大多数人都在使用“空间”来做这个倾诉

如果你已经训练过 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
Run Code Online (Sandbox Code Playgroud)

  • 更高的价值意味着它们是不同的 (2认同)