词嵌入让计算机真正'理解'词语语义,即将离散的词语转换成一串向量[苹果]---->[0.04,0.5,.....0.16],让语义相近的词在词向量空间中更接近**(上下文相似的词,语义一定相似),** 对比传统的 One-Hot 编码(高维稀疏、无语义),词向量的核心优势是低维稠密 + 能表示语义相似性
核心目标:让词语 "数字化且有语义"
传统文本表示方法(如词袋模型、TF-IDF)存在致命缺陷:
- 无法捕捉词语语义(如 "猫" 和 "狗" 都是宠物,但向量无关联);
- 忽略词语上下文关系(如 "苹果手机" 和 "苹果水果" 中的 "苹果" 语义不同,但表示相同)。
词嵌入的核心目标的是:
- 数字化:将每个词映射为固定维度的实数向量(如 300 维);
- 语义化:让语义相近的词向量 "距离近"(如 "猫" 和 "狗" 的向量余弦相似度高);
- 上下文感知(进阶模型):让同一词语在不同语境下有不同向量(如 "苹果" 在不同场景的差异化表示)。
主流词嵌入模型简介
1. 静态词嵌入(上下文无关)
定义 :每个词只有一个固定向量,不考虑其在句子中的上下文。代表模型:Word2Vec、GloVe、FastText
(1)Word2Vec:最经典的静态嵌入模型
核心思想:"上下文相似的词,语义也相似"(分布式假设)。
两种训练模式:
CBOW(连续词袋模型):通过上下文词语预测中心词。
假设词汇表大小为 V,低维词向量维度为 d。
流程:一个窗口的上下文转为one-hot编码(n,V)--->向量嵌入(n,d)--->将所有上下文词的嵌入向量做平均(代表上下文的整体语义,形状(1,d))--->全连接层输出各个词的概率
Skip-gram(跳字模型):通过中心词预测上下文词语(如用 "NLP" 预测 "我 / 爱 / 自然语言")。
流程:一个窗口的中心词转为one-hot编码(1,V)--->向量嵌入(1,d)--->全连接层输出各个词的概率(1,V)
注:每个中心词会对应多个训练样本(上下文窗口内有 k 个词,就生成 k 个 "中心词→上下文词" 的样本),比如窗口大小为 2 时,1 个中心词对应 4 个样本['我','爱','自然','语言','处理']。
**训练目标:**最小化预测误差,让模型学到 "语义相关的词在向量空间中聚集"。
优势:训练速度快、部署简单、维度低(通常 50-300 维);
局限:一词一向量,无法处理多义词(如 "银行" 既指金融机构,也指河岸)。
(嵌入层的权重矩阵即为最终的词向量表)
(2)GloVe:基于全局统计的优化
**核心思想:**结合 "局部上下文"(Word2Vec 的优势)和 "全局词频统计"(如 TF-IDF 的思路)。
- 训练依据:统计语料库中所有词对的共现频率(如 "国王" 和 "王后" 在文本中共同出现的次数);
- 优势:语义表示更精准,尤其对低频词的处理优于 Word2Vec;
- 局限:仍为静态嵌入,无法解决多义词问题。
(3)FastText:支持子词嵌入
FastText 的词嵌入训练逻辑几乎和 Word2Vec 的 Skip-gram 一致,唯一区别是:
- Word2Vec:输入是 "完整词的 one-hot 向量",输出是词向量;
- FastText:输入是 "词的所有子词向量的求和 / 平均",输出是词向量。
**训练目标:**和 Skip-gram 一致:用中心词(子词组合的向量)预测上下文词,通过负采样优化训练效率。
**核心思想:**将词拆分为 "子词"(如 "自然语言处理" 拆分为 "自然""语言""处理""自然语""语言处" 等 n-gram),适合处理生僻词、拼写错误词。
- 优势:对小语种、低频词友好,训练速度极快;
- 适用场景:文本分类、拼写纠错等无需复杂语义理解的任务。
2. 动态词嵌入(上下文相关)
定义 :词向量随上下文变化,同一词在不同句子中有不同向量,能解决多义词问题。代表模型:ELMo、BERT、GPT 系列的嵌入层
(1)ELMo(Embeddings from Language Models)
核心思想:通过双向 LSTM 语言模型,学习词语在上下文的动态表示。
- 训练方式:让模型预测句子中 "下一个词"(正向)和 "上一个词"(反向),将双向 LSTM 的输出作为词嵌入;
- 优势:首次实现上下文感知,多义词表示更精准(如 "苹果" 在 "手机" 和 "水果" 语境中向量不同);
- 局限:依赖 LSTM,对长距离上下文捕捉能力弱。
(2)BERT 嵌入:基于注意力机制的动态嵌入
核心思想:用 Transformer 的自注意力机制,同时捕捉词语与上下文所有词的关系。
- 训练方式:通过 "掩码语言模型(MLM)" 训练(随机遮盖句子中部分词,让模型预测被遮盖的词);
- 优势:
- 上下文感知能力强,能捕捉长距离依赖(如 "他喜欢苹果,因为它很脆" 中 "它" 指代 "苹果");
- 支持多任务迁移,嵌入质量远超 ELMo;
- 局限:训练复杂度高,需大量算力,嵌入向量维度较高(通常 768 维以上)。
(3)对比:静态 vs 动态嵌入
| 特性 | 静态嵌入(Word2Vec/GloVe) | 动态嵌入(BERT/ELMo) |
|---|---|---|
| 词向量数量 | 一词一向量 | 一词多向量(随上下文变化) |
| 语义精准度 | 中等(忽略多义词) | 高(支持多义词) |
| 训练 / 部署成本 | 低(速度快、维度低) | 高(算力要求高、维度高) |
| 适用场景 | 简单任务(文本分类、聚类) | 复杂任务(机器翻译、问答) |
词嵌入的应用场景
所有 NLP 任务都离不开词嵌入,核心应用包括:
- 基础 NLP 任务:文本分类、情感分析、命名实体识别(作为模型输入层);
- 语义检索:根据词语向量相似度,实现 "找相似内容"(如论文检索、商品推荐);
- 词语类比:通过向量运算实现语义推理(如 "国王 - 男人 + 女人 = 王后");
- 低资源语言处理:用预训练词嵌入弥补小语种语料不足的问题;
- 复杂任务基础组件:机器翻译、问答系统、文本生成(如 GPT 的嵌入层)。
选择词嵌入模型的核心原则
- 看任务复杂度 :
- 简单任务(文本分类、聚类):选静态嵌入(Word2Vec/GloVe),速度快、成本低;
- 复杂任务(机器翻译、问答):选动态嵌入(BERT),语义精准度高;
- 看数据量 :
- 小语料(<10 万句):直接用预训练嵌入(无需自己训练);
- 大语料(>100 万句):可基于预训练模型微调,或自己训练静态嵌入;
- 看部署成本 :
- 边缘设备(手机、嵌入式):选静态嵌入(维度低、推理快);
- 服务器端(无算力限制):选动态嵌入(效果优先)。
总结
词嵌入是 NLP 的 "地基技术",其核心是 "让词语向量携带语义信息"。从静态的 Word2Vec 到动态的 BERT 嵌入,模型的演进始终围绕 "更精准捕捉语义" 和 "更好适应上下文"。入门时可先掌握静态嵌入的使用(如 Word2Vec),再逐步过渡到动态嵌入(BERT),结合具体任务选择合适的模型。