Fasttext - 词向量迁移介绍
1 课程概览
本课介绍 Fasttext 词向量迁移。词向量迁移是下载别人训练好的词向量模型,直接拿来用。Fasttext 提供 157 种语言的可迁移词向量。之前讲 Word2Vec 时已经讲过,本课不再详细赘述。
2 核心概念与定义
- 词向量迁移:下载别人训练好的词向量模型,直接拿来用。
- 可迁移词向量:在大模型语料库上已经训练完成的词向量模型。
3 模型与算法详解
词向量迁移概念
下载别人已经训练好的词向量,用 Fasttext 再训练一下。
- 别人训练好的模型
- 直接拿下来用
- 不需要自己训练
Fasttext 可迁移词向量
| 项目 | 说明 |
|---|---|
| 语言数量 | 157 种语言 |
| 压缩包大小 | 2G |
| 解压后大小 | 6G |
| 总共需要 | 8G |
词向量迁移步骤
1. 下载词向量模型压缩文件
2. 解压得到 .bin 文件
3. 加载 .bin 文件
4. 获取词向量
5. 利用词向量做效果检验
效果检验
使用
get_nearest_neighbors获取最近的 K 个词。
- 打印词向量
- 打印近义词的词向量
- 观察数值分布
- 类比:用 "dog" 找到 "牧羊犬"、"马犬" 等
4 数学原理与推导
词向量迁移
$$\text{word_vector} = \text{pretrained_model}.\text{get_word_vector}(word)$$
近义词
$$\text{nearest} = \text{pretrained_model}.\text{get_nearest_neighbors}(word, k)$$
5 代码示例
import fasttext
def dm_word_vector_transfer():
"""词向量迁移"""
# 1. 加载预训练的词向量模型
model = fasttext.load_model("model/cc.zh.300.bin")
# 2. 获取词向量
word = "狗"
vector = model.get_word_vector(word)
print(f"'{word}' 的词向量: {vector[:10]}...") # 只打印前 10 维
# 3. 获取近义词
neighbors = model.get_nearest_neighbors(word, k=5)
print(f"\n'{word}' 的近义词:")
for score, neighbor in neighbors:
print(f" {neighbor}: {score:.4f}")
return model
# 测试
if __name__ == "__main__":
model = dm_word_vector_transfer()
代码说明
| 代码 | 说明 |
|---|---|
fasttext.load_model() | 加载预训练模型 |
model.get_word_vector(word) | 获取词向量 |
model.get_nearest_neighbors(word, k) | 获取最近的 k 个词 |
6 重难点与易错提醒
- ❗重点:词向量迁移是下载别人训练好的模型,直接拿来用。
- ❗重点:Fasttext 提供 157 种语言的可迁移词向量。
- ⚠️易错:模型文件较大(2G 压缩,6G 解压)。
- 💡深入理解:之前讲 Word2Vec 时已经讲过。
7 课堂问答精选
Q1:什么是词向量迁移?
A:下载别人训练好的词向量模型,直接拿来用。不需要自己训练。
Q2:Fasttext 提供多少种语言的可迁移词向量?
A:157 种语言。压缩包 2G,解压后 6G,总共需要 8G。
Q3:词向量迁移的步骤是什么?
A:①下载词向量模型压缩文件;②解压得到 .bin 文件;③加载 .bin 文件;④获取词向量;⑤利用词向量做效果检验。
Q4:如何做效果检验?
A:使用 get_nearest_neighbors 获取最近的 K 个词。例如用 "dog" 找到 "牧羊犬"、"马犬" 等。
8 本课小结
- 词向量迁移:下载别人训练好的模型,直接拿来用。
- Fasttext 提供 157 种语言的可迁移词向量。
- 步骤:下载 → 解压 → 加载 → 获取词向量 → 效果检验。
- 使用
get_nearest_neighbors获取近义词。
9 延伸思考
- 什么是迁移学习?
- 迁移学习有哪些方式?