t-SNE是词向量2D可视化的首选方法,因其能更好保留局部语义相似性;需设metric="cosine"、init="pca"、n_components=2、random_state=42,并按语义类别标注以揭示一词多义。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

直接用t-SNE把词向量压到2D平面,是目前最常用、效果最直观的可视化方式。它不追求数学上的精确映射,而是忠实地保留“哪些词彼此靠近”“哪些词明显分开”这类语义关系,让人一眼看出聚类结构。
为什么必须用t-SNE,而不是PCA?
PCA是线性降维,擅长保留全局结构和主方向,但会模糊局部相似性。比如“苹果”“香蕉”“橙子”在语义上紧密成簇,PCA可能把它们拉散;而t-SNE专门优化邻域关系,让同类词抱团更紧、异类词分得更开。对词向量这种强局部相关、弱全局线性的数据,t-SNE效果通常显著优于PCA。
关键参数设置不能跳过
默认参数跑t-SNE容易失真。几个必须调整的点:
-
metric="cosine":词向量意义主要靠方向(夹角)体现,模长差异大。用余弦距离比欧式距离更合理,sklearn中对应
metric="cosine" - init="pca":先用PCA粗略降到50维再进t-SNE,收敛更快、结果更稳定
- n_components=2:最终输出二维坐标,方便画散点图
- random_state=42:固定随机种子,保证每次运行结果可复现
可视化前要先准备带标签的数据
纯向量点图意义有限,加标签才有洞察力。建议按语义类别给词分组,比如:
- 水果类:“苹果”“香蕉”“葡萄”“草莓”
- 科技公司:“苹果”“微软”“谷歌”“华为”
- 动作动词:“跑步”“游泳”“编程”“调试”
这样画图时可用不同颜色/形状区分类别,立刻看出一词多义是否被模型正确建模——比如“苹果”应该同时靠近水果簇和科技簇。
画图时注意归一化和标注
t-SNE输出坐标范围不定,直接画图可能挤在角落。推荐做简单归一化:
x_final = (x_ts - x_ts.min(0)) / (x_ts.max(0) - x_ts.min(0))再用plt.scatter绘图,配合plt.text逐个标注词语,避免重叠可微调位置或只标关键样本。热力图不是必需项,散点+文字标签已足够清晰。


















