【问题标题】:How doc2vec creates vector for sentencedoc2vec 如何为句子创建向量
【发布时间】:2018-10-31 03:47:39
【问题描述】:
我正在使用 Doc2vec 进行文本分类。它正在为具有给定大小的句子创建一个向量(例如:100,向量长度)。我无法理解它如何创建该长度的向量。
我关注this link。在这里,他们正在为句子创建一个向量,该向量将保存在 doc2v 模型中,我不能将此模型用于新数据(生产数据)进行测试,因为没有新句子的向量。显示新数据时出错
KeyError: "tag 'Test_2028' not seen in training corpus/invalid"
【问题讨论】:
标签:
python
machine-learning
data-science
word2vec
doc2vec
【解决方案1】:
如果您使用训练数据创建了一个gensimDoc2Vec 模型,它只会知道训练数据中存在的文档标签的训练向量。
但是,还有infer_vector() 方法可以推断出新文本的兼容文档向量。新文本应该与训练数据一样被标记化,并作为字符串标记列表传递给infer_vector()。
【解决方案2】:
Doc2Vec 概念:
doc2vec 的目标是创建文档的数字表示,而不管其长度如何。但与单词不同的是,文档不具有单词等逻辑结构,因此必须找到另一种方法。
Mikolov 和 Le 使用的概念简单而巧妙:他们使用了 word2vec 模型,并添加了另一个向量 paragraph_ID,它是文档唯一的。现在,我们不仅使用单词来预测下一个单词,还添加了另一个特征向量。
因此,在训练词向量 W 时,文档向量 paragraph_ID 也会被训练,并且在训练结束时,它会保存文档的数字表示。
您可以阅读更多关于它的信息here