对于用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模拟简易版淘宝客服机器人的更多相关文章

  1. 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 前台页面

    首先来看一下我已经实现的效果图: 消费者页面:(本篇随笔) (1)会显示店主的头像 (2)当前用户发送信息显示在右侧,接受的信息,显示在左侧 店主或客服页面:(下一篇随笔) (1)在左侧有一个列表 , ...

  2. 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 前台页面

    首先来看一下我已经实现的效果图: 消费者页面:(本篇随笔) (1)会显示店主的头像 (2)当前用户发送信息显示在右侧,接受的信息,显示在左侧 店主或客服页面:(下一篇随笔) (1)在左侧有一个列表 , ...

  3. 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 后台页面

    在上一篇随笔中,我们已经看了如何实现前台的对话功能:前台我限定了店主只有一人,店铺只有一个,所有比较单一,但后台就不一样了,而后台更像是我们常见的聊天软件:当然,前台也应该实现这种效果,但原理懂了,可 ...

  4. 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 后台页面

    在上一篇随笔中,我们已经看了如何实现前台的对话功能:前台我限定了店主只有一人,店铺只有一个,所有比较单一,但后台就不一样了,而后台更像是我们常见的聊天软件:当然,前台也应该实现这种效果,但原理懂了,可 ...

  5. 屏蔽全部统计代码(51.la cnzz 百度统计 谷歌分析师adsense、屏蔽淘宝客广告代码)的方法

    支持百度统计 .51.la统计.cnzz统计.51yes统计.谷歌分析师.阿里妈妈淘宝客广告.chinaz弹窗.假设有很多其它的须要屏蔽的,欢迎联系 default7#zbphp.com 改动etc的 ...

  6. destoon系统商城加淘宝客按钮方法

    destoon系统很多喜欢运营B2B的站长都在用,其中的商城模块常常被用来做淘宝客,其中的难点是如何把购买按钮做成淘宝客地址,这个问题的修改在论坛上被叫价50元,下面小编把这个实用的方法分享下,希望对 ...

  7. 关于淘宝的数据来源,针对做淘宝客网站的淘宝api调用方法

    上次写了个淘宝返利模式的博客,直接被移除首页,不知道何故啊.可能是真的跟技术不太刮边. 众所周知,能够支撑一个网站运营的最基础不是程序写的多么好.也不是有多么牛X的运营人员,最主要的是数据,如果没有数 ...

  8. 巧用ecshop做淘宝客

    一.第一步 下载文件,可以在http://www.ecshop.com/下载ecshop各个版本的安装包,安装好ECSHOP,然后通过PTF工具下载2个文件到本地进行修改.这个2个文件分别是goods ...

  9. 【淘宝客】根据淘客联盟精选清单(淘宝天猫内部优惠券)随机显示淘宝天猫优惠券dome

    也许大家在生活中经常淘宝看到[淘宝天猫内部优惠券]的网站,或者在微博中经常有博主发券,让大家生活中购物便宜许多,作为一个站长,我们也希望自己的网站也能有这样的一个功能,现在就分享给大家,还是免后台哦. ...

随机推荐

  1. 6. Connection has already been closed 数据库连接被关闭

    生产上Tomcat出现 Connection has already been closed.问题,但是在uat测试是好的! 遇见两次: 1.某个程序dao中执行逻辑异常复杂,有时候需要执行一分多钟, ...

  2. 美团CodeM资格赛第二题

    锦标赛 时间限制:1秒 空间限制:32768K 组委会正在为美团点评CodeM大赛的决赛设计新赛制.比赛有 n 个人参加(其中 n 为2的幂),每个参赛者根据资格赛和预赛.复赛的成绩,会有不同的积分. ...

  3. Keras 报错: Error when checking target: expected dense_4...

    笔者此处是一个回归任务, 最后一层是: ... pred = Dense(1)(x) 在最后一个Dense层前加上x = Flatten()(x)即可.

  4. Pycharm无法import caffe

    这里是首先建立在读者可以在终端导入而无法在Pycharm中导入的情况下的: 参考链接(问题的最后一个回答) 选用了虚拟环境的python作为解释器, 但由于caffe的特殊性, 依然没有导入, 原因就 ...

  5. HTML 5.3

    HTML 5.3 W3C Working Draft, 18 October 2018 https://www.w3.org/TR/html53/ refs https://www.w3.org/TR ...

  6. CSS BEM

    CSS BEM Block, Element, Modifier https://en.bem.info/methodology/quick-start/ BEM /* Block component ...

  7. taro defaultProps

    taro defaultProps https://nervjs.github.io/taro/docs/best-practice.html#给组件设置-defaultprops import Ta ...

  8. 利用Metasploit 打入ThinkPHP内网...

    出品|MS08067实验室(www.ms08067.com) 本文作者:dch(Ms08067实验室 SRSP TEAM小组成员) 一.利用Metasploit进行攻击的流程图   Metasploi ...

  9. 前端监控SDK开发分享

    目录 前言 收集哪些数据 性能 错误 辅助信息 小结 客户端SDK(探针)相关原理和API Web 微信小程序 编写测试用例 单元测试 流程测试 提供Web环境的方式 Mock Web API的方式 ...

  10. java自学第4期——:Scanner类、匿名对象介绍、Random类、ArrayList集合、标准类格式、String类、static静态、Arrays工具类、Math类(1)

    一.Scanner类 1.api简介: 应用程序编程接口 2.Scanner类: 作用:获取键盘输入的数据 位置: java.util.Scanner. 使用:使用成员方法nextInt() 和 ne ...