可视化词向量-TSNE

可视化词向量的好处是可以验证训练的词向量的效果,常采用TSNE方法可视化。

t-分布领域嵌入算法,它只用于已标注数据时才真正有意义,可以明确显示出输入的聚类状况。

主要想法是将高维分布点的距离用条件概率来表示相似性,同时低维分布的点也是这样表示。只要二者的条件概率非常接近(用相对熵来训练,所以需要label),那就说明高维分布的点已经映射到低维分布上了。

 

难点:

1.高维距离较近的点,比较方便聚在一起,但是高维距离较远的点,却比较难在低维拉开距离。

2.训练时间较长,占用内存大。

from sklearn.manifold import TSNE
import numpy as np
import matplotlib.pyplot as plt
import random

#因为词向量文件比较大,全部可视化就什么都看不见了,所以随机抽取一些词可视化
words = list(model.wv.vocab)
random.shuffle(words)

vector = model[words]
tsne = TSNE(n_components=2,init='pca',verbose=1)
embedd = tsne.fit_transform(vector)

#可视化
plt.figure(figsize=(14,10))
plt.scatter(embedd[:300,0], embedd[:300,1])

for i in range(300):
    x = embedd[i][0]
    y = embedd[i][1]
    plt.text(x, y, words[i])
plt.show()

可视化词向量-TSNE_第1张图片

你可能感兴趣的:(NLP)