Categories
程式開發

攜程度假智能客服機器人背後是這麼玩的


隨著人工智能的發展,人機交互技術愈發成熟,應用場景也越來越多。智能客服是人機交互在客服領域的一個應用,服務於客人以及相關的客服人員。本文將介紹智能客服在旅遊場景下的主要技術和應用。

當前度假的智能客服主要用於C端(客戶端)面向客人,以及客服端輔助客服的兩個角色。

面向客服端的是智能客服助手,用於對話窗口的側邊欄,提示客服人員當前客人問題的答案,客服人員可視情況來採納;而面向C端的智能客服則是直接服務於客人,回答客人問題。

智能客服又分為單輪問答的QA Bot和多輪對話的Task Bot,在攜程的旅遊場景下,以多輪對話的Task Bot居多。一般多輪對話的智能客服系統會切分為以下幾個模塊:客人的問題(Query)進來後首先經過NLU模塊抽象化為客人的意圖(intent)以及關鍵信息槽位(slot),意圖及槽位傳給DM模塊後,經過DST、DPL、NLG模塊返回答案。

  • NLU(Nature Language Understand 自然語言理解),通過模型或規則的方式獲取客人的意圖和槽位;
  • DST(Dialog State Tracking 對話狀態追踪)存儲對話狀態,包括每一輪對話的意圖以及已經抽取到的槽位信息、歷史機器人的行為;
  • DPL(Dialogue Policy Learning對話策略選取),DPL根據DST傳輸的內容決策機器人在該輪的行為;

攜程度假智能客服機器人背後是這麼玩的 1

一、NLU

NLU模塊基礎功能是獲取客人的問題的意圖及槽位信息,在業務比較複雜的場景,相對應客人可能問的問題維度也會很複雜。如果答案涉及的條件很多的情況,往往單輪的QA無法很好的解決客人問題。因此在度假業務的場景下,多輪次的Task Bot會佔大多數。

1.1 錯別字糾正

原始語句中難免會出現錯字,錯字可能會改變最終輸出的答案。在識別意圖之前首先通過糾錯模塊對錯別字進行糾正。

攜程度假智能客服機器人背後是這麼玩的 2

兼容速度和準確率考慮,糾正分為規則部分和模型部分,度假業務中涉及到的地點比較多,在規則部分就能夠覆蓋大部分錯別字的情況。模型部分首先會經過一個CRF模型輸出字級別存在錯誤的可能性,生成候選集後,通過語言模型計算候選集句子的置信度,重排序得到最終糾正的結果。

攜程度假智能客服機器人背後是這麼玩的 3

  • 檢查錯誤模型 $M_c$,主要使用了五種特徵向量連接後進入Bi-LSTM-ATT-CRF模型,得到對每個字是否錯誤的判斷。
  • 語言模型 $M_l$ 計算候選集替換為該字的情況在語言模型內的得分,文本轉為特徵向量後經兩層向前和後向前的Transformer,最後全連接計算softmax。

1.2 意圖識別

意圖實質上是對客人問題的抽象化,比如常見的客人問及“這個產品多少錢?”,可轉換為“詢問價格”意圖。而在直接服務客人的C端上,對回答答案準確率有較高的要求,高質量的服務背後首先是高準確率,而且通常在設計意圖前期會存在意圖訓練語料不足的問題,因此一個高準確率並且弱監督的意圖識別模型非常重要。

意圖識別模型

攜程度假智能客服機器人背後是這麼玩的 4

意圖識別模型整體採用上圖的類似matching network框架,每個意圖會有一個類別表示$L_i$,新的query經計算獲得其句向量$q_j$,通過計算和每個類別的相似度得到該客人問題的意圖。

當前的意圖識別模型,相比於傳統的文本分類模型,準確率更高,標註量更少,同時更方便遷移到多意圖的情景。

在訓練階段,共有已知C個類別,每個類別N個樣本,語句 ${s_{ij}}{i=1,dots C,j=1dots N}$ 經特徵向量經過Bi-LSTM層後再通過Transformer-Attention把一句話映射為一條向量 $e{ij}$,最後經膠囊網絡獲得每個類別的類別向量 $l_i$。每個訓練語句 $v_j$ 得到句向量 $q_j$ 後,再通過Bilinear-Function-Sigmoid計算 $q_j$ 與 $l_i$ 的相似度得分,最後採用二分類的對數似然損失函數計算損失。

模糊意圖的處理

我們研究表明,客人在和機器人對話及與人對話的時候一些行為習慣是不同的。在面對機器人的時候,客人傾向於把機器人作為一個“搜索引擎”,常常輸入關鍵詞來獲得回答,但關鍵詞的信息不完整,通過模型或模板都無法返回切合的意圖。針對於此,我們採用了“聯想問”和“猜你想問”的功能來引導客人的提問方式。

  • 聯想問

客人在聊天輸入欄輸入問題的同時,顯示相關的一些問題以供客人點選,由於是實時顯示,對速度的要求較高,這裡我們使用的是檢索算法計算文本相似度。

我們會為每一個意圖人工設置一些用戶常問問題,當用戶輸入的時候,我們會用文本相似度的算法,算出和用戶輸入最接近的三個常問問題,提示給用戶供其選擇。

  • 猜你想問

