Week1-FastText概念
FastText概念
📚 FastText 学习笔记
📌 什么是 FastText?
FastText 是 Facebook AI 在 2016 年提出的词向量学习方法,是 Word2Vec 的增强版本。
它引入了 子词(Subword n-gram) 的概念,从而能更好地处理词形变化和未登录词(OOV)。
🔍 FastText 与 Word2Vec 的关系
|
特性 |
Word2Vec |
FastText |
|
基础单位 |
单词(word) |
子词 n-gram + 单词 |
|
支持 OOV |
否 |
✅ 是(通过子词组合) |
|
模型大小 |
较小 |
略大(多了子词向量) |
|
表达能力 |
一般 |
更强(能学会词形变化) |
|
训练机制 |
Skip-Gram / CBOW |
Skip-Gram / CBOW + 子词增强 |
🧱 什么是 n-gram?
n-gram 是字符级的连续子串片段。
示例:"where" 的字符 3-gram(加前后标记)
加上边界符号:<where>
提取 3-gram:<wh, whe, her, ere, re>这些片段叫做 子词(subword)。
⚙️ FastText 如何训练?
✅ 核心思想:
不是直接学习每个词的向量,而是学习“词由哪些字符片段(n-gram)组成”的向量。
🔄 步骤如下:
- 构建训练语料:大量的句子,例如:"The cat sat on the mat."
- 选择一个中心词,使用 Skip-Gram 方法预测它的上下文词。
- 将中心词拆成子词(n-gram):
- 比如
"cat"→<ca,cat,at>
- 查每个子词的向量,加和平均 → 得到这个中心词的表示。
- 用这个组合向量去预测上下文词(如 "sat", "on")
- 反向传播误差,更新:
- 子词向量
- 上下文词的向量
📌 例子:训练 FastText 的一个样本步骤
我们以句子:
"The cat sat"
假设窗口大小为 1,中心词为 "cat":
步骤一:构造训练对
中心词 → 上下文词
"cat" → "The"
"cat" → "sat"
步骤二:将中心词 "cat" 拆成字符 n-gram(假设 n=3):
加上边界符号 < > → <cat>
提取 3-gram:
<ca, cat, at>
步骤三:组合向量
vector("cat") = (vector("<ca>") + vector("cat") + vector("at")) / 3
步骤四:用这个向量去预测上下文词 "The" 和 "sat"
步骤五:反向传播误差,更新所有相关向量。
✅ 结果:
- 子词
<ca>,cat,at的向量都会被优化 - 上下文词
"The"、"sat"的向量也会被更新 - 最终,FastText 学会了如何用子词来表示词,能更好地泛化到没见过的新词!
🎯 FastText 的优势
- ✅ 支持未登录词(OOV)
- ✅ 更强的泛化能力,适用于多语言
- ✅ 能捕捉词形变化(例如:play, played, playing)
- ✅ 可用于词向量训练,也支持高效的文本分类
🛠️ 应用场景
- 词向量训练
- 文本分类任务
- 多语言 NLP
- 边设备/移动端部署(模型小、推理快)
🧠 总结一句话
FastText = Word2Vec + 子词 n-gram,能更好表示词形变化并支持未登录词。

浙公网安备 33010602011771号