【发布时间】:2018-05-20 19:03:03
【问题描述】:
我很难理解 doc2vec 的用法。我使用我在谷歌上看到的一些示例代码在一组文档上训练了一个玩具模型。接下来,我想找到模型认为与我的训练数据中的文档最匹配的文档。假设我的文档是“这是一个示例文档”。
test_data = word_tokenize("This is a sample document".lower())
v = model.infer_vector(test_data)
print(v)
# prints a numpy array.
# to find most similar doc using tags
similar_doc = model.docvecs.most_similar('1')
print(similar_doc)
# prints [('0', 0.8838234543800354), ('1', 0.875300943851471), ('3',
# 0.8752948641777039), ('2', 0.865660548210144)]
我进行了相当多的搜索,但我很困惑如何解释similar_doc。我想回答这个问题:“我的训练数据中的哪些文档与文档'This is a sample document'最匹配”,那么如何将similar_doc 输出映射回训练数据?元组数组看不懂,每个元组的后半部分一定是概率但是什么是'0'、'1'等?
【问题讨论】:
-
您可以计算向量之间的距离并比较这些距离。也许将
similar_doc与v进行比较?当然,如果它们都是向量... -
您将“1”作为正向量传递给 most_similar(),因此模型显然返回最接近的向量:“0”、“3”、“1”等相同的语义性质。我猜你应该写similar_doc = model.docvecs.most_similar(v)
标签: python machine-learning gensim doc2vec