Python模拟简易版淘宝客服机器⼈的⽰例代码
对于⽤Python制作⼀个简易版的淘宝客服机器⼈,⼤概思路是:⾸先从数据库中⽤sql语句获取相关数据信息并将其封装成函数,然后定义机器问答的主体函数,对于问题的识别可以利⽤正则表达式来进⾏分析,结合现实情况选择答案,最后在执⾏时可以设置循环语句,并且在每次回答间隔1s⽅便进⼀步做并发处理作为未来优化⽅向。从以下⼏个⽅⾯分别实现:
1、货物信息储存到MySQL数据库中
在现实情景中,购物信息的数据⼀般会储存到数据库中,⽅便在进⾏问答时才访问数据库获取相关信息,可以⽤Python中的sqlalchemy包把表格导⼊到MySQL数据库中:
import pymysql
python新手代码示例
import pandas as pd
import sqlalchemy as sqla
import sessionmaker
import time
import re
#导⼊数据
data = pd.read_excel(r"E:/1/Study/⼤三下/⾃然语⾔处理/作业表.xlsx")
data = data.head(1)
#data
db = ate_engine('mysql+pymysql://root:******@localhost/lsq?charset=utf8')#连接数据库(密码马赛克⼀下)
#导⼊表格到数据库中
<_sql('shopping_informations',db,index=False,if_exists='append')
运⾏结果如下:
2、在问答过程中可以访问数据库获取结果
利⽤Python中的pymysql包,先对数据库进⾏连接并使⽤cursor()⽅法获取操作游标。然后分别对发货时间、发货地、商品单号和商品状态进⾏函数定义,执⾏相关sql语句对数据库信息进⾏提取:
conn = t("localhost","root","******","lsq")#*为密码
cursor = conn.cursor()
def start_time():#发货时间
starttime_sql = "SELECT START_RIME FROM shopping_informations"
try:
result1 = cursor.fetchall()
print("亲您所购买的宝贝计划在%s进⾏发货~预计将会在%s不要着急哟" % result1[0])
except:
print("哎呀!机器客服这边暂时不到相关数据呜呜呜~亲可以联系⼀下⼈⼯客服")
conn.close()
def start_local():#发货地
startlocal_sql = "SELECT START_LOCAL FROM shopping_informations"
try:
result2 = cursor.fetchone()
print("亲您所购买的宝贝计划从%s发出~不要着急哟" % result2[0])
except:
print("哎呀!机器客服这边暂时不到相关数据呜呜呜~亲可以联系⼀下⼈⼯客服")
conn.close()
def ID():#商品单号
id_sql = "SELECT ID FROM shopping_informations"
try:
result3 = cursor.fetchone()
print("亲您所购买的宝贝单号是%s" % result3[0])
except:
print("哎呀!机器客服这边暂时不到相关数据呜呜呜~亲可以联系⼀下⼈⼯客服")
conn.close()
def state():#商品状态
state_sql = "SELECT STATE FROM shopping_informations"
try:
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模拟简易版淘宝客服机器⼈的⽰例代码的⽂章就介绍到这了,更多相关Python 淘宝客服机器⼈内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。