對於“猜你想問”功能,主要是處理問句過短的語義不明的情況。舉個例子,在簽證領域,客人會輸入“照片”,而和照片相關的意圖有“是否需要照片”、“照片要求”、“照片尺寸大小”等等能夠涉及到的十幾個意圖。在觸發“猜你想問”後,會返回4個最關聯的問題供客人點選。

在使用“猜你想問”和“聯想問”的機制後,可以引導部分客人的用戶輸入習慣,提升單輪次下信息輸入的完整性及純淨度。

1.3 發現新意圖

一個新業務線設計意圖的時候,不可能把所有會出現的意圖都理清楚,而是循序漸進,逐步增加。業務人員本身對業務的熟悉程度可提供新業務線的意圖大框架,在小細節上難免存在漏缺,或是因為實時政策的變化產生的新問題。

比如說,在今年六月份大陸禁止發放台灣自由行簽證,這段時間就新產生了很多類似於“已辦的台灣簽證是否還可使用”、“是否還能辦台灣G簽證”等這些新的客戶問題。

層次聚類

攜程度假智能客服機器人背後是這麼玩的 5

我們採用的是對原始問題聚類的方法,把相似句聚集在一起。經過數據預處理後,生成句向量,第一層使用高斯混合得到一個初步的聚類結果,再通過規則判斷是否需要再進行一次聚類,隨後在第二層使用OPTICS聚類。

在用算法發現意圖後,並不會即刻投入使用,而是業務做重審確定,整體上新意圖的定位在於輔助業務對意圖體系的完善。

1.4 槽位抽取

在Task Bot中,槽位信息抽取主要是服務於檢索答案。比如簽證一個常見問題“辦籤條件”,需要確定客人的辦簽國家、戶口所在地、居住地等信息後才能給出最終回答。

有時客人的問題中直接會涉及相關槽位,目前槽位抽取採用的是規則+模型的方式。在實際應用中,規則能夠覆蓋70%的情況,剩下的則由模型來負責。

在度假業務裡需抽取的槽位詞有一個明顯的層次關係,比如地點-送簽地、地點-辦簽國家、職業-在職、職業-自由職業等,在模型的設計上會先抽第一層,第二層才是對最終結果的二級識別,通過多任務的學習,實際上每一層的任務是在對特徵進行自動抽取。

攜程度假智能客服機器人背後是這麼玩的 6

大型的語言模型,比如說今年大熱的BERT,在很多NLP任務中大放光彩。在這個詞槽抽取任務中,語句中會先經過BERT得到字向量$b_i$ 後,第一層經Bi-LSTM-CRF模型得到第一類的結果$r_i$ 以及Bi-LSTM的編碼結果$e ^1_i$,$r_i$ 會映射為對應的類向量$l_i$,經$l_i$、 $e^1_i$、$b_i$ 連接後進入第二層Bi-LSTM-CRF後得到最終的詞槽。在加入語言模型後,對於語料比較少以及地點比較多的情況提升會比較大,尤其是一些語料中沒出現過的地點,加入語言模型後也能識別出來。

二、對話管理系統

對話管理系統模塊主要負責對話狀態追踪DST(每輪意圖、槽位的存儲)、對話策略選取DPL(反問或給出答案)、答案生成NLG。在這部分接收NLU識別的意圖和槽位結果,DST把對話狀態信息發送給DPL,DPL根據知識庫中的規則返回機器人在下一輪的決策(回答問題、反問或其它操作)。

攜程度假智能客服機器人背後是這麼玩的 7

三、智能客服平台

在整體上,智能客服業務和技術的部分是解耦的。業務相關信息的設定和操作都是通過智能客服平台,包括不同業務線的意圖和詞槽的設定、答案配置、數據審核、測試、標註等。新建一條業務線的智能客服應用,只需要在平台上新建項目,輸入設定的意圖、對應的語料、必要的槽位和對應的答案。

攜程度假智能客服機器人背後是這麼玩的 8

此外,平台上的答案配置也很靈活,可以是固定回答,可以是知識圖譜的schema,可以是外部的接口,或是隨不同詞槽設定的回復等等。

四、結語

以上是度假人機交互的主要技術和成果,目前我們已經完成了一個智能客服項目落地的閉環,其中還有很多內容可以持續完善,比如多輪的意圖識別、更多主動對話的探索等等。

未來的智能客服機器人將往多模態和多語言方向發展,支持語音和圖像等模態的解析,支持英法日韓等多國的語言。智能客服還將提供主動服務模式、人機協同模式、群聊功能等多種模式。此外,採用大規模挖掘和生產的方式降低人工標註成本也是未來的主要方向之一。

作者介紹

雷蕾,攜程度假研發部資深算法工程師,負責智能客服算法工作。

鞠劍勳,攜程度假研發部算法經理,負責智能客服、知識圖譜、NLP算法等工作。

本文轉載自公眾號攜程技術中心(ID:ctriptech)。

原文鏈接

https://mp.weixin.qq.com/s?__biz=MjM5MDI3MjA5MQ==&mid=2697269082&idx=1&sn=4abe37143d00f36314b88fdea35ac808&chksm=8376f06eb40179782d60a84ed3c3c0b32b042b7e38358b5fc79c500a4fa160ec99c85c46b57f&scene=27#wechat_redirect