Gensim自我训练嵌入负载

问题描述 投票:0回答:1

有两种方法可以加载预训练的单词嵌入,那些用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'
python gensim
1个回答
1
投票

我读了一些其他使用预训练嵌入的笔记本,如果它们没有用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 Chilakamarri在评论中进一步证实了这一点。

© www.soinside.com 2019 - 2024. All rights reserved.