一、引言
我们都知道“苹果”和“香蕉”是水果,“王者荣耀”和“英雄联盟”是游戏,但计算机要理解它们之间的相似性可不容易。TF-IDF 把词当作离散符号,缺乏语义表达能力。而 Word2Vec 则打破了这个局限,它通过将词嵌入向量空间,让词语之间的“语义相似”可以量化比较,成为 NLP 中的一个里程碑。
二、Word2Vec 是什么?
Word2Vec 是由 Google 在 2013 年提出的一种词嵌入(word embedding)技术,基于神经网络,通过上下文学习词的语义分布,使得语义相近的词在向量空间中“靠得更近”。
它有两个主要模型:
-
CBOW(Continuous Bag of Words)连续词袋模型
通过上下文预测中心词
输入:上下文词
输出:中心词 -
Skip-gram 跳字模型
通过中心词预测上下文
输入:中心词
输出:上下文词(一个或多个)
三、Word2Vec 如何工作?
以 Skip-gram 为例:
- 给定一句话:“我 爱 自然 语言 处理”
- 中心词:“语言”
- 窗口大小为 2,则训练目标为:
- 输入“语言”,预测“自然”、“处理”
神经网络的目标是通过大量这样的训练样本,学习每个词对应的向量,使得能准确预测其上下文。
最终输出的每个词是一个低维稠密向量(例如 100 维或 300 维),其中蕴含了丰富的语义信息。
四、Word2Vec 的神奇属性
学出来的词向量可以做“类比计算”:
\text{king} - \text{man} + \text{woman} ≈ \text{queen}
这不是魔法,是 Word2Vec 向量空间的线性结构特性——语义关系可以通过向量代数表达!
五、Python 实现
使用 gensim
库可以快速训练 Word2Vec:
from gensim.models import Word2Vec
sentences = [
["我", "爱", "自然", "语言", "处理"],
["机器", "学习", "是", "人工智能", "的一部分"],
["深度", "学习", "驱动", "了", "AI", "的发展"]
]
model = Word2Vec(sentences, vector_size=100, window=2, min_count=1, sg=1)
# 查看“语言”的词向量
print(model.wv["语言"])
# 查看与“AI”最相似的词
print(model.wv.most_similar("AI"))
六、Word2Vec 与 TF-IDF 的对比
对比点 | TF-IDF | Word2Vec |
---|---|---|
表示方式 | 稀疏向量 | 稠密向量 |
是否考虑语义 | 否 | 是 |
向量可训练性 | 静态,基于统计 | 通过神经网络学习得到 |
是否能量化相似性 | 部分(仅通过共现) | 是,余弦相似度效果好 |
七、实际应用场景
-
文本相似度计算
平均词向量 + 余弦相似度,用于问答匹配、搜索召回等。 -
情感分析
使用词向量作为输入特征,增强模型理解能力。 -
命名实体识别、文本分类、生成模型输入
Word2Vec 是传统 NLP 系统的核心组成部分。
八、局限性与发展方向
尽管 Word2Vec 优于 TF-IDF,但它也存在一些问题:
- 静态词向量:无法根据上下文动态变化,“银行”在“金融银行”和“河岸银行”中无法区分。
- 未考虑句子结构和语法
- OOV 问题:未登录词无法处理
这些问题后来被 GloVe、FastText、ELMo 和 BERT 等模型进一步优化和扩展。
九、总结
Word2Vec 构建了语言的“向量空间地图”,使得语义计算成为可能。它不仅在传统 NLP 中有极大价值,也是后续深度模型的奠基石。如今,虽然 BERT 等预训练模型已成主流,但 Word2Vec 依然适合轻量化、可解释性强的场景,仍然是一项值得掌握的基础技术。
引用资料
- Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013). Efficient Estimation of Word Representations in Vector Space. arXiv preprint arXiv:1301.3781.
- Gensim 官方文档:https://radimrehurek.com/gensim/models/word2vec.html
- Stanford CS224n课程讲义:https://web.stanford.edu/class/cs224n/