本节摘要:SOURCE 3.2 介绍 Word2Vec(Skip-gram/CBOW)、GloVe 与 FastText——静态嵌入时代。相似词在向量空间中距离更近,但一词一向量无法处理多义词。
| 模型 | 思想 | 特点 |
|---|---|---|
| Word2Vec Skip-gram | 用中心词预测上下文 | 适合稀有词 |
| Word2Vec CBOW | 用上下文预测中心词 | 训练更快 |
| GloVe | 全局共现矩阵分解 | 利用统计信息 |
| FastText | 子词 n-gram 求和 | OOV 友好 |
# 概念:词向量查表 import numpy as np def doc_embedding(tokens, table, dim=300): vecs = [table[t] for t in tokens if t in table] return np.mean(cs, axis=0) if (vecs := vecs) else np.zeros(dim)
SOURCE:中文可用腾讯 AI Lab、搜狗等预训练;英文常用 GloVe 840B。
「苹果」在「吃苹果」与「买苹果股票」中向量相同——这是 ELMo/BERT 上下文嵌入 要解决的问题。
⚠️ 常见坑:在情感任务直接用通用新闻语料向量——领域词「续航」「发货」语义偏移。
💡 关键直觉:静态嵌入是 2013–2017 时代的核心跃迁,今天常作 baseline 或轻量方案。
Word2Vec 训练的目标是让「语境相似的词」在向量空间里距离相近。Skip-gram 用中心词预测上下文,适合稀有词;CBOW 用上下文预测中心词,训练更快。工程上有几个参数直接决定质量:窗口大小控制上下文范围,一般 5 到 10;维度一般 100 到 300;负采样数量影响训练速度与质量;迭代次数不能太少也不能过拟合语料。训练完成后常用的验证方式有两种:相似词检索与类比推理,例如「国王 减 男人 加 女人 约等于 王后」。
中文预训练向量的语料来源很关键。通用新闻语料训练的向量,对「续航」「掉帧」这类产品领域词覆盖差,甚至没有对应向量;领域项目建议在通用向量基础上,用自有语料增量训练(热启动继续训练),或者直接训练领域向量。判断质量不能只看损失下降,要人工抽样相似词:把「续航」的最相近几个词打印出来看是否合理。
用词向量做文档向量时,朴素做法是取词向量平均,短文档容易被长文档稀释;改进做法是 TF-IDF 加权平均,或对句子用平滑逆频率方法。把词向量平均后喂给线性模型,往往是深度学习之前非常划算的基线,且自带一定语义信息。
需要警惕两个误区:一是把预训练向量当成「即插即用」——向量本身不带标注信息,它只提供语义先验,最终分类任务仍要靠标注数据训练分类器;二是直接比较不同维度训练的向量——维度不同的向量空间不可直接比对,先统一维度再说。此外,把词向量接进 TextCNN/LSTM 时,嵌入层一般冻结或低学习率微调,防止训练前期梯度把预训练信息冲掉;这也解释了为什么小数据微调大模型容易崩——特征还没学会,先破坏了先验。
可解释性上,词向量的主要用途是发现「语义相近但业务上需区分」的词——例如「好评」与「正评」相近,但业务标签可能不同。遇到这种情况,说明类别体系或预处理有冗余,应回到第 1 章去修标签,而不是在模型层硬掰。这个工作流让词向量不仅是训练原料,也是诊断工具。
from gensim.models import Word2Vec # 训练自己的词向量(示例,中文语料需先分词) sentences = [["手机", "屏幕", "很", "清晰"], ["电池", "续航", "一般"]] model = Word2Vec(sentences, vector_size=300, window=5, min_count=2, sg=0) sims = model.wv.most_similar("续航", topn=5) # 相似词抽样
| 参数 | 推荐值 | 影响 |
|---|---|---|
| vector_size | 100–300 | 容量 vs 训练量 |
| window | 5–10 | 上下文范围 |
| sg | 0/1 | CBOW / Skip-gram |
| min_count | 2–5 | 滤低频噪声 |
训练完词向量,用降维可视化看一眼整体结构,是成本最低的诊断手段。
# 概念:词向量降维可视化示意 # model.wv.vectors → PCA 降到二维 → 散点图 # 用不同颜色标注业务关键词,检查是否聚簇
检查要点:领域词(如「续航」「发货」)是否聚在一起;否定词与情感词是否被区分开;同义词是否相近。如果「好评」与「差评」距离很近,说明训练语料或预处理有问题,先排查再继续。可视化的价值不在「好看」,而在于快速暴露「语料偏差」与「标注体系问题」,是连接 3.2 与第 5 章错误分析的桥梁。