使用 embedding_vector 实现 Word2Vec 模型时出错

Error while implementing Word2Vec model with embedding_vector

我在尝试使用 embedding_vector:

实现时遇到 AttributeError
from gensim.models import KeyedVectors
embeddings_dictionary = KeyedVectors.load_word2vec_format('model', binary=True)

embedding_matrix = np.zeros((vocab_size, 100))
for word, index in tokenizer.word_index.items():
    embedding_vector = embeddings_dictionary.get(word)
    if embedding_vector is not None:
        embedding_matrix[index] = embedding_vector

AttributeError: 'Word2VecKeyedVectors' object has no attribute 'get'

是的,gensimKeyedVectors 抽象不提供 get() 方法。 (您遵循的是什么文档或示例表明它确实如此?)

您可以使用标准 Python []-索引,例如:

embedding_dictionary[word]

不过,您的循环将每个向量复制到您自己的向量中并不是真正的原因 embedding_matrixKeyedVectors 实例已经有一个原始数组,每个向量在一行中,按照 KeyedVectors .index2entity 列表的顺序 - 在它的 vectors 属性 中:

embedding_dictionary.vectors

没有get方法,改成这样:embeddings_dictionary[word]