我使用gensim在自己的语料库上训练了doc2vec和相应的word2vec。我想用t-sne和word来形象化word2vec。如图所示,图中的每个点都带有“单词”。可视化gensim生成的word2vec
我看了一个类似的问题在这里:t-sne on word2vec
跟随它,我有这样的代码:
进口gensim 进口gensim.models为g
from sklearn.manifold import TSNE
import re
import matplotlib.pyplot as plt
modelPath="/Users/tarun/Desktop/PE/doc2vec/model3_100_newCorpus60_1min_6window_100trainEpoch.bin"
model = g.Doc2Vec.load(modelPath)
X = model[model.wv.vocab]
print len(X)
print X[0]
tsne = TSNE(n_components=2)
X_tsne = tsne.fit_transform(X[:1000,:])
plt.scatter(X_tsne[:, 0], X_tsne[:, 1])
plt.show()
这给出了一个数字点,但没有文字。那是我不知道哪个点代表哪个词。我怎样才能用圆点显示单词?
太棒了!我建议这个代码简化:'df = pd.DataFrame(X2,vocab,['x','y'])'然后'在df.iterrows()中为词,pos:plt.annotate(word,pos) '。即用这些词作为索引。你可以去掉'concat'和其他行。 –
进行了两项更改:'vocab'作为df索引和'iterrows'简化。谢谢,@RicardoCruz! –