不到20行代码用Python做一个智能聊天机器人
作者:小安和小编 发布时间:2021-07-21 08:43:40
伴随着自然语言技术和机器学习技术的发展,越来越多的有意思的自然语言小项目呈现在大家的眼前,聊天机器人就是其中最典型的应用,今天小编就带领大家用不到20行代码,运用两种方式搭建属于自己的聊天机器人。
1.神器wxpy库
首先,小编先向大家介绍一下本次运用到的python库,本次项目主要运用到的库有wxpy和chatterbot。
wxpy是在 itchat库 的基础上,通过大量接口优化,让模块变得简单易用,并进行了功能上的扩展。什么是接口优化呢,简单来说就是用户直接调用函数,并输入几个参数,就可以使用了,不需要关心函数的底层实现。
Chatterbot是一个基于机器学习的聊天机器人引擎,基于python编写而成,它可以自可以从已有的对话中进行记忆匹配。
Wxpy因为采用大量的接口集成,所以在使用的时候非常方便,下图是简单的wxpy使用,通过进入交互式界面,可以与指定的好友进行交谈。代码及效果如下图所示:
上述的代码中print_msg函数采用了wxpy库的装饰器,装饰器在这里的作用可以查阅其源码进行查看,主要是用于注册消息的配置。例如print_msg函数,可以将对方的回复消息进行输出。而在手机微信上我们同样看到了双方之间交流,所以从某个层面上来讲,wxpy就是PC端的微信。
2.图灵聊天机器人
下面我们将会实现第一个聊天机器人,该机器人是wxpy内集成的图灵机器人,由于图灵机器人的高度专业,所以制作出来的聊天机器人交流也非常的顺畅。那如何将图灵机器人嵌入到我们的交流中呢?首先我们需要去图灵机器人官网注册得到我们自己的机器人,注册完成后,我们便可以生成图灵机器人,并得到一个api_key,如下图所示:
这个api_key便是我们后续制作聊天机器人的关键。图灵聊天机器人的代码和效果图如下图所示:
由上图右边的聊天记录来看,依托图灵机器人的聊天机器人效果非常的出色,而且还可以进行天气查询等功能。
3.自己训练的聊天机器人
下面我们不依托于图灵机器人,而是依靠ChatterBot来制作一款机器人,这款机器人,虽然效果较上一款性能差距较大,但是它可以训练我们自己的语料库,下面是代码和效果的展示。
由上图可以看出,或许是受制于语料库资源过少,而且也不能够主动上网查询。所以要想使其能够回答和提问基本吻合还需要大量的工作。
难道除了这些我们就没有其它可以做的了吗?当然不是,ChatterBot为我们提供了可以训练的方式,我们可以提供素材来让其进行训练。代码和效果如下图所示:
我们首先定义了一个chatbot,然后将训练数据加入进去,让模型匹配我们的问题,得到训练的结果。
右边的图展示了我们的结果,由结果可以看出,由于我们的训练集中没有“在”这个数据,所以得到的回答很莫名其妙,而对于“你好”和“你叫什么名字?”这两个问题的回答则得到了很完美的答复,这就是加入训练数据集的优势所在。
trainer.train([ "你好", "你好,很高兴认识你", "你叫什么名字?", "我叫chat-robot-2.",])
(训练集的数据)
你也可以加入你想要训练的语料库进行训练,一样会得到不错的效果。有的同学可能会问这是如何训练的呢?答案就在chatterbot的源码里,打开源码我们可以这里的chatbot选择的训练方法是“BestMatch”,也即最匹配方式,从训练的对话中找到最相识的语句,然后根据对话提供回答。
总结
以上所述是小编给大家介绍的不到20行代码用Python做一个智能聊天机器人网站的支持!
来源:http://developer.51cto.com/art/201904/595281.htm
猜你喜欢
- rabbitmq中文翻译的话,主要还是mq字母上:Message Queue,即消息队列的意思。前面还有个rabbit单词,就是兔子的意思,
- asp之家注:作为一个学习asp的爱好者,相信一定接触过session,我们经常使用session来作为会员登录的验证,当然也可以使用COO
- 对模型中的字段进行验证Django模型中的内置字段验证是所有Django字段预定义的默认验证。每个字段都带有来自Django验证器的内置验证
- 本文实例总结了Python实现string字符串连接的方法。分享给大家供大家参考,具体如下:以下基于python 2.7版本,代码片段真实有
- 位运算,赋值状态时异或对应位数1的整形,判断状态则与运算对应位数1的整形。最大用处就是同时判断32位状态,节省存储空间,便于扩展, 
- 近日在学习C++,看到函数指针,由于之前一直搞ASP,所以想ASP里面是否也有这个函数指针的东西,于是翻了翻VBScript手册,没让我失望
- 0. dockerfile命令FROM # 基础镜像,一切从这里开始构建MAINTAINER # 镜像是谁写的,姓名+邮箱RUN# 镜像构建
- 记录应用程序的操作日志可以使用数据库、文本文件、XML文件等。我这里介绍的是使用 XML 文件记录操作日志。我觉得使用 XML 记录操作日志
- 本文实例讲述了python写入xml文件的方法。分享给大家供大家参考。具体分析如下:本范例通过xml模块对xml文件进行写入操作from x
- gonews是基于 go+vue 实现的golang每日新闻浏览与检索平台项目地址: Github线上Demo:GoNews数据来源: Go
- <html><body><table border=1> <? $id=@mssql_connec
- 本篇文章将介绍在 Python 中将 hex 转换为 base64 的方法。使用 Python 中的 codecs 模块将 HEX 转换为
- 谈到用户界面交互总少不了事件,前面一系列文章介绍的鼠标光标、坐标、弹出式提示框等实现的底层其实都是事件处理,只不过matplotlib或其他
- 本文实例讲述了Python爬虫框架Scrapy基本用法。分享给大家供大家参考,具体如下:Xpath<html><head&
- 如下所示:x = file('1.txt','r')print x.tell() #显示当前光标位置x.se
- 本文实例讲述了Python实现阿拉伯数字和罗马数字的互相转换功能。分享给大家供大家参考,具体如下:前面一篇介绍了《Java实现的求解经典罗马
- python的多线程比较鸡肋,优先使用多进程1 基础知识现在的 PC 都是多核的,使用多线程能充分利用 CPU 来提供程序的执行效率。1.1
- poplib模块接收邮件python的poplib模块是用来从pop3收取邮件的,也可以说它是处理邮件的第一步。POP3协议并不复杂,它也是
- 替换print?print怎么了?print 可能是所有学习Python语言的人第一个接触的东西。它最主要的功能就是往控制台 打印一段信息,
- 总的来说视觉设计是一个很大的范畴,囊括了我们身边很多产品的再创作设计,比如工业产品设计,广告设计,新媒体设计,服饰设计,还有我们这里要讨论的