我在尝试使用embedding_vector时遇到了AttributeError:
from gensim.models import KeyedVectorsembeddings_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’
回答:
是的,gensim
的KeyedVectors
抽象并不提供get()
方法。(你参考的文档或示例是哪一个,建议它有这个方法?)
你可以使用标准的Python []
索引,例如:
embedding_dictionary[word]
不过,你的循环将每个向量复制到自己的embedding_matrix
中并没有实际的理由。KeyedVectors
实例已经有一个原始数组,每个向量按行排列,按照KeyedVectors
的.index2entity
列表的顺序 – 在其vectors
属性中:
embedding_dictionary.vectors