所以,我要比较文章的矢量和单个单词的矢量。而且我不知道该怎么做。看起来BERT和Doc2wec可以很好地处理长文本,Word2vec可以使用单个单词。但是如何将长文本与一个单词进行比较呢?
“段落矢量”算法的某些模式(在像Python Doc2Vec
这样的库中也称为gensim
)将训练doc-vectors和word-vectors进入共享坐标空间。 (具体来说,任何PV-DM dm=1
模式,或PV-DBOW模式dm=0
,如果你使用dbow_words=1
启用非默认的交错字矢量训练。)
在这种情况下,您可以将Doc2Vec
doc-vectors与经过共同训练的单词向量进行比较,并提供一些实用工具。您可以在后续文章中看到“段落矢量”算法的创始人“Document Embedding with Paragraph Vectors”中的一些示例。
但是,请注意,在使用的上下文中训练过的单个单词的向量可能没有符合我们期望的那些相同单词的向量。例如,在许多句子中使用的education
不一定假设你可能期望从Education
作为类别标题的所有方面/广度。
这样的单个单词向量可能比没有任何东西更好,并且可能有助于作为自举工具。但是,如果您有专家标记的属于感兴趣类别的文档示例,那就更好了。然后,您还可以使用更高级的分类算法,这些算法对于不一定被任何单个矢量点(并且在一个紧密的范围内)概括的类别敏感。在真实的兴趣领域,这可能比使用单词向量作为类别锚更好。
对于任何其他非Doc2Vec
矢量化文本的方法,您可以想象通过向该方法提供单字文本来获得单个单词的可比矢量。 (即使在不创建单词向量的Doc2Vec
模式下,如纯PV-DBOW,您也可以使用该模型的训练外文本推断功能来推断单词doc的doc-vector,对于已知的话。)
但同样,这种简化/退化的单字输出可能与您正在寻找的更一般/纹理类别不匹配。这些模型更常用于更大的上下文,并且将它们的输出缩小为单个单词可能反映了非自然输入情况的特性,而不是通常在实际上下文中导入单词。
基于您进一步解释您的问题的进一步评论,听起来您实际上正在尝试进行主题建模(按给定单词对文档进行分类相当于用该主题标记它们)。如果这就是你正在做的事情,我建议你研究一下LDA及其变体(例如以GuidanceLDA为例)。