TypeError: 'Word2Vec' object is not subscriptable
TypeError: 'Word2Vec' object is not subscriptable
我正在尝试构建一个 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))
使用以下方法:
model.wv.get_item()
自从 Gensim > 4.0 我尝试用以下方式存储单词:
vocab = w2v_model.wv.key_to_index.keys()
然后再迭代,但是方法变了:
for word in vocab:
w2v_model.wv.get_index(word)
...
最后我毫无问题地创建了词向量矩阵..
我正在尝试构建一个 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))
使用以下方法:
model.wv.get_item()
自从 Gensim > 4.0 我尝试用以下方式存储单词:
vocab = w2v_model.wv.key_to_index.keys()
然后再迭代,但是方法变了:
for word in vocab:
w2v_model.wv.get_index(word)
...
最后我毫无问题地创建了词向量矩阵..