【问题标题】:gensim(1.0.1) Doc2Vec with google pretrained vectors带有谷歌预训练向量的 gensim(1.0.1) Doc2Vec
【发布时间】:2017-12-15 17:04:54
【问题描述】:

对于 gensim(1.0.1) doc2vec,我正在尝试加载 google 预训练的词向量,而不是使用 Doc2Vec.build_vocab

wordVec_google = gensim.models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)    
model0 = Doc2Vec(size=300, alpha=0.05, min_alpha=0.05, window=8, min_count=5, workers=4, dm=0, hs=1)    
model0.wv = wordVec_google    
##some other code 
model0.build_vocab(sentences=allEmails, max_vocab_size = 20000)

但是这个对象model0 不能用“labeled Docs”进一步训练,也不能推断文档的向量。

有人知道如何将 doc2vec 与谷歌预训练的词向量一起使用吗?
我试过这个帖子:http://mccormickml.com/2016/04/12/googles-pretrained-word2vec-model-in-python/ 但是加载到gensim.models.Word2Vec对象中不起作用,可能是不同的gensim版本。

【问题讨论】:

标签: gensim


【解决方案1】:

googlenews向量只是原始向量 - 不是完整的word2vec模型。

此外,Gensim Doc2Vec类没有对加载掠夺字向量的一般支持。 DOC2VEC算法不需要预先培训的字向量 - 只有一些模式甚至使用这种向量,并且当他们这样做时,它们会根据需要同时培训。

具体地,代码使用的模式,dm=0,是'段落向量'PV-DBOW模式,并不使用Word-Vectors。因此,即使有一个函数要加载它们,它们也可以加载 - 然后在培训和推理期间忽略。 (您需要使用pv-dm,'dm = 1',或向PV-DBOW,dm=0, dbow_words=1添加跳过克词训练,以便此类重复使用的向量与您的培训有任何相关性。) P>

为什么你认为你想要/需要使用预先训练的向量? (特别是,一套300万个字向量,来自另一种数据,当后面的步骤表明你只关心20,000字的词汇?)

如果由于某种原因您确定要使用其他地方的W​​ROD向量初始化Doc2Vec @ 987654323,并使用培训模式将有一些效果,可以查看Gensim Doc2Vec的方法intersect_word2vec_format()继承自Word2Vec

在 em> build_vocab()已经学习了特定于语料库的词汇量之后,该方法特异性需要被称为,它只带来了从本地相关的外部来源的单词。它是最好的先进,实验特征 - 查看其源代码,DOC-CMET和关于Gensim列表的讨论,以了解其副作用和限制。

【讨论】:

    猜你喜欢
    • 2015-02-12
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多