You are on page 1of 63

ChatGPT项目实战

理解真实业务场景中, ChatGPT的使用方式
u 1.项目背景 项目主要解决哪种实际业务?

u 2.项目架构 从数据获取到模型搭建与预测

目录
u 3.RNN介绍 RNN能够解决什么问题?

u 4.数据获取 如何获取数据?

Contents u 5.数据预处理 如何选择数据处理方案?

u 6.基于ChatGPT完成模型的搭建 ChatGPT生成模型代码

u 7.模型评估与结果分析 如何验证模型效果?
多一句没有,少一句不行,用最短时间,教会更实用的技术!

CHATGPT
INTRODUCE

项目背景
01 项目背景是什么?实际业务是什么?

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 项目介绍 项目名称

人名分类器案例实战

业务含义 项目价值
根据人名预测是哪一个国家
AI赋能互联网业务,提高业务效率
(18个国家)

业务加持
用户注册过程中, 会根据用户填写
的名字直接给他分配可能的国家或
地区选项

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 项目背景
• 以一个人名为输入, 使用模型帮助我们判断它最有可能是来自哪一个国家的人名,

• 这在某些国际化公司的业务中具有重要意义, 在用户注册过程中, 会根据用户填写的名字直接给他分配


可能的国家或地区选项, 以及该国家或地区的国旗, 限制手机号码位数等等.

姓名

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 项目背景
• 以一个人名为输入, 使用模型帮助我们判断它最有可能是来自哪一个国家的人名, 这在某些国际化公司
的业务中具有重要意义, 在用户注册过程中, 会根据用户填写的名字直接给他分配可能的国家或地区选
项, 以及该国家或地区的国旗, 限制手机号码位数等等.

通过深度学习模
型根据名字获取
国家和地区

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 项目解决方案确定

项目解决方案确定
文本分类/情感分析
比如情感分类情感分类精度很高,即好中差三类

文本摘要
从给定的文本中,聚焦到最核心的部分,自动生成摘要。

NLP几大领域
文本分类/情感分析
文本摘要 问答系统\对话系统
问答系统
问答系统旨在直接给出精准回答,而对话系统旨在以口语化的自然语言
对话系统
对话的方式解决用户问题。ChatGPT是两类系统整合的工具。
文本聚类
知识图谱
..............

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 项目解决方案确定

项目解决方案确定

属于哪种类型?

Ø 根据人名预测用户是哪一个国家
Ø 属于典型文本分类问题

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

1.项目背景有哪些?
用户注册过程中, 会根据用户填写的名字直接给他分配可能的国家或地区选项等

2.NLP包含几大领域问题?

总结
总结 文本分类、文本摘要、问答系统、机器翻译、文本纠错等等

3.本项目属于NLP那种类型问题?
文本分类问题

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

CHATGPT
INTRODUCE

项目架构
02 项目架构如何理解?

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 项目整体架构

l 项目案例属于典型文本分类问题

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 项目整体架构

模型构建与训练
数据获取
Ø 模型构建:RNN系列模型+全连接层

Ø 如何读取数据? Ø 模型训练:模型预测值和真实值Loss
Ø (计算损失,反向传播,梯度更新,模型保存)

01 02 03 04

数据处理 模型评估
作用:检验模型效果
Ø 目的:将文本数据处理成符合模型输入的文本
(实例化模型,加载保存模型,模型预测)
Ø 文本张量化:将文本转化为符合模型输入x以及对应标签y(lucy---English)
Ø 原因:人名属于短文,同时字母之间的联系不紧密(如:lucy,zhangsan)
Ø 构建数据迭代器:将上一步数据源进一步封装,方便模型输入

注意:数据处理需要人工处理,ChatGPT主要在模型构建与训练部分使用 高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 项目整体架构

项目代码结构

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 项目整体架构

Windows测试环境

pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple 安装Pytorch1.13最新版

【扩展】UCloud云服务测试环境

PyCharm连接 PyCharm conda list 查看环境


UCloud云服务器 输入IP和端口号 conda activate chatgpt
激活环境

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

1.项目实现流程有哪些?
数据获取,数据处理,模型构建与训练,模型预测,模型评估

总结
总结 2.数据处理的目的什么?
将文本数据处理成符合模型输入的文本

采用的是文本张量化(字符张量化),通过onehot解决

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

CHATGPT
USEAGE

RNN简介
03 RNN的结构?RNN特点及应用场景?

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 什么是RNN?

序列形式 l 什么是RNN?

RNN(Recurrent Neural Network), 循环神经网络


Ø 一般以序列数据为输入
Ø 通过网络内部的结构设计有效捕捉序列之间的关系特征

