查找与 doc2vec 的相似性,如 word2vec

Find similarity with doc2vec like word2vec

有没有办法像我们在 word2vec 中那样找到类似的文档

喜欢:

  model2.most_similar(positive=['good','nice','best'],
    negative=['bad','poor'],
    topn=10)

我知道我们可以使用infer_vector,给它们提供相似的,但我想像我们在word2vec中那样提供许多正面和负面的例子。

我们有什么办法可以做到这一点!谢谢!

不要相信有为此预先编写的功能。

一种方法是编写一个函数来遍历肯定列表中的每个单词,以获得特定单词的前 n 个单词。

因此,对于您的问题示例中的肯定词,您最终会得到 3 个 10 个词的列表。

然后您可以将 3 个列表中常见的词识别为与您的肯定列表相似的前 n 个词。由于并非所有单词在 3 个列表中都是通用的,因此您可能需要在迭代时获得前 20 个相似的单词,以便在您的示例中最终得到前 10 个单词。

然后对否定词做同样的事情。

对于 most_similar() 调用,Doc2Vec 模型的文档向量部分就像词向量一样工作。您可以在 positivenegative 参数中提供多个文档标签或完整向量。

所以你可以打电话给...

sims = d2v_model.docvecs.most_similar(positive=['doc001', 'doc009'], negative=['doc102'])

...它应该可以工作。 positivenegative 列表的元素可以是训练期间出现的文档标签,或原始向量(如 infer_vector() 返回的那些,或您自己对多个此类向量的平均值) .