【问题标题】:How to use pretrained word2vec vectors in doc2vec model?如何在 doc2vec 模型中使用预训练的 word2vec 向量?
【发布时间】:2019-07-12 17:37:26
【问题描述】:
我正在尝试实现 doc2vec,但如果我有预训练的 word2vec 向量,我不确定模型的输入应该是什么样子。
问题是,我不确定如何在理论上将预训练的 word2vec 向量用于 doc2vec。我想,我可以用向量预填充隐藏层,然后用随机数填充隐藏层的其余部分
另一个想法是使用向量作为单词的输入而不是单热编码,但我不确定文档的输出向量是否有意义。
感谢您的回答!
【问题讨论】:
标签:
python
machine-learning
nlp
word2vec
doc2vec
【解决方案1】:
您可能认为Doc2Vec(又名 Mikolov/Le 的“段落向量”算法)需要词向量作为第一步。这是一个普遍的信念,也许有些直观,类似于人类如何学习一门新语言:先理解较小的单元,然后再理解较大的单元,然后从较小的单元中组合出较大单元的含义。
但这是一个常见的误解,Doc2Vec 不会这样做。
一种模式,纯 PV-DBOW(gensim 中的dm=0),根本不使用传统的每词输入向量。而且,这种模式通常是训练速度最快、性能最好的选项之一。
另一种模式,PV-DM(在 gensim 中为dm=1,默认值)确实使用了相邻的词向量,并以类似于 word2vec 的 CBOW 模式的方式与 doc 向量结合 - 但任何词向量它需求将与 doc-vectors 同时进行训练。他们没有在单独的步骤中第一次训练,所以没有一个简单的拼接点可以提供来自其他地方的词向量。
(您可以在 PV-DBOW 中使用 skip-gram 词训练,在 gensim 中使用 dbow_words=1,但这将在交错的共享模型过程中从头开始训练词向量。)
如果您可以使用来自其他地方的词向量预先植入模型,它不一定会改善结果:它很容易将它们的质量发送到侧面或更糟。在一些幸运的管理良好的情况下,它可能会加速模型收敛,或者是一种强制向量空间与早期向量集兼容的方法,但并非没有额外的陷阱和警告不是原始算法的一部分,或描述良好的实践。