查找与 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
模型的文档向量部分就像词向量一样工作。您可以在 positive
和 negative
参数中提供多个文档标签或完整向量。
所以你可以打电话给...
sims = d2v_model.docvecs.most_similar(positive=['doc001', 'doc009'], negative=['doc102'])
...它应该可以工作。 positive
或 negative
列表的元素可以是训练期间出现的文档标签,或原始向量(如 infer_vector()
返回的那些,或您自己对多个此类向量的平均值) .
有没有办法像我们在 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
模型的文档向量部分就像词向量一样工作。您可以在 positive
和 negative
参数中提供多个文档标签或完整向量。
所以你可以打电话给...
sims = d2v_model.docvecs.most_similar(positive=['doc001', 'doc009'], negative=['doc102'])
...它应该可以工作。 positive
或 negative
列表的元素可以是训练期间出现的文档标签,或原始向量(如 infer_vector()
返回的那些,或您自己对多个此类向量的平均值) .