← 返回教程目录
第 7 章 · 第 3 节 相似词分析

词嵌入散点图:把语义画在二维平面上

Embedding Visualization: From 100D to 2D

100 维的词向量人眼看不出来。降维到 2 维 = t-SNE/UMAP,画散点图 — 一眼看出语义聚类。

1. t-SNE 降维

from sklearn.manifold import TSNE

import numpy as np



top_words = [w for w, _ in model.wv.most_common(200)]

vectors = np.array([model.wv[w] for w in top_words])



tsne = TSNE(n_components=2, random_state=42, perplexity=30)

embeddings_2d = tsne.fit_transform(vectors)

print(f'降维完成: {embeddings_2d.shape}')

2. 画散点图

import matplotlib.pyplot as plt



plt.figure(figsize=(14, 10))

plt.scatter(embeddings_2d[:, 0], embeddings_2d[:, 1],

            alpha=0.6, s=50, c=range(200), cmap='tab20')



for i, word in enumerate(top_words[:30]):

    plt.annotate(word, (embeddings_2d[i, 0], embeddings_2d[i, 1]),

                 fontsize=10, alpha=0.8)



plt.title('词嵌入空间(Word2Vec + t-SNE)', fontsize=14)

plt.xlabel('t-SNE dim 1')

plt.ylabel('t-SNE dim 2')

plt.grid(alpha=0.3)

plt.tight_layout()

plt.savefig('word_embeddings_2d.png', dpi=150, bbox_inches='tight')
t-SNE vs UMAP:t-SNE 经典但慢,UMAP 更快且保留全局结构。10 万+词用 UMAP,几千词用 t-SNE 即可。

3. 看聚类

散点图画出来后,你会发现:

这是 Word2Vec 学到语义的视觉证据 — 词性相似、语境相似的词会自动聚到一起。

想跳过训练 + 降维,直接出可交互词嵌入散点图?

配套软件内置 Word2Vec + UMAP 降维 + 散点图,导入即出可交互图

想跳过训练,直接出相似词 + 词嵌入散点图?

配套软件内置 Word2Vec 训练 + 相似度计算 + 散点图可视化,导入即出可交互图

查看淘宝软件 →