我使用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! –