ChatGPT项目实战 理解真实业务场景中,ChatGPT的使用方式 目录 Contents 1.项目背景 2.项目架构 3.RNN介绍 4.数据获取 5.数据预处理 6.基于ChatGPT完成模型的搭建 7.模型评估与结果分析 项目主要解决哪种实际业务?从数据获取到模型搭建与预测RNN能够解决什么问题? 如何获取数据? 如何选择数据处理方案?ChatGPT生成模型代码如何验证模型效果? CHATGPTINTRODUCE 多一句没有,少一句不行,用最短时间,教会更实用的技术! 01 项目背景 项目背景是什么?实际业务是什么? •项目介绍 项目名称 人名分类器案例实战 业务含义 根据人名预测是哪一个国家 (18个国家) 项目价值 AI赋能互联网业务,提高业务效率 业务加持 用户注册过程中,会根据用户填写的名字直接给他分配可能的国家或地区选项 •项目背景 •以一个人名为输入,使用模型帮助我们判断它最有可能是来自哪一个国家的人名, •这在某些国际化公司的业务中具有重要意义,在用户注册过程中,会根据用户填写的名字直接给他分配可能的国家或地区选项,以及该国家或地区的国旗,限制手机号码位数等等. 姓名 •项目背景 •以一个人名为输入,使用模型帮助我们判断它最有可能是来自哪一个国家的人名,这在某些国际化公司的业务中具有重要意义,在用户注册过程中,会根据用户填写的名字直接给他分配可能的国家或地区选项,以及该国家或地区的国旗,限制手机号码位数等等. 通过深度学习模型根据名字获取国家和地区 •项目解决方案确定 项目解决方案确定 文本分类/情感分析 比如情感分类情感分类精度很高,即好中差三类 NLP几大领域 文本分类/情感分析文本摘要 问答系统对话系统文本聚类知识图谱 .............. 文本摘要 从给定的文本中,聚焦到最核心的部分,自动生成摘要。 问答系统\对话系统 问答系统旨在直接给出精准回答,而对话系统旨在以口语化的自然语言 对话的方式解决用户问题。ChatGPT是两类系统整合的工具。 •项目解决方案确定 项目解决方案确定 属于哪种类型? 根据人名预测用户是哪一个国家 属于典型文本分类问题 总结 1.项目背景有哪些? 用户注册过程中,会根据用户填写的名字直接给他分配可能的国家或地区选项等 2.NLP包含几大领域问题? 文本分类、文本摘要、问答系统、机器翻译、文本纠错等等 3.本项目属于NLP那种类型问题? 文本分类问题 CHATGPTINTRODUCE 多一句没有,少一句不行,用最短时间,教会更实用的技术! 02 项目架构 项目架构如何理解? •项目整体架构 项目案例属于典型文本分类问题 •项目整体架构 数据获取 如何读取数据? 模型构建与训练 模型构建:RNN系列模型+全连接层 模型训练:模型预测值和真实值Loss (计算损失,反向传播,梯度更新,模型保存) 03 02 01 04 数据处理模型评估 目的:将文本数据处理成符合模型输入的文本 文本张量化:将文本转化为符合模型输入x以及对应标签y(lucy---English) 原因:人名属于短文,同时字母之间的联系不紧密(如:lucy,zhangsan) 构建数据迭代器:将上一步数据源进一步封装,方便模型输入 作用:检验模型效果(实例化模型,加载保存模型,模型预测) 高级数字化人才培训专家 注意:数据处理需要人工处理,ChatGPT主要在模型构建与训练部分使用 •项目整体架构 项目代码结构 •项目整体架构 Windows测试环境 pipinstalltorchtorchvisiontorchaudio-ihttps://pypi.tuna.tsinghua.edu.cn/simple安装Pytorch1.13最新版 【扩展】UCloud云服务测试环境 PyCharm连接UCloud云服务器 PyCharm 输入IP和端口号 condalist查看环境condaactivatechatgpt激活环境 总结 1.项目实现流程有哪些? 数据获取,数据处理,模型构建与训练,模型预测,模型评估 2.数据处理的目的什么? 将文本数据处理成符合模型输入的文本 采用的是文本张量化(字符张量化),通过onehot解决 CHATGPTUSEAGE 03 RNN简介 RNN的结构?RNN特点及应用场景? •什么是RNN? 序列形式 序列数据 什么是RNN? RNN(RecurrentNeuralNetwork),循环神经网络 一般以序列数据为输入 通过网络内部的结构设计有效捕捉序列之间的关系特征 一般也是以序列形式进行输出 •RNN网络结构 RNN的循环机制使模型上一时间步产生的结果,能够作为当下时间步输入的一部分,对当下时间步的输出产生影响. 高级数字化人才培训专家 高级数字化人才培训专家 •RNN网络结构 RNN神经网络结构? 输入层,隐藏层,输出层 每一个时间步的输入有2个 每一个时间步的输出有2个 •RNN使用举例 以一个用户意图识别的例子 第一步:用户输入了"Whattimeis it?",首先需要对它进行基本的分词,因为RNN是按照顺序工作的,每次只接收一个单词进行处理. 高级数字化人才培训专家 •RNN使用举例 第二步:首先将单词"What"输送给 RNN,它将产生一个输出O1. 第三步:继续将单词"time"输送给RNN,但此时RNN不仅仅利用"time"来产生输出O2,还会使用来自上一层隐层输出O1作为输入信息. 高级数字化人才培训专家 •RNN使用举例 第四步:重复这样的步骤,直到处理完所有的单词. 第五步:最后,将最终的隐层输出 O5进行处理来解析用户意图. 高级数字化人才培训专家 •RNN作用和应用场景 RNN模型作用? 因为RNN结构能够很好利用序列之间的关系,因此针对自然界具有连续性的输入序列,如人类的语言,语音等进行很好的处理, RNN应用场景有哪些? 广泛应用于NLP领域的各项任务,如文本分类,情感分析,意图识别,机器翻译等. •RNN的API importtorch.nnasnnnn.RNN(5,6,1) 定义模型 第一个参数:5输入数据的尺寸第二个参数:6输出数据的尺寸第三个参数:隐藏层个数 还可以设置batch_size 总结 1.什么是RNN? 循环神经网络 2.RNN模型作用? 针对自然界具有连续性的输入序列,进行很好的处理 如人类的语言,语音等 CHATGPTUSEAGE 04 数据获取 如何读取数据?了解数据的构成? 步骤如下 •数据获取 数据存放路径:$(home)/data/train.txt 数据展示 格式说明如下: 数据共分两列: 第一列代表人名 第二列代表国家 数据处理思路: 字符向量化(onehot编码) 标签编码(labelencoder) 中间以制表符tab符号分开 高级数字化人才培训专家 步骤如下 •数据获取 将文件数据读取到内存 代码展示: 主要步骤: 1、打开数据文件open(filename,mode='r',encoding='utf-8')2、按行读文件、提取样本x样本yline.strip().split('\t') 3、返回样本x的列表、样本y的列表my_list_x,my_list_y 总结 1.该项目提供数据集有哪几列? 第一列代表人名 第二列代表国家, 中间以制表符tab符号分开 2.该项目采用何种方法对文本进行处理? 字符张量化(one-hot独热编码) CHATGPTUSEAGE 05 数据预处理 文本如何转换为数字?模型输入如何处理? 数据预处理方法 核心步骤 •数据预处理 字符张量化标签编码 特征标签列 数据集 lucyenglish 高级数字化人才培训专家 •数据预处理步骤如下 特征处理 字符张量化 onehot编码 字符数值化、数值张量化,统一由one-hote编码来实现:字符张量化 为什么采用这种方式?因为:人名(特别是姓)属于短文,同时字母之间的联系不紧密; 可基于字符做模型搭建,去探索人名(数据)和国家(标签)之间的关系 高级数字化人才培训专家 独热编码onehot •数据预处理 比如原始预料为lucy---english lucy作为预料,定义长度为4的列表,如果l出现在第一位置,第一位置为1,其他全为0 [lucy] l 1 0 0 0 u 0 1 0 0 c 0 0 1 0 y 0 0 0 1 [l,u,c,y] 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 步骤如下 •数据预处理 第二步:构建迭代器DataLoader遍历数据该步骤的目的,将之前自定义的Dataset进行再次封装,用于后面的训练. 处理后数据形状:[batch_size,seq_length,hidden_size]. 参数解释:batch_size代表一次输入模型几个样本;seq_length代表输入长度,hidden_size代表文本中每个词的词嵌入维度. 总结 1.数据预处理步骤有哪些? Step1:获取常用的字符数量Step2:获取国家名种类和个数Step3:将文件数据读取到内存Step4:构建数据源NameClassDatasetStep5:构建迭代器遍历数据 CHATGPTGETTINGSTARTED 06 基于ChatGPT完成模型的搭建 人名分类模型如何构建?模型如何训练? 步骤如下 •RNN人名分类模型 思路:输入人名,预测18国家具体分类 数据 (zhang) 输入[5,1,57] RNN 输入[1,128] Linear [1,18] 结[1,18] 果 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聊天