使用嵌入来查找文档之间的相似性

数据挖掘 喀拉斯 nlp 火炬 嵌入 doc2vec
2022-03-11 19:28:00

我需要找到两个文本文档之间的余弦相似度。我需要反映单词序列顺序的嵌入,因此我不打算使用用词袋或 TF/IDF 构建的文档向量。理想情况下,我会使用预训练的文档嵌入,例如来自 Gensim 的 doc2vec。如何将新文档映射到预训练嵌入?

否则,在 Keras/Tensorflow 或 Pytorch 中生成文档嵌入的最简单方法是什么?

1个回答

有几种方法可以获得文档嵌入。如果您想获得不属于经过训练的 doc2vec 模型的文档的向量,gensim 提供了一个名为的方法,该方法infer_vector允许您映射嵌入。

您还可以使用bert-as-service来生成句子级嵌入。如果您的目标是找到句子或文档之间的某种相似性,我建议您使用 Google 的通用句子编码器(USE) 模型来生成句子嵌入。有多种方法可以将句子级别的嵌入结合到文档级别,尝试的第一步是取平均值,或者您可以为文档上的滑动窗口生成句子嵌入并取其平均值。

我推荐 USE 而不是 BERT 的原因是,USE 是专门为句子相似性任务训练的,而 BERT,即使可以应用于任何 NLP 任务,最初也是为了预测句子中的单词或完成句子而训练的。您可能会发现此链接很有帮助,它在 USE 和 BERT 之间进行了很好的比较,以及为什么根据任务选择模型很重要。