1. 概述

在机器学习领域,数学无处不在:输入输出数据是数学对象,学习和预测的算法也是。但当我们面对语言单位(如“单词”)时,该如何建模为数学表示?答案就是:将它们转换为向量

本文将介绍将单词向量化的主要技术及其优缺点,帮助我们在实际场景中合理选择使用。

2. One-Hot 向量

2.1. 描述

One-Hot 向量是一种最基础的词向量化方法,每个单词在向量中对应一个唯一的位置,其余位置为 0

举个例子:

(1) John likes to watch movies. Mary likes movies too.
(2) Mary also likes to watch football games.

构建的词表为:

V = {John, likes, to, watch, movies, Mary, too, also, football, games}

对应的 One-Hot 向量如下图所示:

one hot

单词 “likes” 的向量表示为:

word likes

而单词 “watch” 的向量表示为:

word watch

构建词表的方式多种多样,选择合适的策略对系统性能和速度有直接影响。

2.2. 停用词过滤

停用词是指那些对任务无意义的高频词,如 "the"、"in"、"a" 等。

✅ 优点:

  • 减少词表大小
  • 降低维度

❌ 缺点:

  • 有可能丢失语义信息(如在情感分析中,“not”是关键词)

2.3. 词形归一化

常用技术包括 词干提取(Stemming)词形还原(Lemmatization)

词干提取(Stemming)

  • 将词截断为一个“词干”(stem)
  • 词干可能不是真实存在的词

例如:

connect cropped

词形还原(Lemmatization)

  • 将词还原为字典中的标准形式(lemma)
  • lemma 是真实存在的词

例如:

play cropped

2.4. 小写处理

统一将所有单词转为小写,有助于减少词表大小,但:

⚠️ 如果大小写对任务有语义影响(如地名、人名),应保留原样。

2.5. 处理未知词(OOV)

常见策略:

  • 报错并重新构建词表
  • 忽略该词(视为停用词)
  • 引入特殊标记 “UNK” 表示未知词

2.6. 优缺点

✅ 优点:

  • 实现简单
  • 计算快
  • 分布式计算友好
  • 可解释性强

❌ 缺点:

  • 向量维度极高且稀疏
  • 无法表达语义相似性

3. 词嵌入(Word Embeddings)

3.1. 描述

词嵌入是实数向量表示单词,通常能捕捉上下文、语义相似性和与其他词的关系。

3.2. 词向量的算术性质

词嵌入的一大亮点是可以进行语义运算。例如:

king - man + woman ≈ queen

arithmetics

语义差值(如性别、职业)在向量空间中具有可解释性。

例如,“king” 与 “man” 的差值 ≈ “queen” 与 “woman” 的差值:

arithmetics3

甚至可以通过向量运算近似得到:

v(queen) - v(woman) + v(man) ≈ v(king)

arithmetics2

✅ 这种语义与几何的结合,使词嵌入在机器学习中特别有用。

3.3. 优缺点

✅ 优点:

  • 能捕捉语义与句法关系
  • 支持词义相似度计算
  • 支持向量运算

❌ 缺点:

  • 需要大量训练数据
  • 计算较慢
  • 可解释性差

4. Word2vec

Word2vec 是最流行的词嵌入生成技术之一。

核心思想来自语言学中的 分布假设“在相同上下文中出现的词具有相似含义。”

Word2vec 包含两种模型:

  • CBOW(Continuous Bag of Words):根据上下文预测目标词
  • Skip-Gram:根据目标词预测上下文词

模型结构是一个三层浅层神经网络:输入层(One-Hot)、隐藏层(N 维)、输出层(One-Hot)

word2vec nn3

训练过程中,隐藏层权重矩阵(红色)即为词嵌入。

4.1. CBOW 架构

输入为上下文词(One-Hot),输出为目标词。

例如:

John _____ to  → 预测 "likes"
likes _____ watch → 预测 "to"
...

训练示例:

cbow

4.2. Skip-Gram 架构

输入为目标词,输出为上下文词。

例如:

"likes" → ["John", "to"]
"to"    → ["likes", "watch"]
"watch" → ["to", "movies"]
...

One-Hot 输入输出示意图:

skipgram

4.3. 实践建议

  • 下采样:高频词可适当采样以加速训练
  • 维度选择:100~1000 之间,常见 100、200、300
  • 上下文窗口:Skip-Gram 推荐 10,CBOW 推荐 5
  • 定制领域词嵌入:预训练词向量不一定适合特定领域,训练定制词嵌入可提升性能

5. 其他词嵌入方法

5.1. GloVe

由斯坦福提出,基于词共现概率训练词向量

✅ 优点:

  • 训练速度快于 Word2vec
  • 在语义相关性任务中表现更好

❌ 缺点:

  • 内存占用大,大规模语料处理吃力

5.2. FastText

FastText 是 Word2vec 的扩展,使用字符 n-gram 而非完整单词

✅ 优点:

  • 小数据集上也能训练
  • 更好地处理短词和词缀
  • 对未知词泛化能力强

❌ 缺点:

  • 速度比 Word2vec 慢
  • 内存需求大
  • n 值选择敏感

5.3. ELMo

ELMo(Embeddings from Language Models)解决一词多义问题

例如,“cell”在不同语境中含义不同:

  • He went to the prison cell with his phone.
  • He went to extract blood cell samples.

✅ 优点:

  • 考虑词序和上下文
  • 语义更准确

❌ 缺点:

  • 使用时需加载模型,部署成本高

5.4. 其他方法

  • BERT:双向 Transformer 模型,支持上下文感知
  • PCA:用于降维
  • t-SNE:用于可视化高维词向量
  • Gensim:Python 库,支持多种词向量训练

6. 总结

本文介绍了将单词向量化的两种主要方法:

  • One-Hot 向量:简单但稀疏,适合小规模任务
  • 词嵌入(Word Embeddings):语义丰富,适合深度学习任务

并对比了不同技术的优缺点,包括 Word2vec、GloVe、FastText、ELMo 等。

在实际应用中,应根据任务需求、数据规模、语义复杂度等选择合适的词向量化方法。


原始标题:Converting a Word to a Vector