不到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脚本来删除指定容量以上的文件的教程
May 04 Python
python获取各操作系统硬件信息的方法
Jun 03 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
python3 requests库文件上传与下载实现详解
Aug 22 Python
django之导入并执行自定义的函数模块图解
Apr 01 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
Python3将ipa包中的文件按大小排序
Apr 17 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
pycharm无法安装cv2模块问题
May 20 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
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
PHP自定义函数收代码
2010/08/01 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
JS启动应用程序的一个简单例子
2008/05/11 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
Angular6新特性之Angular Material
2018/12/28 Javascript
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
在Django中创建第一个静态视图
2015/07/15 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
python去除扩展名的实例讲解
2018/04/23 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
python通过链接抓取网站详解
2019/11/20 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
详解python算法常用技巧与内置库
2020/10/17 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
大学生毕业自荐信
2013/10/10 职场文书
聘任书模板
2014/03/29 职场文书
学雷锋的心得体会
2014/09/04 职场文书
公司员工安全协议书
2014/11/21 职场文书
小学美术教学反思
2016/02/17 职场文书
《普罗米修斯》教学反思
2016/02/22 职场文书
关于EntityWrapper的in用法
2022/03/22 Java/Android