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í)才訪(fǎng)問(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é)果如下:
2、在問(wèn)答過(guò)程中可以訪(fǎng)問(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)行提?。?/p>
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)買(mǎi)的寶貝計(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)買(mǎi)的寶貝計(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)買(mǎi)的寶貝單號(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)買(mǎi)的寶貝現(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í),可以讓客戶(hù)聯(lián)系人工客服。
3、利用正則表達(dá)式對(duì)問(wèn)句進(jìn)行識(shí)別
對(duì)于客戶(hù)所輸入的問(wèn)題,用正則表達(dá)式對(duì)其進(jìn)行分析識(shí)別,選擇相應(yīng)的答案進(jìn)行回答,當(dāng)問(wèn)題超過(guò)答案范圍,可以讓客戶(hù)聯(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ì)話(huà):") str3 = answer_robot(str1) time.sleep(1) print(str3)
利用PowerShell運(yùn)行改py文件,結(jié)果如下圖(ctrl+c終止程序):
優(yōu)化方向:
1、進(jìn)一步利用1s間隔時(shí)間做并發(fā)處理,模擬現(xiàn)實(shí)生活中多人同時(shí)使用客服機(jī)器人
2、進(jìn)一步優(yōu)化正則表達(dá)式的書(shū)寫(xiě),從結(jié)果截圖可以看出在一些回答上機(jī)器人在選擇答案時(shí)會(huì)出現(xiàn)一定的錯(cuò)誤,精確度不高
3、分別用sql語(yǔ)句獲取不同購(gòu)物信息會(huì)有些累贅,可以直接獲取整個(gè)數(shù)據(jù)庫(kù)的購(gòu)物表,再利用pd中的dataframe來(lái)接受并提取其中的信息
到此這篇關(guān)于Python模擬簡(jiǎn)易版淘寶客服機(jī)器人的示例代碼的文章就介紹到這了,更多相關(guān)Python 淘寶客服機(jī)器人內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python實(shí)戰(zhàn)整活之聊天機(jī)器人
- python通過(guò)Seq2Seq實(shí)現(xiàn)閑聊機(jī)器人
- Python如何實(shí)現(xiàn)機(jī)器人聊天
- python操作微信自動(dòng)發(fā)消息的實(shí)現(xiàn)(微信聊天機(jī)器人)
- python使用自定義釘釘機(jī)器人的示例代碼
- Python使用20行代碼實(shí)現(xiàn)微信聊天機(jī)器人
- Python實(shí)現(xiàn)發(fā)票自動(dòng)校核微信機(jī)器人的方法
- Python第三方包之DingDingBot釘釘機(jī)器人
- python爬蟲(chóng)之生活常識(shí)解答機(jī)器人
相關(guān)文章
Django的基本運(yùn)用之Django垃圾分類(lèi)詳解
大家都知道Django 是一個(gè)由 Python 編寫(xiě)的一個(gè)開(kāi)放源代碼的 Web 應(yīng)用框架。接下來(lái)通過(guò)本文給大家介紹Django的基本運(yùn)用之Django垃圾分類(lèi)詳解,感興趣的朋友一起看看吧2021-09-09python實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建類(lèi)的方法分析
這篇文章主要介紹了python實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建類(lèi)的方法,結(jié)合實(shí)例形式分析了Python動(dòng)態(tài)創(chuàng)建類(lèi)的原理、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下2019-06-06python 使用pandas同時(shí)對(duì)多列進(jìn)行賦值
這篇文章主要介紹了python 使用pandas同時(shí)對(duì)多列進(jìn)行賦值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03Python?dateutil庫(kù)簡(jiǎn)化日期時(shí)間處理利器使用場(chǎng)景實(shí)踐
在Python中,處理日期和時(shí)間是常見(jiàn)的任務(wù)之一,dateutil庫(kù)是Python標(biāo)準(zhǔn)庫(kù)中datetime模塊的擴(kuò)展,提供了許多方便的工具和函數(shù),簡(jiǎn)化了日期和時(shí)間的操作2023-12-12Python通過(guò)requests模塊實(shí)現(xiàn)抓取王者榮耀全套皮膚
只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不如實(shí)踐帶來(lái)的提升快,只有在實(shí)例中才能獲得能力的提升,本篇文章手把手帶你用Python實(shí)現(xiàn)抓取王者榮耀全套皮膚,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-10-10python中asyncore異步模塊的實(shí)現(xiàn)
本文主要介紹了python中asyncore異步模塊的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01flask框架實(shí)現(xiàn)修改密碼和免密登錄功能
flask是python web開(kāi)發(fā)的常用框架之一。本文將講述flask如何實(shí)現(xiàn)修改密碼和免密登錄功能2021-05-05使用Python進(jìn)行SSH和文件傳輸實(shí)現(xiàn)方法實(shí)例
這篇文章主要為大家介紹了使用Python進(jìn)行SSH和文件傳輸實(shí)現(xiàn)方法實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12