【Github】项目名:GPT2 – chitchat:基于GPT2的中文闲聊机器人
项目简介
本项目是基于GPT2的中文闲聊机器人,模型实现基于HuggingFace的transformers。代码中给出了许多详细的中文注释,方便大家更好地理解代码。该项目受GPT2 – Chinese的启发,在生成阶段,使用了Temperature、Top – kSampling和NucleusSampling等。此项目被微软的DialoGPT项目引用(为了简化生成方法,删除了MMI的生成方法)。
项目结构
1. 数据相关:
– data/train.txt:默认的原始训练集文件,存放闲聊语料。
– train.pkl:对原始训练语料进行tokenize之后的文件,存储一个list对象,list的每条数据表示一个多轮对话,即一条训练数据。
2. 模型相关:
– model:存放对话生成的模型,如epoch40(经过40轮训练之后得到的模型)、config.json(模型参数的配置文件)、pytorch_model.bin(模型文件)。
3. 字典文件:
– vocab/vocab.txt:字典文件。默认的字典大小为13317,若需要使用自定义字典,需要将confog.json文件中的vocab_size字段设为相应的大小。
4. 代码文件:
– sample:存放人机闲聊生成的历史聊天记录。
– train.py:训练代码。
– interact.py:人机交互代码。
– preprocess.py:数据预处理代码。
使用方法
1.
快速开始
– 在模型分享中下载模型,将模型文件夹model_epoch40_50w放到model目录下,执行如下命令进行对话:
– python interact.py –no_cuda –model_path model_epoch40_50w(使用cpu生成,速度相对较慢)。
– 或python interact.py –model_path model_epoch40_50w –device 0(指定0号GPU进行生成,速度相对较快)。
2.
数据预处理
– 在项目根目录下创建data文件夹,将原始训练语料命名为train.txt,存放在该目录下。train.txt的格式为每段闲聊之间间隔一行。运行preprocess.py,对data/train.txt对话语料进行tokenize,然后进行序列化保存到data/train.pkl。
3.
训练模型
– 运行train.py,使用预处理后的数据,对模型进行自回归训练,模型保存在根目录下的model文件夹中。可以通过指定patience参数进行earlystop。
4.
人机交互
– 运行interact.py,使用训练好的模型,进行人机交互,输入Ctrl+Z结束对话之后,聊天记录将保存到sample目录下的sample.txt文件中。执行interact.py时,可以尝试通过调整topk、topp、repetition_penalty、max_history_len等参数,调整生成的效果。如果要使用GPU进行生成,则不要调用–no_cuda参数,并且通过–device gpu_id来指定使用哪块GPU。
项目总结
这个GPT2 – chitchat项目为中文闲聊提供了一个基于GPT2的解决方案,从数据预处理、模型训练到人机交互都有相应的方法和代码实现。欢迎大家在评论区留言讨论这个项目的使用心得或者提出改进的建议。
项目地址
数据统计
数据评估
本站链氪巴士提供的GPT2-chitchat:基于GPT2的中文闲聊机器人都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由链氪巴士实际控制,在2024年12月6日 上午12:00收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,链氪巴士不承担任何责任。