设计并实现一个在线聊天机器人案例

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+第三方中文语料库实现在线聊天机器人相关推荐

  1. python 在线编程 实现_Python进阶开发之网络编程,socket实现在线聊天机器人

    系列文章 本文目录 .什么是socket? 说到网络编程,难免要提到socket? 那什么是socket呢,中文名叫"套接字",更难理解了吧. 通俗来讲,socket表示一个网络连 ...

  2. itchat+在线聊天机器人接口实现微信聊天机器人

    闲来无事(其实还在期末考试),想着怎么利用手里的服务器搞点事情时,发现了python的itchat库,想着可以再利用网页聊天机器人,做一个自动聊天的微信机器人. 总体思路很简单,用itchat登录微信 ...

  3. 【独立站运营】在线聊天机器人为何能成为电商行业的大趋势?

    (一)什么是聊天机器人? 聊天机器人是微型程序,可帮助根据一组预定义的条件.触发器或事件自动模拟与客户的交互.聊天机器人本身的概念并不是什么新鲜事.事实上,它们从 1960 年代就已经存在.使用聊天机 ...

  4. 2023 人工智能在线聊天机器人网页HTML源码

    测试了一下就是对接的外部接口,无加密有能力的可以二开.使用教程,上传主机,服务器后解压使用,当然了,电脑解压后点击index.html也能用.

  5. 使用 ChatterBot 库制作一个聊天机器人

    作者 | 周萝卜 来源 | 萝卜大杂烩 我们学习一些如何使用 ChatterBot 库在 Python 中创建聊天机器人,该库实现了各种机器学习算法来生成响应对话,还是挺不错的 1什么是聊天机器人 聊 ...

  6. c语言socket调用图灵API,socket通信(四):socket实现机器人在线聊天

    实现思路:客户端(本机)向服务端发送消息:服务端接收消息,并调用图灵机器人API接口,获取回复返回给客户端. 首先需要先去图灵机器人http://www.tuling123.com申请帐号,并创建机器 ...

  7. python制作聊天机器人原理_用 Python 来做一个聊天机器人吧!(一)

    在我的一个回答里,我提到了用 Python 搭建聊天机器人.从今天开始,我就带着大家从0开始搭建一个聊天机器人. (顺便说一句,我喜欢把链接像上面这样加在文字里,如果找不到文中所说的资源,可以看看周围 ...

  8. chatbot聊天机器人技术路线汇总

    版权声明:博主原创文章,转载请注明来源,谢谢合作!! https://mp.csdn.net/mdeditor/84481818 聊天机器人实现的技术途径 大约可分为4种:1. 第一种是属于" ...

  9. chatbot聊天机器人技术路线

    聊天机器人实现的技术途径大约可分为以下4种: (其中第一种是属于"调用第三方API",也就是说核心代码和数据库不掌握在自己手里)(第二.三.四种属于开源框架,也就是说我们可以下载其 ...

最新文章

  1. 微软的 SQL Server 你学会了吗?
  2. 第15讲:Selenium 爬取实战
  3. 【简便解法】1090 危险品装箱 (25分)_33行代码AC
  4. 跳跃游戏Python解法
  5. JS面向对象编程之封装
  6. UOS应用商店deb打包的正确目录结构
  7. ProCAD.2D/3D.Designer.v2008.1 1CD(最大程度地提高管道设计效率)\
  8. android连接wifi不能上网,手机已经连接wifi但无法上网的详细解决方法
  9. ubuntu独立显卡驱动
  10. 可汗学院公开课: 统计学_1 统计学基本知识、二项及泊松分布
  11. 百度富文本编辑器php设置图片上传,手把手教你百度富文本编辑器的相关配置包括图片上传(for jsp)...
  12. windos无法对计算机进行,电脑提示windows无法完成格式化如何解决
  13. 微信小程序 模仿华为音乐 列表界面
  14. 笔记本电脑怎么录音?电脑专业录音软件下载
  15. OpenCL基础(一)
  16. 授时服务器物理隔离,GPS授时设备配备的必要性及其特点
  17. 软件架构设计分层模型和构图思考
  18. Apache2.2(OS 64)指定的网络名不再可用的处理
  19. 程序员都秃顶?Python 创始人笑了,养生还得学这门语言
  20. 漫威电影人物关系可视化

热门文章

  1. 【备战春招/秋招系列】初出茅庐的程序员该如何准备面试?
  2. 2W10-ASEMI整流桥2W10
  3. 基于LEACH和HEED的WSN路由协议研究与改进(Matlab代码实现)
  4. CAA工程文件清理方法
  5. 顶级的 Bootstrap 日期选择器和时间选择器插件(附免费下载链接)
  6. 央行:社保卡与金融IC卡不冲突
  7. Java、JSP图书管理系统的设计与实现
  8. C语言连接MySQL(Windows)
  9. 索尼mxf播放花帧无声音的修复方法
  10. 【吴刚】网页元素设计WUI初级入门视频教程-吴刚-专题视频课程