RNN 人名分类案例 - 需求介绍
1 课程概览
本课介绍 RNN 人名分类案例的需求。输入一个人名,用模型判断可能来自哪个国家。数据集共 20074 条数据,18 个国家,第一列是人名,第二列是国家,中间用 \t 隔开。本案例使用 one-hot 编码,三种模型(RNN、LSTM、GRU)全用。
2 核心概念与定义
- 人名分类器:根据人名判断来自哪个国家。
- 数据集:20074 条数据,18 个国家。
- one-hot 编码:本案例使用的文本数值化方法。
- 三种模型:RNN、LSTM、GRU。
3 模型与算法详解
案例需求
输入人名,判断来自哪个国家。
- 国际化业务:全球用户注册账号
- 用户输入名字后,显示名字对应的国家或国旗
- 实际价值:提高效率和用户体验
数据集介绍
20074 条数据,18 个国家。
| 列 | 内容 |
|---|---|
| 第一列 | 人名 |
| 第二列 | 国家 |
| 分隔符 | \t |
数据集示例
人名\t国家
张\tChinese
王\tChinese
Smith\tEnglish
...
案例流程
1. 导包
2. 数据处理
- 读取数据到内存
- 构建 Dataset
- 构建 DataLoader
3. 创建模型(RNN、LSTM、GRU)
4. 模型训练
5. 模型预测
技术选型
使用 one-hot 编码。
- one-hot 编码
- 不使用 Word2Vec 或 Word Embedding
案例特点
| 特点 | 说明 |
|---|---|
| 编码方式 | one-hot 编码 |
| 模型数量 | 三种模型全用(RNN、LSTM、GRU) |
| 代码量 | 约 700 多行 |
4 数学原理与推导
人名分类
$$\text{country} = \text{model}(\text{one_hot}(\text{name}))$$
其中:
- $\text{name}$ 是输入的人名
- $\text{one_hot}$ 是 one-hot 编码
- $\text{model}$ 是 RNN/LSTM/GRU 模型
- $\text{country}$ 是预测的国家
5 代码示例
# === 案例流程 ===
print("=== RNN 人名分类案例 ===")
print("1. 导包")
print("2. 数据处理")
print(" - 读取数据到内存")
print(" - 构建 Dataset")
print(" - 构建 DataLoader")
print("3. 创建模型(RNN、LSTM、GRU)")
print("4. 模型训练")
print("5. 模型预测")
# === 数据集示例 ===
print("\n=== 数据集示例 ===")
print("人名\t国家")
print("张\tChinese")
print("Smith\tEnglish")
print("...")
print(f"总数据量: 20074 条")
print(f"国家数量: 18 个")
6 重难点与易错提醒
- ❗重点:本案例使用 one-hot 编码。
- ❗重点:三种模型全用(RNN、LSTM、GRU)。
- ❗重点:数据集共 20074 条,18 个国家。
- 💡技巧:RNN 做好后,LSTM 和 GRU 可以复制粘贴。
7 课堂问答精选
Q1:人名分类案例的需求是什么?
A:输入一个人名,用模型判断可能来自哪个国家。数据集共 20074 条数据,18 个国家。
Q2:本案例使用什么编码方式?
A:本案例使用 one-hot 编码,不使用 Word2Vec 或 Word Embedding。
Q3:本案例用几种模型?
A:三种模型全用:RNN、LSTM、GRU。
8 本课小结
- 人名分类案例:输入人名,判断来自哪个国家。
- 数据集共 20074 条,18 个国家。
- 使用 one-hot 编码。
- 三种模型全用(RNN、LSTM、GRU)。
9 延伸思考
- 如何获取全局字母表和国家名?
- 如何读取数据到内存?