1. Word2Vec算法概述
Word2Vec是2013年由Google团队提出的一种词向量表示方法,它通过神经网络模型将词语映射到低维连续向量空间。与传统one-hot编码相比,Word2Vec生成的词向量能够捕捉词语之间的语义和语法关系。
我在实际NLP项目中多次使用Word2Vec,发现其最大的优势在于:
- 相似的词在向量空间中距离相近
- 支持"国王-男+女≈女王"这样的向量运算
- 生成的词向量可以直接作为下游任务的输入特征
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心算法原理
2.1 两种模型架构
Word2Vec包含两种主要模型结构:
-
CBOW(Continuous Bag-of-Words)
- 通过上下文预测当前词
- 训练速度较快
- 适合小型数据集
-
Skip-gram
- 通过当前词预测上下文
- 对低频词表现更好
- 适合大型数据集
我在实践中发现,当语料库规模超过1GB时,Skip-gram的效果通常优于CBOW约3-5个百分点。
2.2 层次Softmax与负采样
原始的Softmax计算开销巨大,Word2Vec采用两种优化方法:
层次Softmax:
- 使用霍夫曼树构建分类器
- 将复杂度从O(V)降到O(logV)
- 适合词表较大的场景
负采样:
- 每次只更新少量负样本的权重
- 默认负样本数为5-20
- 训练速度更快
提示:当词表超过10万时,建议优先考虑负采样方法
3. 完整实现步骤
3.1 数据预处理
python复制import gensim
from gensim.models import Word2Vec
# 示例文本预处理
sentences = [
["自然", "语言", "处理", "是", "人工智能", "重要", "分支"],
["深度学习", "推动", "了", "NLP", "技术", "发展"]
]
# 建议预处理步骤:
1. 分词处理
2. 去除停用词
3. 统一字符大小写
4. 处理特殊符号
3.2 模型训练
python复制# 参数设置
model = Word2Vec(
sentences,
