类型错误: 'Word2Vec'对象不可下标



我试图构建一个Word2vec模型,但当我试图为令牌重塑向量时,我会遇到这个错误。知道吗?

wordvec_arrays = np.zeros((len(tokenized_tweet), 100)) 
for i in range(len(tokenized_tweet)):
wordvec_arrays[i,:] = word_vector(tokenized_tweet[i], 100)
wordvec_df = pd.DataFrame(wordvec_arrays) 
wordvec_df.shape
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-101-71156bf1c4a3> in <module>
1 wordvec_arrays = np.zeros((len(tokenized_tweet), 100))
2 for i in range(len(tokenized_tweet)):
----> 3     wordvec_arrays[i,:] = word_vector(tokenized_tweet[i], 100)
4 wordvec_df = pd.DataFrame(wordvec_arrays)
5 wordvec_df.shape
<ipython-input-100-e3a82e60af93> in word_vector(tokens, size)
4     for word in tokens:
5         try:
----> 6             vec += model_w2v[word].reshape((1, size))
7             count += 1.
8         except KeyError: # handling the case where the token is not in vocabulary
TypeError: 'Word2Vec' object is not subscriptable

自Gensim 4.0&更高,Word2Vec模型不支持下标索引访问(['...']') to individual words. (Previous versions would display a deprecation warning,方法将在4.0.0中删除,对于此类用途,请使用self.wv.getitem((`。(

因此,当您想访问一个特定的单词时,可以通过Word2Vec模型的.wv属性来访问,该属性只包含单词向量。因此,您的(未显示的(word_vector()函数应该将其在错误堆栈中的行高亮显示为:

vec += model_w2v.wv[word].reshape((1, size))

自从Gensim>4.0我尝试用存储单词

vocab = w2v_model.wv.key_to_index.keys()

然后迭代,但方法已经改变:

for word in vocab:
w2v_model.wv.get_index(word)
...

最后,我创建了单词向量矩阵,没有任何问题。。

自从Gensim>4.0我试过这个:

  • mymodel.wv.get_vector(word(-从单词中获取向量

使用以下方法:

model.wv.get_item() 

最新更新