不到20行代码用Python做一个智能聊天机器人


Posted in Python onApril 19, 2019

不到20行代码用Python做一个智能聊天机器人

伴随着自然语言技术和机器学习技术的发展,越来越多的有意思的自然语言小项目呈现在大家的眼前,聊天机器人就是其中最典型的应用,今天小编就带领大家用不到20行代码,运用两种方式搭建属于自己的聊天机器人。

1.神器wxpy库

首先,小编先向大家介绍一下本次运用到的python库,本次项目主要运用到的库有wxpy和chatterbot。

wxpy是在 itchat库 的基础上,通过大量接口优化,让模块变得简单易用,并进行了功能上的扩展。什么是接口优化呢,简单来说就是用户直接调用函数,并输入几个参数,就可以使用了,不需要关心函数的底层实现。

Chatterbot是一个基于机器学习的聊天机器人引擎,基于python编写而成,它可以自可以从已有的对话中进行记忆匹配。

Wxpy因为采用大量的接口集成,所以在使用的时候非常方便,下图是简单的wxpy使用,通过进入交互式界面,可以与指定的好友进行交谈。代码及效果如下图所示:

不到20行代码用Python做一个智能聊天机器人

上述的代码中print_msg函数采用了wxpy库的装饰器,装饰器在这里的作用可以查阅其源码进行查看,主要是用于注册消息的配置。例如print_msg函数,可以将对方的回复消息进行输出。而在手机微信上我们同样看到了双方之间交流,所以从某个层面上来讲,wxpy就是PC端的微信。

2.图灵聊天机器人

下面我们将会实现第一个聊天机器人,该机器人是wxpy内集成的图灵机器人,由于图灵机器人的高度专业,所以制作出来的聊天机器人交流也非常的顺畅。那如何将图灵机器人嵌入到我们的交流中呢?首先我们需要去图灵机器人官网注册得到我们自己的机器人,注册完成后,我们便可以生成图灵机器人,并得到一个api_key,如下图所示:

不到20行代码用Python做一个智能聊天机器人

这个api_key便是我们后续制作聊天机器人的关键。图灵聊天机器人的代码和效果图如下图所示:

不到20行代码用Python做一个智能聊天机器人

由上图右边的聊天记录来看,依托图灵机器人的聊天机器人效果非常的出色,而且还可以进行天气查询等功能。

3.自己训练的聊天机器人

下面我们不依托于图灵机器人,而是依靠ChatterBot来制作一款机器人,这款机器人,虽然效果较上一款性能差距较大,但是它可以训练我们自己的语料库,下面是代码和效果的展示。

不到20行代码用Python做一个智能聊天机器人

由上图可以看出,或许是受制于语料库资源过少,而且也不能够主动上网查询。所以要想使其能够回答和提问基本吻合还需要大量的工作。

难道除了这些我们就没有其它可以做的了吗?当然不是,ChatterBot为我们提供了可以训练的方式,我们可以提供素材来让其进行训练。代码和效果如下图所示:

不到20行代码用Python做一个智能聊天机器人

我们首先定义了一个chatbot,然后将训练数据加入进去,让模型匹配我们的问题,得到训练的结果。

右边的图展示了我们的结果,由结果可以看出,由于我们的训练集中没有“在”这个数据,所以得到的回答很莫名其妙,而对于“你好”和“你叫什么名字?”这两个问题的回答则得到了很完美的答复,这就是加入训练数据集的优势所在。

trainer.train([ "你好", "你好,很高兴认识你", "你叫什么名字?", "我叫chat-robot-2.",])

(训练集的数据)

你也可以加入你想要训练的语料库进行训练,一样会得到不错的效果。有的同学可能会问这是如何训练的呢?答案就在chatterbot的源码里,打开源码我们可以这里的chatbot选择的训练方法是“BestMatch”,也即最匹配方式,从训练的对话中找到最相识的语句,然后根据对话提供回答。

不到20行代码用Python做一个智能聊天机器人

总结

以上所述是小编给大家介绍的不到20行代码用Python做一个智能聊天机器人,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python字符串格式化
Jun 15 Python
python从入门到精通(DAY 1)
Dec 20 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
详解Python核心对象类型字符串
Feb 11 Python
简单实现python数独游戏
Mar 30 Python
python验证码识别教程之利用投影法、连通域法分割图片
Jun 04 Python
python实现NB-IoT模块远程控制
Jun 20 Python
python绘制圆柱体的方法
Jul 02 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
python 发送邮件的四种方法汇总
Dec 02 Python
python实现ping命令小程序
Dec 28 Python
详解Python3 基本数据类型
Apr 19 #Python
python面向对象法实现图书管理系统
Apr 19 #Python
python远程连接MySQL数据库
Apr 19 #Python
详解Python匿名函数(lambda函数)
Apr 19 #Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 #Python
Python3中列表list合并的四种方法
Apr 19 #Python
局域网内python socket实现windows与linux间的消息传送
Apr 19 #Python
You might like
详解Yii2 rules 的验证规则
2016/12/02 PHP
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
Python中的集合介绍
2019/01/28 Python
django中media媒体路径设置的步骤
2019/11/15 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
中国梦的演讲稿
2014/01/08 职场文书
会议邀请书范文
2014/02/02 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
对学校的意见和建议
2015/06/04 职场文书
话题作文之诚信
2019/11/28 职场文书