查看原文
其他

使用Python制作自动聊天机器人

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:王   彤,中南财经政法大学统计与数学学院

本文编辑:张孟晗

技术总编:陈   鼎


Stata&Python云端课程来啦!

       为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程Stata文本分析正则表达式网络爬虫基本字符串课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~


引论

随着人工智能的不断发展,自动问答系统因为其成本较低,回答也比较准确高效,成为了一种发展趋势。我们耳熟能详的Siri,小爱同学等其实都属于自动问答系统,甚至一些企业采用了智能问答的机器人代替了人工客服。今天,我们介绍两种方式制作自己的自动聊天机器人。


访问图灵机器人API

图灵机器人是一个非常专业的人工智能机器人开放平台,用户注册后可以创建机器人基于平台语义理解、深度学习等核心技术实现自动问答功能,而且其提供了API接入功能,实现开发者的简单灵活调用。详细介绍请查看官网链接https://www.kancloud.cn/turing/www-tuling123-com/718227调用方式也比较简单,将问题,apikey等关键参数以字典的形式传入,以post形式对接口地址发起请求。这里做一个简单的示例。
import requestsimport json
url = 'http://openapi.tuling123.com/openapi/api/v2'headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36",}
text = input('请输入想要询问的问题:')commit_data = { "reqType":0, "perception": { "inputText": { "text": text }, "inputImage": { "url": "imageUrl" }, "selfInfo": { "location": { "city": "北京", "province": "北京", "street": "信息路" } } }, "userInfo": { "apiKey": "秘钥", "userId": "用户ID" }}
# 处理post的表单数据commit_data_str_utf8 = json.dumps(commit_data).encode('utf8')# 发送请求response = requests.post(url=url,headers=headers, data=commit_data_str_utf8).json()print(response["results"][0]["values"]["text"])
结果展示如下,发现回答还是比较准确的,而且还提供了一些网络查询的功能。

使用以上方式调用API,每一道问题需要运行一遍程序,效率不是很高,我们可以将其封装成一个函数,使用tkinter工具包进行可视化。


基于Chatterbot制作聊天机器人

Chatterbot是基于Python实现的,基于一系列规则和机器学习算法实现的聊天机器人框架,其使用比较简单,但是需要大量的语料进行训练。原理主要是当用户给到一个输入,模型会对输入经过一定的预处理,在语料库中寻找和输入最接近的一句话,并且在语料库中返回对问题最可信的回答。
使用之前首先进行chatterbot库的安装。pip install chatterbot
本文从京东商城爬取了一部分问答文本,将文本转换为列表,用作算法模型的输入。

接下来,使用这些问答语料训练聊天机器人。首先需要创建一个ChatBot对象,其中可以对机器人的名字、适配器等属性进行赋值,接下来是训练模块,本文主要是使用ListTrainer方法进行训练,训练的输入是问答的文本形成的对话列表,测试时针对提问的问题,模型会遍历语料库,寻找出现的文本或相似性最高的文本,并为文本寻找回答语句。
from chatterbot import ChatBotfrom chatterbot.trainers import ListTrainer
bot = ChatBot('mybot')trainer = ListTrainer(bot)trainer.train(train_list)
当程序运行说明模型正在训练,训练进度条达到100%,说明模型已经训练完毕,接下来可以进行测试,测试结果如下。

因为输入的语料主要是对手机的问答信息,所以说针对手机的问答问题还是比较准确。get_response不仅可以返回机器人匹配的回答文本,还可以返回回答语句的confidence(取值范围0-1,数值越接近1说明可信度越高)。

以上就是关于关于使用Python创建简易的问答机器人的步骤,大家赶快动手尝试一下吧!

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。



腾讯课堂课程二维码








            


 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!











往期推文推

         fillin一下,平衡回来~

         order命令——快速改变变量顺序的利器          Ajax应用场景——以获取雪球网港股代码及公司名称为例

         播放列表中的歌单排行 

        在Stata中轻松运用program编写命令

         Meta Analysis in Stata17      

芒果TV视频弹幕爬取之《我在他乡挺好的》

Stata中的判断神器——confirm命令

cngdf——名义GDP与实际GDP之间的摆渡船

最近《扫黑风暴》有点火爆!我从豆瓣评论中发现了这些……

随机森林-Random Forest 

复原之神--preserve&restore

         合并,“纵”享新丝滑:frameappend & xframeappend
什么是全局配置项?|从零开始的Pyecharts(二)帮你拿下数据可视化|从零开始的Pyecharts 

Stata助力疫情打卡管理——是谁没有接龙呢?

这十年,《金融研究》的编委和读者偏爱哪些研究话题和文章?

【案例展示】Python与数据库交互

学好这一手,英语词典常在手 

玩转Stata中的数学函数

用spmap看中国空气质量

戳穿围城面具:安利&劝退一个专业

走进图文并茂的攻略世界 

玩转word文档“大变身”——wordconvert

数据读入|一文读懂用Stata读入不同类型的数据

简述递归

OpenCV库——轻松更换证件照背景色

800万年薪!还有谁?!

千古伤心词人,词伤几何?

去哪儿网攻略爬取——跟我一起去大理吧

"有你才有团"——Stata爬取王者荣耀英雄海报

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存