Python模擬簡(jiǎn)易版淘寶客服機(jī)器人

對(duì)于用Python制作一個(gè)簡(jiǎn)易版的淘寶客服機(jī)器人乘瓤,大概思路是:首先從數(shù)據(jù)庫(kù)中用sql語(yǔ)句獲取相關(guān)數(shù)據(jù)信息并將其封裝成函數(shù),然后定義機(jī)器問(wèn)答的主體函數(shù),對(duì)于問(wèn)題的識(shí)別可以利用正則表達(dá)式來(lái)進(jìn)行分析泉粉,結(jié)合現(xiàn)實(shí)情況選擇答案,最后在執(zhí)行時(shí)可以設(shè)置循環(huán)語(yǔ)句榴芳,并且在每次回答間隔1s方便進(jìn)一步做并發(fā)處理作為未來(lái)優(yōu)化方向嗡靡。從以下幾個(gè)方面分別實(shí)現(xiàn):

1、貨物信息儲(chǔ)存到MySQL數(shù)據(jù)庫(kù)中

在現(xiàn)實(shí)情景中翠语,購(gòu)物信息的數(shù)據(jù)一般會(huì)儲(chǔ)存到數(shù)據(jù)庫(kù)中叽躯,方便在進(jìn)行問(wèn)答時(shí)才訪問(wèn)數(shù)據(jù)庫(kù)獲取相關(guān)信息,可以用Python中的sqlalchemy包把表格導(dǎo)入到MySQL數(shù)據(jù)庫(kù)中:

import pymysql
import pandas as pd
import sqlalchemy as sqla
from sqlalchemy.orm import sessionmaker
import time
import re

#導(dǎo)入數(shù)據(jù)
data = pd.read_excel(r"E:/1/Study/大三下/自然語(yǔ)言處理/作業(yè)表.xlsx")
data = data.head(1)
#data

db = sqla.create_engine('mysql+pymysql://root:******@localhost/lsq?charset=utf8')#連接數(shù)據(jù)庫(kù)(密碼馬賽克一下)
#導(dǎo)入表格到數(shù)據(jù)庫(kù)中
data.to_sql('shopping_informations',db,index=False,if_exists='append')

運(yùn)行結(jié)果如下:


數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)

2肌括、在問(wèn)答過(guò)程中可以訪問(wèn)數(shù)據(jù)庫(kù)獲取結(jié)果

利用Python中的pymysql包点骑,先對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接并使用cursor()方法獲取操作游標(biāo)酣难。然后分別對(duì)發(fā)貨時(shí)間、發(fā)貨地黑滴、商品單號(hào)和商品狀態(tài)進(jìn)行函數(shù)定義憨募,執(zhí)行相關(guān)sql語(yǔ)句對(duì)數(shù)據(jù)庫(kù)信息進(jìn)行提取:

conn = pymysql.connect("localhost","root","******","lsq")#*為密碼
cursor = conn.cursor()

def start_time():#發(fā)貨時(shí)間
    starttime_sql = "SELECT START_RIME FROM shopping_informations"
    try:
        cursor.execute(starttime_sql)
        result1 = cursor.fetchall()
        print("親您所購(gòu)買的寶貝計(jì)劃在%s進(jìn)行發(fā)貨~預(yù)計(jì)將會(huì)在%s不要著急喲" % result1[0])
    except:
        print("哎呀袁辈!機(jī)器客服這邊暫時(shí)找不到相關(guān)數(shù)據(jù)嗚嗚嗚~親可以聯(lián)系一下人工客服")
        conn.close()

def start_local():#發(fā)貨地
    startlocal_sql = "SELECT START_LOCAL FROM shopping_informations"
    try:
        cursor.execute(startlocal_sql)
        result2 = cursor.fetchone()
        print("親您所購(gòu)買的寶貝計(jì)劃從%s發(fā)出~不要著急喲" % result2[0])
    except:
        print("哎呀菜谣!機(jī)器客服這邊暫時(shí)找不到相關(guān)數(shù)據(jù)嗚嗚嗚~親可以聯(lián)系一下人工客服")
        conn.close()
      
def ID():#商品單號(hào)
    id_sql = "SELECT ID FROM shopping_informations"
    try:
        cursor.execute(id_sql)
        result3 = cursor.fetchone()
        print("親您所購(gòu)買的寶貝單號(hào)是%s" % result3[0])
    except:
        print("哎呀!機(jī)器客服這邊暫時(shí)找不到相關(guān)數(shù)據(jù)嗚嗚嗚~親可以聯(lián)系一下人工客服")
        conn.close()

def state():#商品狀態(tài)
    state_sql = "SELECT STATE FROM shopping_informations"
    try:
        cursor.execute(state_sql)
        result4 = cursor.fetchone()
        print("親您所購(gòu)買的寶貝現(xiàn)在在%s中~不要著急喲" % result4[0])
    except:
        print("哎呀晚缩!機(jī)器客服這邊暫時(shí)找不到相關(guān)數(shù)據(jù)嗚嗚嗚~親可以聯(lián)系一下人工客服")
    conn.close() 

