Python模拟简易版淘宝客服机器人
对于用Python制作一个简易版的淘宝客服机器人,大概思路是:首先从数据库中用sql语句获取相关数据信息并将其封装成函数,然后定义机器问答的主体函数,对于问题的识别可以利用正则表达式来进行分析,结合现实情况选择答案,最后在执行时可以设置循环语句,并且在每次回答间隔1s方便进一步做并发处理作为未来优化方向。从以下几个方面分别实现:
1、货物信息储存到MySQL数据库中
在现实情景中,购物信息的数据一般会储存到数据库中,方便在进行问答时才访问数据库获取相关信息,可以用Python中的sqlalchemy包把表格导入到MySQL数据库中:
import pymysql
import pandas as pd
import sqlalchemy as sqla
from sqlalchemy.orm import sessionmaker
import time
import re
#导入数据
data = pd.read_excel(r"E:/1/Study/大三下/自然语言处理/作业表.xlsx")
data = data.head(1)
#data
db = sqla.create_engine('mysql+pymysql://root:******@localhost/lsq?charset=utf8')#连接数据库(密码马赛克一下)
#导入表格到数据库中
data.to_sql('shopping_informations',db,index=False,if_exists='append')
运行结果如下:

2、在问答过程中可以访问数据库获取结果
利用Python中的pymysql包,先对数据库进行连接并使用cursor()方法获取操作游标。然后分别对发货时间、发货地、商品单号和商品状态进行函数定义,执行相关sql语句对数据库信息进行提取:
conn = pymysql.connect("localhost","root","******","lsq")#*为密码
cursor = conn.cursor()
def start_time():#发货时间
starttime_sql = "SELECT START_RIME FROM shopping_informations"
try:
cursor.execute(starttime_sql)
result1 = cursor.fetchall()
print("亲您所购买的宝贝计划在%s进行发货~预计将会在%s不要着急哟" % result1[0])
except:
print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")
conn.close()
def start_local():#发货地
startlocal_sql = "SELECT START_LOCAL FROM shopping_informations"
try:
cursor.execute(startlocal_sql)
result2 = cursor.fetchone()
print("亲您所购买的宝贝计划从%s发出~不要着急哟" % result2[0])
except:
print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")
conn.close()
def ID():#商品单号
id_sql = "SELECT ID FROM shopping_informations"
try:
cursor.execute(id_sql)
result3 = cursor.fetchone()
print("亲您所购买的宝贝单号是%s" % result3[0])
except:
print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")
conn.close()
def state():#商品状态
state_sql = "SELECT STATE FROM shopping_informations"
try:
cursor.execute(state_sql)
result4 = cursor.fetchone()
print("亲您所购买的宝贝现在在%s中~不要着急哟" % result4[0])
except:
print("哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服")
conn.close()
其中,在函数定义里加入了try-except异常捕捉部分,当问句发生错误或者在数据库中无法找到对应数据时,可以让客户联系人工客服。
3、利用正则表达式对问句进行识别
对于客户所输入的问题,用正则表达式对其进行分析识别,选择相应的答案进行回答,当问题超过答案范围,可以让客户联系人工客服:
str1 = ""
def answer_robot(str1):
if re.search(r'.*快递(.*)?',str1):#涉及到快递公司的问题
str2 = "亲!我们店统一默认发百世汇通,按仓择优分配快递,不能指定哟~请谅解!"
elif re.search(r'.*状态(.*)?',str1):#涉及到商品状态的问题
str2 = state()
elif re.search(r'(\w)?[编号|单号|货号]\w',str1):#涉及到商品单号的问题
str2 = ID()
elif re.search( r'(\w)?[哪里|发货地]\w',str1):#涉及到商品发货地的问题
str2 = start_local()
elif re.search( r'(\w)?[时间|时候]\w',str1):#涉及到商品发货时间的问题
str2 = start_time()
else:
str2 = "呜呜呜问题太复杂啦!建议亲找人工姐姐哟~"
return str2
最后,定义主体函数,其中每次问答需要休眠1s的时间。因为在实际情景中,客服机器人需要在并发的情况下实现,也就是说存在多人同时使用客服机器人的情况:
def main():
while True:#可以循环多次使用(ctrl+c结束程序)
str1 = input("输入对话:")
str3 = answer_robot(str1)
time.sleep(1)
print(str3)
利用PowerShell运行改py文件,结果如下图(ctrl+c终止程序):

