Word Embedding Techniques
date
Apr 23, 2025
slug
word-emb
status
Published
tags
NLP
summary
type
Post
TL; DR
本文对几种词嵌入方法,以及一个相关的应用 fasttext 文本分类算法做简要总结。
OneHot
词是离散的符号,可以用表示 categorical 数据的 one hot encoding 来表示,但是这种表示忽略了相似词之间的关联;此外,当词表非常大的时候,会消耗大量计算和存储资源。
Word2Vec
两种架构:CBOW 和 Skip-gram
都是两层神经网络,CBOW 根据语境预测中心词,Skip-gram 根据中心词预测语境。

词表很大的时候计算最后的 linear + softmax 计算开销很大,有两种加速方法:
- 层次化 softmax:
- 用一个二叉树的叶子结点来表示每个类别,为每个内部节点分配一个参数向量,在每个内部节点,根据 hidden vector 预测往左子树还是右子树走,这样最多会走 logV 次(V 是类别数量)。根据词频组织为霍夫曼树可以减少期望的下沉步数。
- 推理的时候用 beam seach 寻找最大概率到叶子的路径
- 负采样:转换为二分类问题,每个正样本配合若干负样本。
FastText: Bag of Tricks for Efficient Text Classification

架构和 CBOW 一样,用了以下几个 trick 来优化:
- 每个 token 是词级别的 ngram,这样包含了一些顺序信息
- 使用层次化 softmax 加速
- ngram 数量级很大,在实际应用中每个 ngram 被 hash 到一个桶里同一个桶的共用 embedding