Python 如何在doc2vec模型中使用预训练的word2vec向量?

Python 如何在doc2vec模型中使用预训练的word2vec向量?,python,machine-learning,nlp,word2vec,doc2vec,Python,Machine Learning,Nlp,Word2vec,Doc2vec,我正在尝试实现doc2vec,但是如果我已经预先训练了word2vec向量,我不确定模型的输入应该是什么样子 问题是,我不确定理论上如何为doc2vec使用预训练word2vec向量。我想象,我可以用向量预先填充隐藏层,其余的隐藏层用随机数填充 另一个想法是使用向量作为word的输入,而不是一个热编码,但我不确定文档的输出向量是否有意义 谢谢你的回答 您可能会认为Doc2Vec(又称Mikolov/Le的“段落向量”算法)需要单词向量作为第一步。这是一个共同的信念,也许有点直觉,通过类比人类如何

我正在尝试实现doc2vec,但是如果我已经预先训练了word2vec向量,我不确定模型的输入应该是什么样子

问题是,我不确定理论上如何为doc2vec使用预训练word2vec向量。我想象,我可以用向量预先填充隐藏层,其余的隐藏层用随机数填充

另一个想法是使用向量作为word的输入,而不是一个热编码,但我不确定文档的输出向量是否有意义


谢谢你的回答

您可能会认为
Doc2Vec
(又称Mikolov/Le的“段落向量”算法)需要单词向量作为第一步。这是一个共同的信念,也许有点直觉,通过类比人类如何学习一门新语言:先理解较小的单位,再理解较大的单位,然后从较小的单位组成较大的单位

但这是一个常见的误解,
Doc2Vec
并不能做到这一点

一种模式,纯PV-DBOW(
dm=0
,在gensim中),根本不使用传统的每字输入向量。而且,这种模式通常是最快的训练和最佳表现的选择之一

另一种模式,PV-DM(
DM=1
,在gensim中,默认值)确实以与word2vec的CBOW模式类似的方式,将相邻的字向量与文档向量结合使用,但它需要的任何字向量都将与文档向量同时训练。它们不是在一个单独的步骤中首先训练的,所以在你们可以从其他地方提供单词向量的地方并没有一个简单的拼接点

(您可以将skip gram单词训练混合到PV-DBOW中,在gensim中使用
DBOW_words=1
,但这将在交错共享模型过程中从头开始训练单词向量。)


从某种程度上说,你可以用来自其他地方的词向量预植入一个模型,这并不一定会改善结果:它很容易将它们的质量发送到侧面或更糟的地方。在某些幸运的、管理良好的情况下,它可能会加快模型收敛速度,或者是一种加强向量空间与早期向量集兼容性的方法,但并非没有额外的陷阱和警告,这些陷阱和警告不是原始算法的一部分,或者描述良好的实践

您可能会认为
Doc2Vec
(又称Mikolov/Le的“段落向量”算法)需要单词向量作为第一步。这是一个共同的信念,也许有点直觉,通过类比人类如何学习一门新语言:先理解较小的单位,再理解较大的单位,然后从较小的单位组成较大的单位

但这是一个常见的误解,
Doc2Vec
并不能做到这一点

一种模式,纯PV-DBOW(
dm=0
,在gensim中),根本不使用传统的每字输入向量。而且,这种模式通常是最快的训练和最佳表现的选择之一

另一种模式,PV-DM(
DM=1
,在gensim中,默认值)确实以与word2vec的CBOW模式类似的方式,将相邻的字向量与文档向量结合使用,但它需要的任何字向量都将与文档向量同时训练。它们不是在一个单独的步骤中首先训练的,所以在你们可以从其他地方提供单词向量的地方并没有一个简单的拼接点

(您可以将skip gram单词训练混合到PV-DBOW中,在gensim中使用
DBOW_words=1
,但这将在交错共享模型过程中从头开始训练单词向量。)

从某种程度上说,你可以用来自其他地方的词向量预植入一个模型,这并不一定会改善结果:它很容易将它们的质量发送到侧面或更糟的地方。在某些幸运的、管理良好的情况下,它可能会加快模型收敛速度,或者是一种加强向量空间与早期向量集兼容性的方法,但并非没有额外的陷阱和警告,这些陷阱和警告不是原始算法的一部分,或者描述良好的实践

看看这个:看看这个: