使用python模拟简单客服机器人

使用python模拟简单客服机器人

文章目录

  • 使用python模拟简单客服机器人
    • 1.安装MYSQL与Navicat
      • 1.1安装教程
      • 1.2数据导入数据库
    • 2.开始搭建机器人
      • 2.1 连接数据库
      • 2.2 索引设置
      • 2.3 信息匹配
      • 2.4 问题关键字匹配
      • 2.5 编写主函数
    • 3.结果展示
    • 4.鼠鼠的一些话

本次案例的背景为拥有一个装载用户基础资料及快递信息的数据表,需要机器人通过表中的索引字段及具体信息,针对用户提出的问题作出正确或有参考价值的回答。

本次案例将通过将数据表导入数据库的方式,用python连接数据库,使用正则表达式使得机器人可以针对用户的问题关键词提取所需信息并回答。

1.安装MYSQL与Navicat

1.1安装教程

开始搭建机器人之前,首先需要保证电脑搭建了MYSQL环境,本文中使用的数据库版本为MYSQL8.0,并且在本文中还使用了Navicat作为便捷操作数据库的软件,用于将csv文件导入数据库的操作。

具体的安装教程可以参考另一位博主,他的教程十分详细且有配套资源,十分适合新手进行学习。此处附上教程地址

[Python进阶(一)(MySQL,Navicat16免费安装)](https://blog.csdn.net/m0_73795841/article/details/127918876?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167800384916800211581487%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167800384916800211581487&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-127918876-null-null.142%5Ev73%5Ewechat,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=navicat16%E6%BF%80%E6%B4%BB&spm=1018.2226.3001.4187)

1.2数据导入数据库

安装完毕后,将准备好的商品信息导入数据库表中进行备用。

在这里插入图片描述

2.开始搭建机器人

2.1 连接数据库

由于机器人在问答时需要根据后台的货物信息数据进行输出,因此在搭建机器人之前应该将python与数据库进行连接,并且使用cursor()获取游标。

import time
import mysql.connector
import remydb = mysql.connector.connect(host="localhost",user="root",password="******",  #此处*号为数据库密码database="zz"
)
cursor = mydb.cursor()

2.2 索引设置

机器人在进行问答时,需要根据某个字段作为索引,以此来提取商品的其它基础信息,常见的有以用户账户名、商品订单号等来作为索引。根据要求,此处使用用户账户名作为索引字段(ACOUNT)。

def user_name() :message = input("请输入您的用户名:")time.sleep(1)cursor = mydb.cursor()if type(message)==int:cursor.execute("SELECT * FROM good WHERE ACCOUNT = "+message)elif type(message)==str:cursor.execute("SELECT * FROM good WHERE ACCOUNT = '"+message+"'")row =  cursor.fetchone()if row==None:print("对不起,系统中没找到您的用户名,请重新核对您的用户名。")user_name()elif row !=None:print(f"您好!尊敬的{message},很高兴为您服务,请问有什么能帮到您的吗?")return rowrow=user_name()

这个函数的作用为,当用户输入自己的用户账号名时,使用游标定位该ID所在行的全部数据,再使用fetchone命令将其全部抓取出来,保存在一个元组row当中,倘若匹配到的row为空,则代表不存在这个账户名,提示错误并让用户再次输入,若匹配到的row不为空则输出欢迎语句。

在这里插入图片描述

2.3 信息匹配

上一个函数中,我们已经成功将用户的账户名作为索引,当用户输入自己的账户名称后,会抓取所有剩余的商品信息保存在row当中:

在这里插入图片描述

接下来可以通过指定元组中的index,提取该用户账号下,指定的商品元素进行匹配,利用正则表达式将其结合成为得体句子回复客户。一下代码为将各类商品信息各自封装为一个函数,在后续客户进行提问时,通过关键词匹配到对应商品信息函数进行数据提取输出。

def start_time():#发货时间if row[6]!=None:print("亲您所购买的宝贝计划在"+str(row[6])+"进行发货~预计将会在"+str(row[7])+"到达,不要着急哟" )else:print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")mydb.close()def ID():#商品单号if row[0]!=None:print("亲您所购买的宝贝单号是"+str(row[0])+"")else:print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")mydb.close()def start_local():#发货地if row[8]!=None:print("亲您所购买的宝贝计划从"+str(row[8])+"发出~不要着急哟")else:print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")mydb.close()def state():#商品状态if row[5]!=None:print("亲您所购买的宝贝现在在"+str(row[5])+"中~不要着急哟")else:print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")mydb.close()def save():#优惠if row[10]!=None:print("亲您所购买的产品有"+str(row[10])+"哦")else:print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")mydb.close()def company():#优惠if row[4]!=None:print("亲您所购买的产品由"+str(row[4])+"派送哦,请耐心等待~")else:print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")mydb.close()def good_name():#名称if row[2]!=None:print("亲您所购买的物品名称为"+str(row[2])+"哦,感谢惠顾~")else:print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")mydb.close()def price():#价格if row[3]!=None:print("亲您所购买的物品价格为"+str(row[3])+"哦,感谢惠顾~")else:print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")mydb.close()def ending():#收货地if row[9]!=None:print("亲您的收货城市为"+str(row[9])+"哦,感谢惠顾~")else:print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")mydb.close()

2.4 问题关键字匹配

首先定义一个空字符串str,用于存放客户输入的问题,再通过写一个问答函数的形式,使用if和else语句,将装载客户问题的字符串str与每种可能的情况进行正则匹配,若匹配上,则跳转至对应函数开始匹配货物信息表,若不匹配,则引导用户转人工客服服务。

str1=""
def answer_robot(str1):if re.search(r'.*快递(.*)?',str1):#涉及到快递公司的问题str2 = company()elif re.search(r'.*发货时间(.*)?',str1):#涉及到商品时间的问题str2 = start_time()elif re.search(r'(\w)?[编号|单号|货号]\w',str1):#涉及到商品单号的问题str2 = ID()elif re.search(r'(\w)?[名称|物品]\w',str1):#涉及到商品名称的问题str2 = good_name()elif re.search(r'(\w)?[价格]\w',str1):#涉及到商品价格的问题str2 = price()elif re.search( r'(\w)?[哪里|发货地]\w',str1):#涉及到商品发货地的问题str2 = start_local()elif re.search(r'.*状态(.*)?',str1):#涉及到商品状态的问题str2 = state()elif re.search(r'.*[优惠](.*)?',str1):#涉及到商品优惠的问题str2 = save()elif re.search(r'.*[7天|无理由](.*)?',str1):#涉及到商品状态的问题str2 = "亲!我们支持7天无理由退货哦~"elif re.search(r'.*[发票](.*)?',str1):#涉及到商品状态的问题str2 = "亲!开发票请留下必要的个人信息哟"elif re.search(r'.*[货到付款](.*)?',str1):#涉及到商品状态的问题str2 = "亲亲!我们暂时不支持货到付款,十分抱歉!"elif re.search(r'.*[花呗](.*)?',str1):#涉及到商品状态的问题str2 = "亲!我们支持花呗付款哦~"else:str2 = "问题太复杂啦!建议转接人工服务哟~"return str2

2.5 编写主函数

主函数的内容为写一个死循环,当客户输入问题时,进行关键词匹配并输出答案,无论成功或者失败,在问题结束后再次让客户输入问题,且每次回答休眠1s时间

def main():while True:#可以循环多次使用(ctrl+c结束程序)str1 = input("请问您有什么疑问么:")str3 = answer_robot(str1)time.sleep(1)print(str3)main()

但此处有一个很大的缺点,需要使用ctrl+c中止程序,后续可以用正则匹配到类似“结束”或者“谢谢”字眼的方式跳出循环来中止程序。

3.结果展示

在这里插入图片描述

4.鼠鼠的一些话

本文是来自一个python萌新的一次小实战案例的纪念,其中还存在着一些纰漏,如若实在需要参考可以优化一下代码中的正则匹配,使得其匹配可以更加准确。<\p>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33650.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于QT实现的在线群聊天

引言&#xff1a;由于自身的喜好和在校时的无聊&#xff0c;就产生了自己使用QT设计一个聊天app的想法。在产生这个想法和实现这些功能的过程中&#xff0c;遇到了很多的困难&#xff0c;但经过查询资料&#xff0c;查看文档等&#xff0c;也解决了这些问题&#xff0c;在自己的…

媲美ChatGPT的Bard你用了吗,看起来还不错!

在这个技术日新月异的时代&#xff0c;人工智能已成为我们生活中不可或缺的一部分。聊天机器人&#xff0c;以其独特的表现形式&#xff0c;备受人们追捧。在这里&#xff0c;笔者要向大家推荐几个不错的聊天机器人网站&#xff0c;其中包括Google Bard。看看他自己怎么模仿某位…

Google Bard使用初体验,与ChatGPT比较到底怎么样

文章目录 Google Bard 介绍如何使用Google bardbard和ChatGPT3.5的区别 本文讲述了Google bard的入门教程和使用技巧&#xff0c;并且与竞争对手ChatGPT进行了一个全方面的比较。这是 Google 不能输的战役&#xff0c;也是全面 AI 的时刻。 Google Bard 介绍 Google Bard已经于…

使用谷歌的kaptcha进行验证码验证

使用谷歌的kaptcha进行验证码验证 我的实现思路 1. jsp页面发出请求到Controller 1. Controller层接收请求去寻找对应的验证码视图 1. 验证码视图层生成验证码 1. 返会给jsp页面进行验证码显示 具体实现 引入jar包 <!--谷歌验证码生成 jar--><dependency><…

谷歌二次验证 Google Authenticator

后台登录要搞令牌&#xff0c;类似于steam令牌、企鹅令牌等等 开启Google的登陆二步验证&#xff08;即Google Authenticator服务&#xff09;后用户登陆时需要输入额外由手机客户端生成的一次性密码。 实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责…

Google验证码Kaptcha的详细过程

使用Google验证码&#xff1a;Kaptcha 1.首先是导入jar包 2.第二步 配置jar包中的KaptchaServlet的路径 <!--配置google的验证码返回一个图片--><servlet><servlet-name>KaptchaServlet</servlet-name><servlet-class>com.google.code.kaptch…

谷歌公开测试Google Bard聊天机器人【无需排队,全面公测】

&#x1f951; Welcome to Aedream同学 s blog! &#x1f951; https://bard.google.com/ 更新&#xff01;&#xff01;&#xff01;&#xff01; bard全面放开了&#xff0c;可以用起来了&#xff0c;只需要满足网络就可以。 缺陷是暂时不支持中文 经过多年的谨慎发展&…

【Google Bard】公测已开始,与文心一言、chatGPT相比如何?

一、Google Bard简介 自从2022年11月30日&#xff0c;openAI开放聊天机器人chatGPT之后&#xff0c;其热度一直居高不下。 openAI公司成立于2015年&#xff0c;成立后不久&#xff0c;微软就对其工作给予了大力支持&#xff0c;包括资金援助、以及提供高性能服务器。 在这些…

读书笔记-别说你懂写网文

作者&#xff1a;千幻冰云 第一节 移动互联网时代的网络文学和商业化写作 1. 读者 读者分两类&#xff0c;一类是付费读者&#xff0c;一类是非付费读者。 2. 收入 决定网络写手收入的指标主要有两个&#xff1a;一是买断千字稿酬&#xff0c;一是读者订阅分成稿酬。 作者的名气…

阅文的IP梦

配图来自Canva可画 近日&#xff0c;阅文集团联合上海科技报最新发布的《2021科幻网文新趋势报告》显示&#xff0c;随着近年来互联网的不断发展&#xff0c;影响到大众生活的方方面面&#xff0c;也包括文学领域。 网文平台的创作者&#xff0c;尤其是年轻创作者的数量开始增…

魔改GPT自动写网文,速度一秒十字,还能给太监作品无限续更 | 开源

博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI 如果一个人只看网文&#xff0c;那会写出来怎样的文字&#xff1f; 看了100G网文后&#xff0c;这个AI模型帮你试了一下。 先来一段自由创作&#xff1a; 乍眼看去很有内味&#xff0c;而且基本是一秒十字甚至更快的生成速度&…

外星生命或智能摆在面前,你能认出来吗?——“梯径”提供的思路

导语 外星生命一定长得像人类吗&#xff1f;最近和你火热聊天的 ChatGPT 有智能和意识吗&#xff1f;当外星智慧生命出现在眼前&#xff0c;即使它们不是我们熟悉的样子&#xff0c;我们能识别出来吗&#xff1f;是否可以用严格的数学形式来定量描述生命和智能的复杂度&#xf…

ai智能混剪批量剪辑软件开发工具|批量视频剪辑开发分享

AI智能批量剪辑系统研发主要涉及以下技术&#xff1a; 1. 视频处理技术&#xff1a;包括视频压缩、格式转换、去水印、稳定性处理等。 2. 视频剪辑技术&#xff1a;包括时间轴编辑、音视频素材分离、剪辑片段拼接等。 3. AI算法技术&#xff1a;包括图像识别、语音识别、自然…

竞彩足球分析小工具

18年世界杯时期&#xff0c;自己写了一个分析足球竞彩的小工具。工具虽然简单&#xff0c;但是可以增加购彩的乐趣。曾经这段代码差一点就丢了&#xff0c;现在拿出来给分享吧&#xff0c;这样就不用担心找不着了。作为一个普通球迷&#xff0c;边看球边买足彩也算是一种非常快…

kaggle比赛:Predict California sales prices(房价预测)

目录 1、比赛介绍&#xff1a;2、导入数据&#xff1a;3、项目构建&#xff1a;特征选择&#xff1a;预处理&#xff1a;训练&#xff1a;模型推理及保存预测结果&#xff1a; 4、上传预测结果到kaggle:5、总结&#xff1a; 本文内容来源于《动手深度学习》一书。跟着沐神做kag…

实际波动率预测:kaggle比赛

实际波动率预测 1. 比赛概述1.1 背景介绍1.2 赛事目标1.3 评估指标和结果提交 2. 数据介绍2.1 book_[train/test].parquet2.2 trade_[train/test].parquet2.3 train.csv2.4 test.csv2.5 sample_submission.csv 3. Optiver提供的[官方帮助文档](https://www.kaggle.com/jiashenl…

[Kaggle比赛] 高频股价预测小结

高频股价预测 文章目录 高频股价预测问题描述问题分析数据分析数据集数据清洗 解决方案数据预处理归一化PricesVolume时间信息对于预测值的处理噪声 模型探索基于LSTM的RNN模型递归神经网络(RNN)长短期记忆&#xff08;LSTM&#xff09;网络模型实现参数调整 卷积神经网络卷积神…

Predict Future Sales 预测未来销量, Kaggle 比赛,LB 0.89896 排名6%

Predict Future Sales 数据分析1. 数据基本处理1.1 读入数据集1.2 基线模型预测1.3 节省存储空间 2. 数据探索2.1 训练集分析 sales_train2.1.1 每件商品的销量2.1.2 每个商店的销量2.1.3 每类商品的销量2.1.4 销量和价格的离群值 2.2 测试集分析2.3 商店特征2.3.1 商店信息清洗…

世界杯押注还得看技术流,这个预测AI把赔率也算上了

胡澎 发自 凹非寺 量子位 报道 | 公众号 QbitAI 世界杯小组赛将收官&#xff0c;你还依然信AI吗&#xff1f; 冷门频出&#xff0c;黑马击败豪强。不少AI模型始料未及。 到底还能不能愉快找到科学规律&#xff1f;或者说足球比赛乃至其他竞技体育赛事&#xff0c;数据科学家在A…

足球大数据预测实战之高胜率盈亏条件验证及优化算法

上周接到一位老用户&#xff0c;之前为他做过数据验证&#xff0c;给出了组合条件下的胜率回查&#xff0c;结果有些难看啊。这期主要介绍常用人工智能算法中在足球预测中的应用&#xff0c;以及数据验证后的实际效果。 由上图为用户依据条件查证后的比赛场次和概率统计。可以看…