我正在从数百个 PDF 文档中创建一个 Doc2Vec 模型。
我有 17 个文档是这个 Doc2Vec 的一部分,我想用它们来检查与 Doc2Vec 模型中其他文档的相似性。
例如我想要类似的东西:model.similarity(tag5, tag30)
这可以做到吗?
我正在从数百个 PDF 文档中创建一个 Doc2Vec 模型。
我有 17 个文档是这个 Doc2Vec 的一部分,我想用它们来检查与 Doc2Vec 模型中其他文档的相似性。
例如我想要类似的东西:model.similarity(tag5, tag30)
这可以做到吗?
根据您分享的内容,它似乎Doc2Vec应该适合您的目标。
也就是说,我认为Doc包名中的 会让人误入歧途。它给人的印象是您可以输入任何文档,并且会发现它们之间的相似之处。虽然您当然可以提供整个文档,但现实情况是相似性/相异性可能无法以有用的方式与您的任务保持一致。我发现,在文档的较小块(如句子或段落)上训练模型,可以让模型识别出细微的差异,然后将这些差异聚合到整个文档中。
就您而言,您提到的 17 个文档是 17 种不同类型文档的示例,您希望将其标签分配给整个语料库吗?如果是这样,Doc2Vec可能是矫枉过正。你考虑过使用Tf-Idf吗?有时,如果您不一定需要词嵌入,这种方法效果很好。只是一些思考的食物。
是的,有多种方法可以做到这一点。简单的 TF-IDF、SIF 和 quick/skip 思想使用编码器-解码器结构,编码器的输出是嵌入。那么文档之间的相似性只是嵌入的 cos。Doc2vec 最终也会生成嵌入。
我认为您可以找到这个答案来解决您的问题。我已经成功地使用了它。