栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

词向量的可视化(2D)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

词向量的可视化(2D)

如何对我们通过word2vec模型得的的词向量(.txt文件)进行可视化?

步骤如下:

1)导入包matplotlib.pyplot、KMeans、PCA;

2)读取词向量文件信息,获取所有词数组(array)和词到词向量的映射(dict);

3)用for循环得到当前所选词的词向量数组(array);

4)将高维向量压缩为二维向量,以此作为可视化图像的X与Y轴坐标;

5)设定好维度、颜色、字体后开始画图,最后再为每个词标注信息。

代码如下:

import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA

f = open("embedding.txt", encoding="utf-8")

f.readline()  # 略过头文件信息
all_words = []  # 所有词
word2emb = dict()  # 词到词向量的映射

for i, line in enumerate(f):
    line = line.strip().split(' ')
    word = line[0]
    embedding = [float(x) for x in line[1:]]
    all_words.append(word)
    word2emb[word] = embedding

pca = PCA(n_components=2)  # 将目标向量维度(n_components)设定为2
KM = KMeans(n_clusters=10)  # 使用10种颜色进行标注

corpus = all_words[0:200]  # 只显示前200个单词

vector = []

for word in corpus:  # 获取到当前词的所有词向量
    emb = word2emb[word]
    vector.append(emb)

vector_2d = pca.fit_transform(vector)  # 降维到二维
y_ = KM.fit_predict(vector_2d)  # 将所有点分成多个簇,以便标注不同颜色

plt.rcParams['font.sans-serif'] = ['FangSong']  # 标注字体为仿宋
plt.scatter(vector_2d[:, 0], vector_2d[:, 1], c=y_)

for i in range(len(corpus)):    # 给每个点进行标注
    plt.annotate(text=corpus[i], xy=(vector_2d[:, 0][i], vector_2d[:, 1][i]),
                 xytext=(vector_2d[:, 0][i] + 0.1, vector_2d[:, 1][i] + 0.1))
plt.show()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/589489.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号