序列数据 Ø 一般也是以序列形式进行输出

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• RNN网络结构

Ø RNN的循环机制使模型 上一时间步产生的结果, 能够作为当下时间步输入的一部分,对当下时间步的输出产生影响.

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• RNN网络结构

l RNN神经网络结构?

Ø 输入层,隐藏层,输出层

Ø 每一个时间步的输入有2个

Ø 每一个时间步的输出有2个

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• RNN使用举例

以一个用户意图识别的例子

第一步: 用户输入了"What time is


it ?", 首先需要对它进行基本的分词,
因为RNN是按照顺序工作的, 每次
只接收一个单词进行处理.

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• RNN使用举例

第二步: 首先将单词"What"输送给
RNN, 它将产生一个输出O1.

第三步: 继续将单词"time"输送给
RNN, 但此时RNN不仅仅利用"time"
来产生输出O2, 还会使用来自上一
层隐层输出O1作为输入信息.

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• RNN使用举例

第四步: 重复这样的步骤, 直到处理


完所有的单词.

第五步: 最后,将最终的隐层输出
O5进行处理来解析用户意图.

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• RNN作用和应用场景

l RNN模型作用?
因为RNN结构能够很好利用序列之间的关系, 因此针对自然界具有连续
性的输入序列, 如人类的语言, 语音等进行很好的处理,

l RNN应用场景有哪些?
广泛应用于NLP领域的各项任务, 如文本分类, 情感分析, 意图识别, 机器
翻译等.

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• RNN的API

import torch.nn as nn
nn.RNN(5,6,1)

定义模型
第一个参数:5输入数据的尺寸
第二个参数:6 输出数据的尺寸
第三个参数:隐藏层个数

还可以设置batch_size

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

1.什么是RNN?
Ø 循环神经网络

总结
总结 2.RNN模型作用?
Ø 针对自然界具有连续性的输入序列, 进行很好的处理

Ø 如人类的语言, 语音等

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

CHATGPT
USEAGE

数据获取
04 如何读取数据?了解数据的构成?

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据获取 步骤如下

Ø 数据存放路径: $(home)/data/train.txt
Ø 数据展示

格式说明如下:

数据共分两列: 数据处理思路:
Ø 第一列代表人名 Ø 字符向量化(onehot编码)
Ø 第二列代表国家 Ø 标签编码(labelencoder)
Ø 中间以制表符tab符号分开

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据获取 步骤如下

将文件数据读取到内存

代码展示:

主要步骤:
1、打开数据文件 open(filename, mode='r', encoding='utf-8')
2、按行读文件、提取样本x 样本y line.strip().split('\t')
3、返回样本x的列表、样本y的列表 my_list_x, my_list_y

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

1.该项目提供数据集有哪几列?
Ø 第一列代表人名

Ø 第二列代表国家,

总结
总结
Ø 中间以制表符tab符号分开

2.该项目采用何种方法对文本进行处理?
字符张量化(one-hot独热编码)

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

CHATGPT
USEAGE

数据预处理
05 文本如何转换为数字?模型输入如何处理?

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

数据预处理方法
核心步骤

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据预处理

字符张量化 标签编码

特征 标签列

数据集
lucy english
高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据预处理 步骤如下

特征处理 onehot编码

字符张量化 字符数值化、数值张量化,统一由one-
hote编码来实现:字符张量化

为什么采用这种方式? 因为:人名(特别是姓)属于短文,同时字母之间的联系不紧密;
可基于字符做模型搭建,去探索人名(数据) 和国家(标签)之间的关系

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据预处理 独热编码onehot

比如原始预料为 lucy ---english

lucy 作为预料,定义长度为4的列表,如果l出现在第一位置,第一位置为1,其他全为0

[lucy]
l 1 0 0 0

[l,u,c,y] u
c
0
0
1
0
0
1
0
0
y 0 0 0 1
lucy的序列表示:[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]

实现思路总结:针对语料去重之后一共有多少个单词,然后以单词长度为基准建立列表,构建onehot编码形式

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据预处理 独热编码onehot

但是english国家名如何处理呢?

标签编码(18个国家用0-17标号)

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据预处理 标签编码(labelencoder)

labelencoder编码
标签列处理方式
18个国家
标签编码
从0-17进行编号

Italian --> 0
English --> 1
Spanish --> 2
Irish --> 3
Chinese --> 4

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据预处理 步骤如下

第一步: 获取常用的字符数量

导入必备的工具包

获取常用字符

人名特点: 以字母、空格、标点符号等组成;常用字符共计57个

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据预处理 步骤如下

第二步: 获取国家名种类和个数

代码展示:

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

数据预处理实操
核心步骤

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据预处理 步骤如下

第一步: 构建数据源NameClassDataset

