首页 > 解决方案 > 使用 embedding_vector 实现 Word2Vec 模型时出错

问题描述

尝试使用 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”对象没有属性“get”

标签: pythonmachine-learningkerasgensimword2vec

解决方案


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

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

embedding_dictionary[word]

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

embedding_dictionary.vectors

推荐阅读