doc2vec 如何为句子创建向量

How doc2vec creates vector for sentence

我正在研究用于文本分类的 Doc2vec。它正在为具有给定大小(例如:100,向量长度)的句子创建向量。我无法理解它如何创建该长度的矢量。

我正在关注 this link。在这里,他们正在为将保存在 doc2v 模型中的句子创建一个向量,我不能使用这个模型来测试新数据(生产数据),因为没有新句子的向量。显示新数据时出错

KeyError: "tag 'Test_2028' not seen in training corpus/invalid"

Doc2Vec 概念:

doc2vec 的目标是创建文档的数字表示,而不考虑其长度。但是与word不同的是,document并没有像word这样的逻辑结构,所以还得另辟蹊径。

Mikolov 和 Le 使用的概念简单而巧妙:他们使用了 word2vec 模型,并添加了另一个向量 paragraph_ID,这是文档唯一的。现在,我们不仅使用单词来预测下一个单词,还添加了另一个特征向量。

因此,在训练词向量 W 时,文档向量 paragraph_ID 也被训练,并且在训练结束时,它保存了文档的数字表示。

您可以阅读更多相关信息here

如果您使用训练数据创建了 gensim Doc2Vec 模型,它将只知道训练数据中存在的文档标签的训练向量。

但是,还有方法 infer_vector() 可以为新文本推断出兼容的文档向量。新文本应该与训练数据一样被标记化,并作为字符串标记列表传递给 infer_vector().