词向量

词向量(Word Embedding)将词映射到低维稠密向量空间,能够捕捉词之间的语义关系,是现代NLP的基石。

共 3 篇文章·阅读时间:约40分钟

01Word2Vec

Word2Vec由Mikolov等人于2013年提出,通过神经网络学习词的向量表示,是词向量技术的里程碑。

Word2Vec原理

Word2Vec的核心思想是"分布假设":具有相似上下文的词具有相似的含义。通过预测词本身或上下文来学习词向量。

分布式表示 vs One-Hot

  • One-Hot:正交、稀疏、高维,无法表达相似性
  • 分布式表示:稠密、低维、语义相似词距离近

CBOW与Skip-gram

CBOW(Continuous Bag-of-Words)

通过上下文预测中心词

输入:[wt-2, wt-1, wt+1, wt+2] → 输出:wt

适合小型数据集,效果通常更好

Skip-gram

通过中心词预测上下文

输入:wt → 输出:[wt-2, wt-1, wt+1, wt+2]

适合大型语料库,对稀有词效果好

Word2Vec的神奇特性

  • 语义类比:vec("king") - vec("man") + vec("woman") ≈ vec("queen")
  • 相似词聚类:同义词、反义词自然聚在一起
  • 线性结构:词向量可以进行代数运算

02GloVe

GloVe(Global Vectors)结合了全局矩阵分解和局部上下文窗口的优点,是另一种重要的词向量方法。

GloVe原理

GloVe基于词共现矩阵,通过无监督学习获取词的向量表示。核心思想是:词向量的点积应该与共现概率的对数成正比。

共现矩阵

统计词i在词j上下文中出现的次数 Xij,构建共现矩阵。

目标函数

J = Σ f(Xij)(wiTj + bi + b̃j - log Xij

wi 是词向量,w̃j 是上下文向量,b是偏置,f是权重函数

GloVe训练

权重函数 f(x)

避免过频词主导,同时保留稀有词的信息:

f(x) = (x/xmax)α if x < xmax, else 1

通常 xmax = 100, α = 0.75

Word2Vec vs GloVe

  • Word2Vec:只用局部上下文,更关注词的共现模式
  • GloVe:利用全局共现统计信息,收敛更快
  • 两者在很多任务上表现相当,实际选择可根据数据特点决定

03FastText

FastText由Facebook提出,通过子词(subword)信息增强词向量,对罕见词和未登录词效果好。

FastText原理

FastText将每个词表示为字符N-gram的集合,然后对所有N-gram的向量求和得到词向量。

示例:词 "where" with N=3

字符级trigram:<wh, whe, her, ere, re>

加上词边界:<where>

词向量 = sum(所有trigram的向量)

使用场景

FastText的优点

  • 处理未登录词:OOV词可以由子词组合表示
  • 捕捉词缀信息:英语的-ing、-ed等词缀信息
  • 多语言适用:特别适合形态丰富的语言(德语、土耳其语等)
  • 训练快速:使用层次Softmax加速

词向量方法对比

方法特点适用场景
Word2Vec快速、简单通用场景
GloVe全局统计语义任务
FastText子词信息形态丰富语言、OOV
----