优化方向:
1、进一步利用1s间隔时间做并发处理,模拟现实生活中多人同时使用客服机器人
2、进一步优化正则表达式的书写,从结果截图可以看出在一些回答上机器人在选择答案时会出现一定的错误,精确度不高
3、分别用sql语句获取不同购物信息会有些累赘,可以直接获取整个数据库的购物表,再利用pd中的dataframe来接受并提取其中的信息
Python模拟简易版淘宝客服机器人的更多相关文章
- 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 前台页面
首先来看一下我已经实现的效果图: 消费者页面:(本篇随笔) (1)会显示店主的头像 (2)当前用户发送信息显示在右侧,接受的信息,显示在左侧 店主或客服页面:(下一篇随笔) (1)在左侧有一个列表 , ...
- 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 前台页面
首先来看一下我已经实现的效果图: 消费者页面:(本篇随笔) (1)会显示店主的头像 (2)当前用户发送信息显示在右侧,接受的信息,显示在左侧 店主或客服页面:(下一篇随笔) (1)在左侧有一个列表 , ...
- 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 后台页面
在上一篇随笔中,我们已经看了如何实现前台的对话功能:前台我限定了店主只有一人,店铺只有一个,所有比较单一,但后台就不一样了,而后台更像是我们常见的聊天软件:当然,前台也应该实现这种效果,但原理懂了,可 ...
- 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 后台页面
在上一篇随笔中,我们已经看了如何实现前台的对话功能:前台我限定了店主只有一人,店铺只有一个,所有比较单一,但后台就不一样了,而后台更像是我们常见的聊天软件:当然,前台也应该实现这种效果,但原理懂了,可 ...
- 屏蔽全部统计代码(51.la cnzz 百度统计 谷歌分析师adsense、屏蔽淘宝客广告代码)的方法
支持百度统计 .51.la统计.cnzz统计.51yes统计.谷歌分析师.阿里妈妈淘宝客广告.chinaz弹窗.假设有很多其它的须要屏蔽的,欢迎联系 default7#zbphp.com 改动etc的 ...
- destoon系统商城加淘宝客按钮方法
destoon系统很多喜欢运营B2B的站长都在用,其中的商城模块常常被用来做淘宝客,其中的难点是如何把购买按钮做成淘宝客地址,这个问题的修改在论坛上被叫价50元,下面小编把这个实用的方法分享下,希望对 ...
- 关于淘宝的数据来源,针对做淘宝客网站的淘宝api调用方法
上次写了个淘宝返利模式的博客,直接被移除首页,不知道何故啊.可能是真的跟技术不太刮边. 众所周知,能够支撑一个网站运营的最基础不是程序写的多么好.也不是有多么牛X的运营人员,最主要的是数据,如果没有数 ...
- 巧用ecshop做淘宝客
一.第一步 下载文件,可以在http://www.ecshop.com/下载ecshop各个版本的安装包,安装好ECSHOP,然后通过PTF工具下载2个文件到本地进行修改.这个2个文件分别是goods ...
- 【淘宝客】根据淘客联盟精选清单(淘宝天猫内部优惠券)随机显示淘宝天猫优惠券dome
也许大家在生活中经常淘宝看到[淘宝天猫内部优惠券]的网站,或者在微博中经常有博主发券,让大家生活中购物便宜许多,作为一个站长,我们也希望自己的网站也能有这样的一个功能,现在就分享给大家,还是免后台哦. ...
随机推荐
- ajax全局
$.ajaxSetup({ complete: function (xhr) { xhr.promise().done(function (json) { if (json.errorNo == &q ...
- HDU - 4725 The Shortest Path in Nya Graph 【拆点 + dijkstra】
This is a very easy problem, your task is just calculate el camino mas corto en un grafico, and just ...
- JavaScript事件:事件处理模型(冒泡、捕获)、取消冒泡、阻止默认事件
(一)事件处理模型---事件冒泡.捕获 (1)事件冒泡 24 <body> 25 <div class="warpper"> 26 <div clas ...
- 全方位构造免杀 webshell 小结[一]
转载自https://klionsec.github.io/2017/10/11/bypasswaf-for-webshell/ 全方位构造免杀 webshell 小结[一] 前言: 本 ...
- JavaScript var, let, const difference All In One
JavaScript var, let, const difference All In One js var, let, const 区别 All In One 是否存在 hoisting var ...
- OOP & 模块化, 多态, 封装
OOP 面向对象编程 (OOP) 是用抽象方式创建基于现实世界模型的一种编程模式.它使用先前建立的范例,包括模块化,多态和封装几种技术. 在 OOP 中,每个对象能够接收消息,处理数据和发送消息给其他 ...
- WebSocket All In One
WebSocket All In One WebSocket heartbeat WebSocket 心跳检测 ping pong refs xgqfrms 2012-2020 www.cnblogs ...
- linux & node & cli & exit(0) & exit(1)
linux & node & cli & exit(0) & exit(1) exit(0) & exit(1) demo exit(0) === OK exi ...
- DeFi热下的冷思考 NGK以更深层次的方式参与DeFi建设
独具慧眼,深度挖掘DeFi潜力项目 作为早期DeFi的探索者和推动者,NGK在此轮热潮席卷市场前就已经开始构建自己的DeFi生态,独具慧眼的NGK上线了Baccarat流动性挖矿项目,完成了首个由平台 ...
- JMM内存模型相关笔记整理
JMM 内存模型是围绕并发编程中原子性.可见性.有序性三个特征来建立的 原子性:就是说一个操作不能被打断,要么执行完要么不执行,类似事务操作,Java 基本类型数据的访问大都是原子操作,long 和 ...