其中尾膊,在函數(shù)定義里加入了try-except異常捕捉部分,當(dāng)問(wèn)句發(fā)生錯(cuò)誤或者在數(shù)據(jù)庫(kù)中無(wú)法找到對(duì)應(yīng)數(shù)據(jù)時(shí)荞彼,可以讓客戶聯(lián)系人工客服冈敛。

3、利用正則表達(dá)式對(duì)問(wèn)句進(jìn)行識(shí)別

對(duì)于客戶所輸入的問(wèn)題鸣皂,用正則表達(dá)式對(duì)其進(jìn)行分析識(shí)別抓谴,選擇相應(yīng)的答案進(jìn)行回答,當(dāng)問(wèn)題超過(guò)答案范圍寞缝,可以讓客戶聯(lián)系人工客服:

str1 = ""
def answer_robot(str1):
    if re.search(r'.*快遞(.*)?',str1):#涉及到快遞公司的問(wèn)題
        str2 = "親癌压!我們店統(tǒng)一默認(rèn)發(fā)百世匯通,按倉(cāng)擇優(yōu)分配快遞荆陆,不能指定喲~請(qǐng)諒解滩届!"
    elif re.search(r'.*狀態(tài)(.*)?',str1):#涉及到商品狀態(tài)的問(wèn)題
        str2 = state()
    elif re.search(r'(\w)?[編號(hào)|單號(hào)|貨號(hào)]\w',str1):#涉及到商品單號(hào)的問(wèn)題
        str2 = ID()
    elif re.search( r'(\w)?[哪里|發(fā)貨地]\w',str1):#涉及到商品發(fā)貨地的問(wèn)題
        str2 = start_local()
    elif re.search( r'(\w)?[時(shí)間|時(shí)候]\w',str1):#涉及到商品發(fā)貨時(shí)間的問(wèn)題
        str2 = start_time()
    else:
        str2 = "嗚嗚嗚問(wèn)題太復(fù)雜啦!建議親找人工姐姐喲~"
    return str2

最后被啼,定義主體函數(shù)丐吓,其中每次問(wèn)答需要休眠1s的時(shí)間。因?yàn)樵趯?shí)際情景中趟据,客服機(jī)器人需要在并發(fā)的情況下實(shí)現(xiàn),也就是說(shuō)存在多人同時(shí)使用客服機(jī)器人的情況:

def main():
    while True:#可以循環(huán)多次使用(ctrl+c結(jié)束程序)
        str1 = input("輸入對(duì)話:")
        str3 = answer_robot(str1)
        time.sleep(1)
        print(str3)

利用PowerShell運(yùn)行改py文件术健,結(jié)果如下圖(ctrl+c終止程序):


運(yùn)行程序結(jié)果

優(yōu)化方向:

1汹碱、進(jìn)一步利用1s間隔時(shí)間做并發(fā)處理,模擬現(xiàn)實(shí)生活中多人同時(shí)使用客服機(jī)器人
2荞估、進(jìn)一步優(yōu)化正則表達(dá)式的書寫咳促,從結(jié)果截圖可以看出在一些回答上機(jī)器人在選擇答案時(shí)會(huì)出現(xiàn)一定的錯(cuò)誤,精確度不高
3勘伺、分別用sql語(yǔ)句獲取不同購(gòu)物信息會(huì)有些累贅跪腹,可以直接獲取整個(gè)數(shù)據(jù)庫(kù)的購(gòu)物表,再利用pd中的dataframe來(lái)接受并提取其中的信息

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末飞醉,一起剝皮案震驚了整個(gè)濱河市冲茸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖轴术,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件难衰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡逗栽,警方通過(guò)查閱死者的電腦和手機(jī)盖袭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)彼宠,“玉大人鳄虱,你說(shuō)我怎么就攤上這事∑鞠浚” “怎么了拙已?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)想罕。 經(jīng)常有香客問(wèn)我悠栓,道長(zhǎng),這世上最難降的妖魔是什么按价? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任惭适,我火速辦了婚禮,結(jié)果婚禮上楼镐,老公的妹妹穿的比我還像新娘癞志。我一直安慰自己,他們只是感情好框产,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布凄杯。 她就那樣靜靜地躺著,像睡著了一般秉宿。 火紅的嫁衣襯著肌膚如雪戒突。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天描睦,我揣著相機(jī)與錄音膊存,去河邊找鬼。 笑死忱叭,一個(gè)胖子當(dāng)著我的面吹牛隔崎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播韵丑,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼爵卒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了撵彻?” 一聲冷哼從身側(cè)響起钓株,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤实牡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后享幽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铲掐,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年值桩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摆霉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奔坟,死狀恐怖携栋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咳秉,我是刑警寧澤婉支,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站澜建,受9級(jí)特大地震影響向挖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜炕舵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一何之、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咽筋,春花似錦溶推、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至睹耐,卻和暖如春辐赞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背硝训。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工占拍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捎迫。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像表牢,于是被迫代替她去往敵國(guó)和親窄绒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容