当我加载谷歌预训练的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'对象没有属性'intersect_word2vec_format'
你能帮我解决这个错误吗?我从https://s3.amazonaws.com/dl4j-distribution/GoogleNews-vectors-negative300.bin.gz获得了谷歌模型,而我的gensim是我认为的最新版本。
答案 0 :(得分:0)
最近的重构使Doc2Vec
不再与此方法共享超类。您也许可以在model_dm.wv
对象上调用该方法,但我不确定。否则你可以查看源代码并模仿代码以达到相同的效果,如果你真的需要这一步。
但请注意Doc2Vec
并不需要将单词向量作为输入:它可以从您自己的训练数据中学习所需的一切。来自其他地方的单词向量是否有帮助将取决于很多因素 - 您自己的数据越大,或者越独特,来自其他地方的预载载体越少可能有助于,或者甚至在您自己的训练中有任何残留效应已经完成了。
有关明显设置的其他说明:
dbow_words=1
在dm=1
模式下无效 - 该模式已经固有地训练了单词向量。 (它只在dm=0
DBOW模式下有效,如果你需要字矢量,它会增加额外的交错字训练。通常没有字矢量训练的普通DBOW是一种快速有效的选择。)
gensim的最新版本需要更多参数进行训练,并注意使用此算法的典型已发布作品使用10-20(或有时更多)传递数据(可通过train()
指定5. epochs
参数),而不是默认值(在某些版本的gensim中)为5.