2-数据源DataSet(封装为Torch张量形式)

3-DataLoader

1-原始数据

按照批次拿数据

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据预处理 步骤如下

第一步: 构建数据源NameClassDataset

该步骤的目的,:
主要将英文单词转换为模型可以识别的数字形式:

文本转化为one-hot编码形式: 向量中只有一个元素是1,
其余全是0

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 数据预处理 步骤如下

该步骤的目的, 将之前自定义的Dataset进行
第二步: 构建迭代器DataLoader遍历数据
再次封装, 用于后面的训练.

Ø 处理后数据形状: [batch_size, seq_length, hidden_size].


Ø 参数解释: batch_size代表一次输入模型几个样本; seq_length代表输入长度, hidden_size代表文本中每个词的词嵌入维度.

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

1.数据预处理步骤有哪些?
Step1:获取常用的字符数量

总结
Step2:获取国家名种类和个数

总结 Step3:将文件数据读取到内存

Step4:构建数据源NameClassDataset

Step5:构建迭代器遍历数据

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

CHATGPT
GETTING STARTED

基于ChatGPT完成模型的搭建
06 人名分类模型如何构建?模型如何训练?

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• RNN人名分类模型 步骤如下

思路:输入人名,预测18国家具体分类

输入[5,1,57] 输入[1,128] [1,18]


数据 结
[1,18]
RNN Linear
(zhang) 果

nn.Linear(hidden_size, num_classes) 最终输出[1,18]

nn.RNN(input_size,hidden_size) 最终RNN的输出 [5,1,128]

tensor_x(seqlen,batch_size,input_size) 输入[5,1,57]

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

借助ChatGPT
构建RNN人名分类模型

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 借助ChatGPT构建RNN人名分类模型 步骤如下

第一步: 登录网址https: //chat.openai.com/auth/login, 打开ChatGPT聊天界面

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 借助ChatGPT构建RNN人名分类模型 步骤如下

第二步: 在对话框中输入: 基于Pytorch框架, 实现RNN模型进行文本分类的代码

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 借助ChatGPT构建RNN人名分类模型 步骤如下

第三步: 粘贴复制代码, 并进行微调

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 借助ChatGPT构建RNN人名分类模型 步骤如下

第四步: 测试模型

模型结构: RNN+全连接层
模型输出结果: [1, 18], 代表一个样本有18种结果可能

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

借助ChatGPT
构建RNN模型训练函数

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 借助ChatGPT构建RNN模型训练函数 步骤如下

第一步: 在对话框中输入: “模型训练代码如何实现”

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 借助ChatGPT构建RNN模型训练函数 步骤如下

第二步: 模型训练代码微调

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

借助ChatGPT
构建RNN模型预测函数

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 借助ChatGPT构建RNN模型预测函数 步骤如下

第一步: 在ChatGPT对话框中输入: “模型预测代码如何实现”?下图是ChatGPT给的结果展示:

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 借助ChatGPT构建RNN模型预测函数 步骤如下

第二步: 模型预测代码微调

定义文本转化函数:
将人名转为数字张量形式, 供模型调用

定义模型预测函数

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

1.基于ChatGPT完成模型的搭建的步骤?

总结
Step1:使用ChatGPT构建RNN人名分类模型的搭建

总结 Step2:使用ChatGPT完成模型训练代码的实现

Step3:使用ChatGPT完成模型预测代码的实现

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

CHATGPT
MODEL EVALUATION

模型评估与结果分析
07 模型效果表现如何?

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 实现模型训练代码 代码

结论:随着训练次数的增加, 模型准确率逐步
增大, 损失逐渐减小

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

• 实现模型训练代码 代码

示例1: 正确预测 示例2: 错误预测

总结:
左图示例1, 显示输入人名“lucy”, 预测所属国家为“英国”, 结果正确
右图示例2, 显示输入人名“zhang”, 预测所属国家为“俄罗斯”, 结果不正确
原因: 模型结构过于简单、数据集数量较少
改进方法: 增加模型深度(多加几个全连接层)、增加训练数据集

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

总结
模型改进的方法有哪些?
总结 1. 增加模型深度(多加几个全连接层)、

2. 增加训练数据集

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

u 作业1: 实现数据预处理过程(难度: 中等)


今日 u 作业2: 实现RNN人名分类模型的搭建(难度: 较难)
作业 u 作业3: 完成模型训练和预测代码的实现(难度: 较难)

u 作业4: 实现结果预测(难度: 容易)

高级数字化人才培训专家
多一句没有,少一句不行,用最短时间,教会更实用的技术!

u 大家思考下, 如何用ChatGPT完成情感分析?
思考

高级数字化人才培训专家

You might also like