绘图函数 word2vec 错误 'Word2Vec' 对象不可订阅
Ploting function word2vec Error 'Word2Vec' object is not subscriptable
我有我的 word2vec 模型。
我可以使用它来查看最相似的单词。
现在我创建一个函数以将单词绘制为向量。
这是我的功能:
def tsne_plot(model):
labels = []
tokens = []
for word in model.wv.key_to_index:
tokens.append(model[word])
labels.append(word)
tsne_model = TSNE(perplexity=40, n_components=2, init='pca', n_iter=2500, random_state=23)
new_values = tsne_model.fit_transform(tokens)
x = []
y = []
for value in new_values:
x.append(value[0])
y.append(value[1])
plt.figure(figsize=(16, 16))
for i in range(len(x)):
plt.scatter(x[i],y[i])
plt.annotate(labels[i],
xy=(x[i], y[i]),
xytext=(5, 2),
textcoords='offset points',
ha='right',
va='bottom')
plt.show()
当我调用该函数时,出现以下错误:
TypeError Traceback (most recent call last)
<ipython-input-47-d0f4ea6902bf> in <module>
----> 1 tsne_plot(model)
<ipython-input-46-b4714ffe935b> in tsne_plot(model)
5
6 for word in model.wv.key_to_index:
----> 7 tokens.append(model[word])
8 labels.append(word)
9
TypeError: 'Word2Vec' object is not subscriptable
我真的不知道如何消除这个错误。我认为这可能是因为最新版本的 Gensim 不使用数组 [...]。
感谢提前!
在 Gensim 4.0 中,Word2Vec
对象本身不再直接可订阅以访问每个单词。相反,您应该通过其附属的 .wv
属性访问单词,该属性包含类型为 KeyedVectors
.
的对象
因此,将 model[word]
替换为 model.wv[word]
,您应该可以开始了。
我有我的 word2vec 模型。 我可以使用它来查看最相似的单词。 现在我创建一个函数以将单词绘制为向量。 这是我的功能:
def tsne_plot(model):
labels = []
tokens = []
for word in model.wv.key_to_index:
tokens.append(model[word])
labels.append(word)
tsne_model = TSNE(perplexity=40, n_components=2, init='pca', n_iter=2500, random_state=23)
new_values = tsne_model.fit_transform(tokens)
x = []
y = []
for value in new_values:
x.append(value[0])
y.append(value[1])
plt.figure(figsize=(16, 16))
for i in range(len(x)):
plt.scatter(x[i],y[i])
plt.annotate(labels[i],
xy=(x[i], y[i]),
xytext=(5, 2),
textcoords='offset points',
ha='right',
va='bottom')
plt.show()
当我调用该函数时,出现以下错误:
TypeError Traceback (most recent call last)
<ipython-input-47-d0f4ea6902bf> in <module>
----> 1 tsne_plot(model)
<ipython-input-46-b4714ffe935b> in tsne_plot(model)
5
6 for word in model.wv.key_to_index:
----> 7 tokens.append(model[word])
8 labels.append(word)
9
TypeError: 'Word2Vec' object is not subscriptable
我真的不知道如何消除这个错误。我认为这可能是因为最新版本的 Gensim 不使用数组 [...]。 感谢提前!
在 Gensim 4.0 中,Word2Vec
对象本身不再直接可订阅以访问每个单词。相反,您应该通过其附属的 .wv
属性访问单词,该属性包含类型为 KeyedVectors
.
因此,将 model[word]
替换为 model.wv[word]
,您应该可以开始了。