溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用Python編寫一個簡易客服機器人

發(fā)布時間:2021-03-15 17:07:32 來源:億速云 閱讀:928 作者:Leah 欄目:開發(fā)技術(shù)

使用Python編寫一個簡易客服機器人?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

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

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

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è)表.xlsx")
data = data.head(1)
#data

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

運行結(jié)果如下:

使用Python編寫一個簡易客服機器人

2、在問答過程中可以訪問數(shù)據(jù)庫獲取結(jié)果

利用Python中的pymysql包,先對數(shù)據(jù)庫進行連接并使用cursor()方法獲取操作游標。然后分別對發(fā)貨時間、發(fā)貨地、商品單號和商品狀態(tài)進行函數(shù)定義,執(zhí)行相關(guān)sql語句對數(shù)據(jù)庫信息進行提?。?/p>

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

def start_time():#發(fā)貨時間
  starttime_sql = "SELECT START_RIME FROM shopping_informations"
  try:
    cursor.execute(starttime_sql)
    result1 = cursor.fetchall()
    print("親您所購買的寶貝計劃在%s進行發(fā)貨~預(yù)計將會在%s不要著急喲" % result1[0])
  except:
    print("哎呀!機器客服這邊暫時找不到相關(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("親您所購買的寶貝計劃從%s發(fā)出~不要著急喲" % result2[0])
  except:
    print("哎呀!機器客服這邊暫時找不到相關(guān)數(shù)據(jù)嗚嗚嗚~親可以聯(lián)系一下人工客服")
    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("哎呀!機器客服這邊暫時找不到相關(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("親您所購買的寶貝現(xiàn)在在%s中~不要著急喲" % result4[0])
  except:
    print("哎呀!機器客服這邊暫時找不到相關(guān)數(shù)據(jù)嗚嗚嗚~親可以聯(lián)系一下人工客服")
  conn.close()

其中,在函數(shù)定義里加入了try-except異常捕捉部分,當問句發(fā)生錯誤或者在數(shù)據(jù)庫中無法找到對應(yīng)數(shù)據(jù)時,可以讓客戶聯(lián)系人工客服。

3、利用正則表達式對問句進行識別

對于客戶所輸入的問題,用正則表達式對其進行分析識別,選擇相應(yīng)的答案進行回答,當問題超過答案范圍,可以讓客戶聯(lián)系人工客服:

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

最后,定義主體函數(shù),其中每次問答需要休眠1s的時間。因為在實際情景中,客服機器人需要在并發(fā)的情況下實現(xiàn),也就是說存在多人同時使用客服機器人的情況:

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

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

使用Python編寫一個簡易客服機器人

優(yōu)化方向:

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

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI