不到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中使用md5sum检查目录中相同文件代码分享
Feb 02 Python
python中nan与inf转为特定数字方法示例
May 11 Python
Python代码实现KNN算法
Dec 20 Python
Python实现生成随机日期字符串的方法示例
Dec 25 Python
python basemap 画出经纬度并标定的实例
Jul 09 Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 Python
pytorch sampler对数据进行采样的实现
Dec 31 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
Django import export实现数据库导入导出方式
Apr 03 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
python基础之错误和异常处理
Oct 24 Python
Python selenium绕过webdriver监测执行javascript
Apr 12 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
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
Ionic快速安装教程
2016/06/03 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
2018/05/03 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
利用python开发app实战的方法
2019/07/09 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
斯福泰克软件测试面试题
2015/02/16 面试题
麦当劳辞职信范文
2014/01/18 职场文书
社区文化建设方案
2014/05/02 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
不同意离婚上诉状
2015/05/23 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python