gensim:当我加载 Google 预训练的 word2vec 模型时,'Doc2Vec' 对象没有属性 'intersect_word2vec_format'

gensim: 'Doc2Vec' object has no attribute 'intersect_word2vec_format' when I load the Google pre-trained word2vec model

当我加载 google 预训练的 word2vec 以使用我自己的数据训练 doc2vec 模型时出现此错误。这是我的部分代码:

model_dm=doc2vec.Doc2Vec(dm=1,dbow_words=1,vector_size=400,window=8,workers=4)
model_dm.build_vocab(document)
model_dm.intersect_word2vec_format('home/xxw/Downloads/GoogleNews-vectors-negative300.bin',binary=True)
model_dm.train(document)

但是我得到了这个错误:

'Doc2Vec' object has no attribute 'intersect_word2vec_format'

你能帮我解决这个错误吗?我从https://s3.amazonaws.com/dl4j-distribution/GoogleNews-vectors-negative300.bin.gz得到google模型,我的gensim是我认为的最新版本。

最近的重构使 Doc2Vec 不再与此方法共享超类。您也许可以在 model_dm.wv 对象上调用该方法,但我不确定。否则你可以查看源代码并模仿代码来达到相同的效果,如果你真的需要那一步的话。

但请注意,Doc2Vec 不需要词向量作为输入:它可以从您自己的训练数据中学习所需的一切。来自其他地方的词向量是否有帮助取决于很多因素——你自己的数据越大,或者越独特,来自其他地方的预加载向量越少可能有帮助,甚至在你自己的训练时有任何残余影响已经完成了。

关于您的明显设置的其他说明:

  • dbow_words=1 将在 dm=1 模式下无效 - 该模式已经固有地训练词向量。 (它仅在 dm=0 DBOW 模式下有效,如果您需要词向量,它会添加额外的交错词训练。通常没有词向量训练的普通 DBOW 是一种快速有效的选择。)

  • 最新版本的 gensim 需要更多参数来训练,并注意使用此算法的典型已发布作品使用 10-20(或有时更多)传递数据(可以指定为 train() 通过 epochs 参数),而不是默认值(在某些版本的 gensim 中)5。