核心要点
把离散词映射成低维稠密实数向量,语义相近的词在向量空间中距离更近
解决 one-hot 维度高、稀疏、词与词之间无语义关系的问题
常见方法:Word2Vec(CBOW/Skip-gram)、GloVe、FastText,以及上下文相关的 ELMo/BERT
区分静态词向量(一词一向量)与上下文动态词向量(随上下文变化)
标准回答
词嵌入(Word Embedding)是一种把词语表示成低维稠密实数向量的技术,核心目标是让语义或语法相近的词在向量空间中彼此接近 ,从而把人类的「语义关系」编码进数学空间。为什么需要词嵌入传统的 one-hot 表示把每个词编码成一个只有一个位置为 1 的高维向量,存在三个致命问题:
-维度灾难:向量维度等于词表大小,可达几十万维。
- 极度稀疏: 绝大多数分量为 0,存储与计算浪费。
-无语义:任意两个词向量都正交,"猫"与"狗"和"猫"与"汽车"的距离完全一样,无法体现相似度。
词嵌入用几十到几百维的稠密向量替代 one-hot,既压缩了维度,又能让向量的 距离与夹角反映语义关系 (如经典的 king - man + woman ≈ queen)。 常见方法1. Word2Vec:通过浅层神经网络自监督训练,包含CBOW(用上下文预测中心词)和Skip-gram(用中心词预测上下文)两种结构。
2. GloVe:基于全局共现矩阵 做矩阵分解式优化,兼顾全局统计信息与局部上下文。
3. FastText:在 Word2Vec 基础上引入子词(n-gram)信息,能更好处理形态丰富的语言和未登录词(OOV)。
4. 上下文相关嵌入: ELMo / BERT594等根据具体句子上下文动态生成向量。静态 vs 上下文动态-静态词向量(Word2Vec/GloVe/FastText):训练完成后一个词只有一个固定向量,无法区分"苹果手机"与"吃苹果"中的多义。
- 上下文动态词向量 (ELMo/BERT):同一个词在不同句子里得到不同向量,能很好地解决一词多义问题,这也是现代预训练语言模型的基础。
常见误区
⚠️ 常见踩坑
误以为词嵌入维度越高越好。维度过高会增加计算量并可能过拟合,实践中静态词向量常取 100–300 维即可;另一个误区是认为 Word2Vec 能解决一词多义——它是静态嵌入,多义问题需靠 ELMo/BERT 等上下文嵌入。
追问
追问 1:词嵌入相比 one-hot 的本质优势是什么?
本质是用稠密向量的几何关系编码语义:维度从词表大小降到几百维,缓解维度灾难与稀疏;更关键的是向量间的距离/夹角可以度量词语相似度,使下游模型能利用"相似词应有相似行为"这一先验,而 one-hot 中任意两词正交、毫无语义信息。
追问 2:静态词向量和上下文词向量(如 BERT)有什么区别?
静态词向量(Word2Vec/GloVe)训练后每个词只对应一个固定向量,无法区分多义词在不同语境下的含义。上下文词向量由 ELMo/BERT 等模型根据整句上下文动态计算,同一个词在不同句子中得到不同向量,能解决一词多义,表达能力更强但计算成本也更高。
追问 3:FastText 为什么能更好地处理未登录词(OOV)?
FastText 把每个词拆成若干字符级 n-gram 子词,词向量由其子词向量加和而成。即使某个词在训练时从未出现,只要它的子词出现过,就能拼出一个合理的向量;这对形态变化丰富的语言和拼写变体尤其有效,而 Word2Vec 对 OOV 词只能返回未知或随机向量。
🔗 相似问题
同一考点的不同问法,面试官可能换着问,一起刷更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习