Python Gensim自训练嵌入负载

Python Gensim自训练嵌入负载,python,gensim,Python,Gensim,有两种加载预训练单词嵌入的方法,一种是用C编译的,另一种是用python编译的。我在python中有自己训练过的嵌入程序,这些嵌入程序加载在: model=gensim.models.Word2Vec.load'transcript-vectors.pickle' 但是,当我将它们加载到单词词典时,就像我从第三方加载预训练的嵌入一样,它会出错,因为它没有与其他加载相同的方法 embeddings_index = dict() for word in model.wv.vocab: emb

有两种加载预训练单词嵌入的方法,一种是用C编译的,另一种是用python编译的。我在python中有自己训练过的嵌入程序,这些嵌入程序加载在:

model=gensim.models.Word2Vec.load'transcript-vectors.pickle'

但是,当我将它们加载到单词词典时,就像我从第三方加载预训练的嵌入一样,它会出错,因为它没有与其他加载相同的方法

embeddings_index = dict()
for word in model.wv.vocab:
    embeddings_index[word] = model.word_vec(word)
print('Loaded %s vectors' % len(embeddings_index))
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-94-c1e5d21d49af> in <module>()
  1 embeddings_index = dict()
  2 for word in model.wv.vocab:
----> 3     embeddings_index[word] = model.word_vec(word)
  4 print('Loaded %s vectors' % len(embeddings_index))

AttributeError: 'Word2Vec' object has no attribute 'word_vec'

我还读了一些使用预训练嵌入的笔记本,如果它们没有经过C语言培训,那么就需要使用model.wv[word]作为索引,而不是word_vec函数

所以正确的循环是:

embeddings_index = dict()
for word in model.wv.vocab: #model.wv[word] | model.word_vec(word)
    embeddings_index[word] = model.wv[word]
print('Loaded %s vectors' % len(embeddings_index))

@Soumitri Chilakamari在其评论中进一步证实了这一点。

查看gensim.models.Word2Vec的文档,没有word_vec定义的任何方法。因此,您可能需要使用以下内容:embeddings_index[word]=model.wv[word]我们需要它来检查嵌入的覆盖率:code embeddings_index=dict for word in word2vec_model.wv.vocab:embeddings_index[word]=word2vec\u model.wv.word\u vecword print'Loaded%s向量“%lenembeddings\u index oov=检查\u embedding\u coverage vocab,embeddings\u索引键控向量