ChatterBot+第三方中文语料库实现在线聊天机器人
设计并实现一个在线聊天机器人案例
1、ChatterBot
ChatterBot是Python自带的基于机器学习的语音对话引擎,可以基于已知的对话库来产生回应。ChatterBot独特的语言设计可以使它可以通过训练来用任何一种语言进行对话。该项目的开源代码链接:https://github.com/gunthercox/ChatterBot
2、应用案例描述
ChatterBot
包含的工具有助于简化训练聊天机器人实例的过程。ChatterBot
的训练过程涉及将示例对话框加载到聊天机器人的数据库中。这可以创建或构建代表已知语句和响应集的图数据结构。当一个聊天机器人训练师被提供一个数据集时,它会在聊天机器人的知识图中创建必要的条目,以便正确表示语句输入和响应。
2.1 通过列表数据进行训练
chatterbot.trainers.ListTrainer(storage, **kwargs)
允许使用对话字符串列表来训练ChatBot
。
对于训练过程,需要传递一个语句列表,其中每个语句的顺序基于其在给定对话中的位置。
例如,如果你使用如下语言进行训练,则当你输入Hi there!
或者Greetings!
的时候机器人会回复你Hello
。
from chatterbot import ChatBot
from chatterbot.trainers import ListTrainerchatterbot = ChatBot("Training Example")
chatterbot.set_trainer(ListTrainer)chatterbot.train(["Hi there!","Hello",
])chatterbot.train(["Greetings!","Hello",
])
还可以提供更长的训练对话清单。这将在列表中建立每个项目作为响应。
chatterbot.train(["How are you?","I am good.","That is good to hear.","Thank you","You are welcome.",
])
以上介绍来源于:[ ChatterBot聊天机器人 ] ChatterBot训练数据以及使用三方语料库训练数据 - pytorch中文网
下面为原创内容
3、使用第三方中文语料库进行训练
大佬整理的语料库地址:https://github.com/codemayq/chinese_chatbot_corpus
chatterbot自带的语料库可以通过以下代码来实现,不需要额外下载:
from chatterbot.trainers import ChatterBotCorpusTrainerchatterbot = ChatBot("Training Example")
chatterbot.set_trainer(ChatterBotCorpusTrainer)chatterbot.train("chatterbot.corpus.english"
)
我选择了语料数量较少的xiaohuangji语料库:https://github.com/candlewill/Dialog_Corpus
首先下载未分词的语料库
下载解压后将后缀改为.txt
打开后是这样的:
接下来就是把txt文件按行读取并存入列表中,注意要跳过’E’那一行,并且把每句话开头的’M '去掉
具体代码为:
#导入语料库
file = open("./corpus/xiaohuangji50w_nofenci.txt",'r',encoding='utf-8')
corpus = []
print('开始加载语料!')
while 1:try:line = file.readline()if not line:breakif line == 'E\n':continuecorpus.append(line.split('M ')[1].strip('\n'))except:pass
file.close()
print('语料加载完毕')
处理后效果:
如果出现下面的报错,在将line.split('M ')[1].strip('\n')
存入corpus列表前print(line.split('M ')[1].strip('\n'))
就好了
4、应用案例实现
4.1 开始训练
我们取前10000条语料进行训练my_bot.train(corpus[:10000])
my_bot = ChatBot("xiaohuangji")
my_bot.set_trainer(ListTrainer)
print('开始训练!')
my_bot.train(corpus[:10000])
print('训练完毕!')
while True:print(my_bot.get_response(input("user:")))
4.2 训练结果
5、总结
由于第一次使用ChatterBot,也没有过多的时间去研究,还不知道怎么直接训练.tsv文件,于是采取直接读取txt,然后通过列表数据进行训练chatterbot.trainers.ListTrainer(storage, **kwargs)
。
经过实践该种方法在训练大量语料时很慢,训练10000条语料后的回答时间大概在一分钟,不过回答的质量是高于chattbot提供的560条中文语料训练的结果的。
6、参考文章
[ ChatterBot聊天机器人 ] ChatterBot训练数据以及使用三方语料库训练数据
[两种开源聊天机器人的性能测试(一)——ChatterBot]
ChatterBot+第三方中文语料库实现在线聊天机器人相关推荐
- python 在线编程 实现_Python进阶开发之网络编程,socket实现在线聊天机器人
系列文章 本文目录 .什么是socket? 说到网络编程,难免要提到socket? 那什么是socket呢,中文名叫"套接字",更难理解了吧. 通俗来讲,socket表示一个网络连 ...
- itchat+在线聊天机器人接口实现微信聊天机器人
闲来无事(其实还在期末考试),想着怎么利用手里的服务器搞点事情时,发现了python的itchat库,想着可以再利用网页聊天机器人,做一个自动聊天的微信机器人. 总体思路很简单,用itchat登录微信 ...
- 【独立站运营】在线聊天机器人为何能成为电商行业的大趋势?
(一)什么是聊天机器人? 聊天机器人是微型程序,可帮助根据一组预定义的条件.触发器或事件自动模拟与客户的交互.聊天机器人本身的概念并不是什么新鲜事.事实上,它们从 1960 年代就已经存在.使用聊天机 ...
- 2023 人工智能在线聊天机器人网页HTML源码
测试了一下就是对接的外部接口,无加密有能力的可以二开.使用教程,上传主机,服务器后解压使用,当然了,电脑解压后点击index.html也能用.
- 使用 ChatterBot 库制作一个聊天机器人
作者 | 周萝卜 来源 | 萝卜大杂烩 我们学习一些如何使用 ChatterBot 库在 Python 中创建聊天机器人,该库实现了各种机器学习算法来生成响应对话,还是挺不错的 1什么是聊天机器人 聊 ...
- c语言socket调用图灵API,socket通信(四):socket实现机器人在线聊天
实现思路:客户端(本机)向服务端发送消息:服务端接收消息,并调用图灵机器人API接口,获取回复返回给客户端. 首先需要先去图灵机器人http://www.tuling123.com申请帐号,并创建机器 ...
- python制作聊天机器人原理_用 Python 来做一个聊天机器人吧!(一)
在我的一个回答里,我提到了用 Python 搭建聊天机器人.从今天开始,我就带着大家从0开始搭建一个聊天机器人. (顺便说一句,我喜欢把链接像上面这样加在文字里,如果找不到文中所说的资源,可以看看周围 ...
- chatbot聊天机器人技术路线汇总
版权声明:博主原创文章,转载请注明来源,谢谢合作!! https://mp.csdn.net/mdeditor/84481818 聊天机器人实现的技术途径 大约可分为4种:1. 第一种是属于" ...
- chatbot聊天机器人技术路线
聊天机器人实现的技术途径大约可分为以下4种: (其中第一种是属于"调用第三方API",也就是说核心代码和数据库不掌握在自己手里)(第二.三.四种属于开源框架,也就是说我们可以下载其 ...
最新文章
- 微软的 SQL Server 你学会了吗?
- 第15讲:Selenium 爬取实战
- 【简便解法】1090 危险品装箱 (25分)_33行代码AC
- 跳跃游戏Python解法
- JS面向对象编程之封装
- UOS应用商店deb打包的正确目录结构
- ProCAD.2D/3D.Designer.v2008.1 1CD(最大程度地提高管道设计效率)\
- android连接wifi不能上网,手机已经连接wifi但无法上网的详细解决方法
- ubuntu独立显卡驱动
- 可汗学院公开课: 统计学_1 统计学基本知识、二项及泊松分布
- 百度富文本编辑器php设置图片上传,手把手教你百度富文本编辑器的相关配置包括图片上传(for jsp)...
- windos无法对计算机进行,电脑提示windows无法完成格式化如何解决
- 微信小程序 模仿华为音乐 列表界面
- 笔记本电脑怎么录音?电脑专业录音软件下载
- OpenCL基础(一)
- 授时服务器物理隔离,GPS授时设备配备的必要性及其特点
- 软件架构设计分层模型和构图思考
- Apache2.2(OS 64)指定的网络名不再可用的处理
- 程序员都秃顶?Python 创始人笑了,养生还得学这门语言
- 漫威电影人物关系可视化