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

2019 年 4 月 19 日 大数据技术

来自:菜鸟学Python(微信号:cainiao_xueyuan)


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


01


神器wxpy库


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


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


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


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


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



02


图灵聊天机器人


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


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


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



03

自己训练的聊天机器人


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


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

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

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


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

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

(训练集的数据)


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



Python做机器学习的项目是不是很有趣,以上就是小编为大家带来的两款聊天机器人的设计,大家赶快动手设计一款属于自己的聊天机器人吧!



编号802,输入编号直达本文

●输入m获取文章目录

推荐↓↓↓

Python编程

更多推荐25个技术类公众微信

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

登录查看更多
2

相关内容

Chatbot,聊天机器人。 chatbot是场交互革命,也是一个多技术融合的平台。上图给出了构建一个chatbot需要具备的组件,简单地说chatbot = NLU(Natural Language Understanding) + NLG(Natural Language Generation)。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
算法与数据结构Python,369页pdf
专知会员服务
161+阅读 · 2020年3月4日
KGCN:使用TensorFlow进行知识图谱的机器学习
专知会员服务
81+阅读 · 2020年1月13日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
100行Python代码,轻松搞定神经网络
大数据文摘
4+阅读 · 2019年5月2日
一个牛逼的 Python 调试工具
机器学习算法与Python学习
15+阅读 · 2019年4月30日
从零开始用Python写一个聊天机器人(使用NLTK)
AI研习社
10+阅读 · 2018年12月27日
Python用法速查网站
Python程序员
17+阅读 · 2018年12月16日
教你打造一个属于自己的「搜索引擎」
少数派
9+阅读 · 2018年10月23日
手把手教你用Python创建微信聊天机器人
新智元
4+阅读 · 2018年3月14日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
资源 | 适合AI新手的9款人工智能开源软件
AI100
3+阅读 · 2017年11月13日
A Survey on Deep Learning for Named Entity Recognition
Arxiv
26+阅读 · 2020年3月13日
Arxiv
4+阅读 · 2018年5月10日
Arxiv
7+阅读 · 2018年1月30日
VIP会员
相关资讯
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
100行Python代码,轻松搞定神经网络
大数据文摘
4+阅读 · 2019年5月2日
一个牛逼的 Python 调试工具
机器学习算法与Python学习
15+阅读 · 2019年4月30日
从零开始用Python写一个聊天机器人(使用NLTK)
AI研习社
10+阅读 · 2018年12月27日
Python用法速查网站
Python程序员
17+阅读 · 2018年12月16日
教你打造一个属于自己的「搜索引擎」
少数派
9+阅读 · 2018年10月23日
手把手教你用Python创建微信聊天机器人
新智元
4+阅读 · 2018年3月14日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
资源 | 适合AI新手的9款人工智能开源软件
AI100
3+阅读 · 2017年11月13日
Top
微信扫码咨询专知VIP会员