介绍
使用Python编写一个简易客服机器人?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1,货物信息储存到MySQL数据库中
在现实情景中,购物信息的数据一般会储存到数据库中,方便在进行问答时才访问数据库获取相关信息,可以用Python中的sqlalchemy包把表格导入到MySQL数据库中:
import pymysql import pandas  as pd import sqlalchemy  as sqla 得到sqlalchemy.orm import  sessionmaker import 时间 import 再保险 #导入数据 时间=data pd.read_excel (r" E:/1/研究/大三下/自然语言处理/作业表.xlsx") 时间=data data.head (1) #数据 时间=db sqla.create_engine (& # 39; mysql + pymysql://根:* * * * * * @localhost/lsq ? charset=use utf8 # 39;) #连接数据库(密码马赛克一下) #导入表格到数据库中 data.to_sql (& # 39; shopping_informations& # 39;, db,指数=False, if_exists=& # 39;添加# 39;)
运行结果如下:
2,在问答过程中可以访问数据库获取结果
利用Python中的pymysql包,先对数据库进行连接并使用光标()方法获取操作游标。然后分别对发货时间,发货地,商品单号和商品状态进行函数定义,执行相关sql语句对数据库信息进行提取:
conn =, pymysql.connect (“localhost",“root",“* * * * * *“,“lsq") # *为密码 时间=cursor conn.cursor () def start_time(): #发货时间 starttime_sql =,才能“SELECT START_RIME 得到shopping_informations" 尝试才能: ,,,cursor.execute (starttime_sql) ,,,result1 =, cursor.fetchall () ,,,print(“亲您所购买的宝贝计划在% s进行发货~预计将会在% s不要着急哟,,%,result1[0])编写此表达式 除了才能: ,,,print(“哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服“) ,,,conn.close () def start_local(): #发货地 startlocal_sql =,才能“SELECT START_LOCAL 得到shopping_informations" 尝试才能: ,,,cursor.execute (startlocal_sql) ,,,result2 =, cursor.fetchone () ,,,print(“亲您所购买的宝贝计划从% s发出~不要着急哟,,%,result2 [0]) 除了才能: ,,,print(“哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服“) ,,,conn.close () ,, def ID(): #商品单号 id_sql =,才能“SELECT ID 得到shopping_informations" 尝试才能: ,,,cursor.execute (id_sql) ,,,result3 =, cursor.fetchone () ,,,print(“亲您所购买的宝贝单号是% s", %, result3 [0]) 除了才能: ,,,print(“哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服“) ,,,conn.close () def 状态():#商品状态 state_sql =,才能“SELECT STATE 得到shopping_informations" 尝试才能: ,,,cursor.execute (state_sql) ,,,result4 =, cursor.fetchone () ,,,print(“亲您所购买的宝贝现在在% s中~不要着急哟,,%,result4 [0]) 除了才能: ,,,print(“哎呀!机器客服这边暂时找不到相关数据呜呜呜~亲可以联系一下人工客服“) conn.close才能()
其中,在函数定义里加入了try-except异常捕捉部分,当问句发生错误或者在数据库中无法找到对应数据时,可以让客户联系人工客服。
3,利用正则表达式对问句进行识别
对于客户所输入的问题,用正则表达式对其进行分析识别,选择相应的答案进行回答,当问题超过答案范围,可以让客户联系人工客服:
str1 =,““ def answer_robot (str1): if 才能;re.search(" # 39;。*快递(. *)? & # 39;,str1): #涉及到快递公司的问题 ,,,str2 =,“亲!我们店统一默认发百世汇通,按仓择优分配快递,不能指定哟~请谅解!“ elif 才能;re.search(" # 39;。*状态(. *)? & # 39;,str1): #涉及到商品状态的问题 ,,,str2 =,状态() elif 才能;re.search (" # 39; (\ w) ?(编号|单号|货号]\ w # 39;, str1): #涉及到商品单号的问题 ,,,str2 =, ID () elif 才能;re.search (, " # 39; (\ w) ?(哪里|发货地]\ w # 39;, str1): #涉及到商品发货地的问题 ,,,str2 =, start_local () elif 才能;re.search (, " # 39; (\ w) ?[时间|时候]\ w # 39;, str1): #涉及到商品发货时间的问题 ,,,str2 =, start_time () 其他的才能: ,,,str2 =,“呜呜呜问题太复杂啦!建议亲找人工姐姐哟~“ return 才能str2使用Python编写一个简易客服机器人