以同程藝龍客服機器人為例,談談意圖識別和對話管理建設

25 評論 13927 瀏覽 60 收藏 18 分鐘

隨著云計算、大數據、機器學習、深度學習等技術的不斷發展進步,基于人工智能的智能客服機器人嶄露頭角。本文將以同程藝龍客服機器人為例,分析智能客服機器人的意圖識別和對話管理建設。

所謂智能客服機器人,其實是一種使用自然語言與用戶進行交流的人工智能信息系統,它采用包括自然語言理解、機器學習技術在內的多項智能人機交互技術,能夠識別并理解用戶以文字或語音形式提出的問題,通過語義分析理解用戶意圖,并以擬人化的方式與用戶溝通,向用戶提供信息咨詢等相關服務。

智能客服是人機交互在客服領域的一個應用,本文將和大家簡單分享下同程藝龍智能客服機器人在意圖識別以及對話管理建設過程中的一點心得體會。

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

目前的智能客服會話的核心是進行用戶意圖匹配,只有明確了意圖,才能給出針對性的回答,所以下面簡單和大家分享下意圖識別的一般性原理。

一、關于意圖識別的實踐

對于智能客服機器人而言,意圖識別就是判斷用戶咨詢的問題是什么?用戶想表達的是什么意思?

例如:

這張機票我不要了-退票

我的火車票出票了沒-催出票

我要預訂明天的機票-幫下單

一般會使用下面幾種方式進行提取

1. 基于命名實體提取和詞庫

例如我的訂單出票了沒,使用HanLp?自然語言處理工具包, 會抽取以下2個詞語?訂單、出票,根據停用詞詞典去除掉訂單,然后根據出票到詞庫中進行匹配對應的分類,找到對應意圖催出票。對于復雜的句子,可以統計詞頻,根據頻率最高的找到對應的分類意圖。

使用這種方式優點是操作方便,用搜索的方式很快找出對應的意圖。但缺點也很明顯,比如這個訂單還沒出票,沒出票不要了,意圖是退票,很明顯提取出來的是錯誤。識別的準確率相對來說不高,所以此種方式一般作為機器學習意圖槽位數據提取。

2. 基于模板的匹配

查詢非常符合規則的類別,通過規則解析的方式來獲取查詢的意圖。 幫我預訂明天的蘇州到北京的機票,可以使用規則模板,進行如下提取 [蘇州]到[北京][明天][機票]。

這種方式需要借助命名實體提取,詞性標準,語義分析才能完成,對于規則性比較強的咨詢有較好的準確率。但此種方式對于研發和訓練師需要做大量的工作,較難進行擴展。

3. 基于機器學習

1)邏輯回歸

意圖識別在機器學習中的分類問題,也就是使用邏輯回歸進行分類。在使用邏輯回歸之前,首先要對詞語進行分詞,向量化。 分詞可以比較各個分詞的效果,最常用是jieba分詞。支持配置專業名詞及停用詞。分詞完成后,需要將詞與進行向量化。

一般有2種方式,一種是使用One-Hot編碼,這種方式一般針對專業性比較強的領域使用,另一種是word2vec,這種編碼方式可以很好的標識詞之間的關系。

one-hot編碼一半般將所有詞行列進行排列,相同的地方記做1,比如分詞完成后,按照詞頻排序結果如下:

那么[訂單,出票,取消]得到的詞向量為[[1,0,0],[0,1,0],[0,0,1]] 假如一個句子是這個訂單還沒出票,沒出票不要了,訂單出現一次,出票出現2次,這個句子最終的向量為

使用word2vec得到的結果類似。

針對意圖識別,一般是多類分類。但多分類問題是從二分類問題進行擴展。

2)二元分類

對于二分問題,在對于未知概率分布條件下,一般假設為正態分布(高斯分布),多維高斯分布如下,也是多個高斯分布相乘得到的結果。

帶入貝葉斯公式,最終得到是關于w,b的函數,也是sigmod函數。

對于數據量較少的分類,可以使用生成模型(Generative Model),計算p(c1),p(c2)和各個分類樣本數據的均值mean和共用協方差矩陣Σ,即可得到w,b,對于任意輸入x

代表數據分類屬于c1?,否則屬于c2?。由于是二元分類,不必單獨計算p(c2|x)。

但針對數據量較多的情況,一般使用判別模型(Discriminative Model), 針對二分類問題,根據最大擬然估算,Loss函數為

所有就是要找到w,b,使得

為了計算方便,將公式取對數

由于和的概率表達式不統一,上面的式子無法寫成統一的形式,為了統一格式,這里將所有Training data都打上0和1的標簽, y = 1代表?c1, y= 0代表?c2,于是上式進一步改寫成:

這個形式其實就是兩個分布的交叉熵,表示個概率分布有多接近。

下面就是對這個loss函數使用梯度下降求解最小值,對w,b微分最終得到每次更新的梯度,最終得到w,b,帶入sigmod函數即可得到結果。

另外,一般情況下判別模型比生成模型要高。

以上二元分類的情況,對于多元分類問題,其原理的推導過程與二元分類基本一致。

3)多分類

假設我們用的是高斯分布,共用協方差矩陣,經過一般推導,也就是各種變換后,可以得到一個softmax函數。

假設有三個分類:c1,c2,c3 ?,每一個c都有自己的w,b,w1,w2,w3 ?分布代表三個向量, ?b1,b2,b3分別代表三個常量,輸入x也是一個向量。

用softmax進行輸出正則化。softmax計算方式如下:

可以是任何值,但是做完softmax之后,輸出的值一定是介于0~1之間,并且它們的和一定是1。
多分類任務中輸出的是目標屬于每個類別的概率,所有類別概率的和為1,其中概率最大的類別就是目標所屬的分類。

即二分類使用sigmod函數輸出得到結果,而多分類使用softmax得到結果。

如下圖所示,輸入x經過三個式子分別生成,經過softmax轉化成輸出,它們分別是這三個?分類的概率,由于sum=1,因此做完softmax之后就可以把y的分布當做是一個概率分布。

我們在訓練的時候還需要有一個輸出,因為是三個分類,所以對應的輸出也是三維的。為了滿足交叉熵的條件,輸出也必須是概率分布,這里我們不能使用1,2,3作為分類的區分,為了保證所有分類之間的關系是一樣的,這里使用類似于one-hot編碼的方式。

和二元分類求解一樣,利用交叉熵,最終通過微分得到最優?w1,w2,w3??。

4. 基于神經網絡

對于輸入參數比較復雜的情況,例如輸入的可能是一個100*100的矩陣,這個時候就需要對數據進行處理,或者輸入的特征無法在數據源上進行數據處理,就需要在邏輯回歸之前再接上一個邏輯回歸,對數據源做處理。

多個邏輯回歸就構成了一個類神經網絡,也就是深度學習,如(CNN,LTSM)。

對于分類問題,深度學習的最后輸出函數也就是sigmod或者softmax函數。

通過上一次的語義抽取和意圖識別,對話會進入后續對話樹模塊。根據前一模塊抽取數據和用戶本身數據,將數據填充到對話樹的對應部分,對話數節點也可以根據條件拉取其他數據,最終這些數據都會在當前會話中保存。可以根據用戶問題,如果條件滿足,通過NLG模塊生成對應話術返回。

最終一次用戶會話的完整的流程

5. 應用與實踐

同程藝龍智能酒店訂單咨詢問題,目前使用交叉熵和L-GFGS算法訓練得到的意圖,初步打樣上線后,準確率在93%左右。

二、對話管理平臺的搭建

上文我們提到了智能客服相關的核心技術,除此之外,我們還希望有一套比較完整的對話管理系統解決方案,并期望它:

更靈活:可靈活支持以上不同形態,不同業務,不同的運營人員使用。

更易用:運營團隊可以自主訓練自己的機器人和定義對話流程。

同程藝龍對話管理平臺:

面向于同程藝龍和外部租戶的公共對話管理支持系統,包括機器人訓練,對話流程配置功能(詞槽和意圖的配置、對話條件和執行動作的配置)、以及相關的數據報表和機器人自學習優化等功能。

1. 多租戶管理

考慮內外部的不同需求,平臺采用SAAS的租戶管理方式,將不同業務之間分離解耦。租戶下支持創建多業務線和系統角色、成員等。

2. 可視化任務場景搭建

我們將對話交互抽象和總結為條件判斷(Entry),信息收集 (SlotFilling),響應回復(Response)等一系列元素模塊。支持運營人員在平臺上利用這些元素,快速自由組合配置對話流。

業務系統可以通過系統公共API接入全局變量,并將這些變量運用到對話流配置中。同時也也可以使用系統預置的條件參數,或對話中已收集到的信息來完善任務場景。

例如:【定機票】場景下,首先要判斷是否已存在未支付的沖突訂單,業務系統可以接入全局變量 [查詢訂單] [訂單狀態],在該判斷節點選擇使用。

在決策樹中添加信息收集節點(SlotFilling),配置多輪對話參數和澄清話術,來完成復雜場景和多倫對話。系統預置了常用通用實體供選擇,如時間,城市等;支持自行擴寫專用實體類型用來補充與業務強相關的行業專用實體,如航司,水果等;

例如:【定機票】場景中,如不存在沖突訂單,需要確認買票的信息:定義 [出發時間] [出發地] [目的地] 3個槽位,和澄清話術,系統將按流程完成填槽信息收集。

3. 響應類型

任務執行響應結果包含文本響應,自定義類響應(提交數據或完成某項任務),跳轉(跳轉其他場景/節點)等多種形式。

例如:【定機票】場景下,通過文本回復確認客戶購買需求后,可以通過[提交訂單][發送支付鏈接]代替客戶提交訂單并發送支付鏈接完成下單流程。

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

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

三、寫在最后

以上是同程藝龍智能客服產品技術推進過程中的一點點心得分享,未來智能客服將往多模態和多語言方向發展,支持語音、圖像等模態的解析。智能客服還將提供智能外呼、主動服務、人機協同、等多維度服務,未來將實現從售前到售后、從服務到產品的全業務以及全服務流程的智能化,構建服務行業的全智能模式。

 

本文由 @Candy 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 先簡單了解,如果做了入職了,再深入學習,多謝分享

    來自湖北 回復
  2. 你在同程藝龍嗎

    來自江蘇 回復
  3. 很多干貨,學習到了

    來自江蘇 回復
  4. 干貨挺多。不錯

    回復
  5. 不錯不錯 深度好文

    回復
  6. ZY的?

    來自上海 回復
  7. 專業性術語較多,技術性較為出彩,不過個人感覺還是應該更偏業務側一些

    來自江蘇 回復
    1. 感謝您的建議,后續分享一些產品推進上的心得體會,大家一起交流學習

      來自江蘇 回復
  8. ??

    來自江蘇 回復
  9. 大佬太謙虛了, 億點點心得。

    來自上海 回復
  10. 求教,AI產品經理需要對上述算法和建模(類似高斯、貝葉斯等)有很深的理解嗎?

    來自上海 回復
    1. 從事NLP領域相關產品是需要了解一些算法知識,當然沒有必要一味追求最新的算法,找到適合自己的算法才最重要。

      來自江蘇 回復
  11. 好多干貨

    來自江蘇 回復
  12. ??????????????????

    來自江蘇 回復
  13. ??

    來自江蘇 回復
  14. ?? 雖然看不懂,但是覺得很厲害

    來自江蘇 回復
    1. 同感

      來自廣東 回復
    2. 同感

      來自上海 回復
    3. 很好

      來自上海 回復
    4. 同感

      來自上海 回復
  15. 意圖識別 、 機器學習,值得關注

    來自江蘇 回復
    1. 很好

      來自上海 回復
    2. 不錯

      來自上海 回復
  16. 干貨很多!

    來自江蘇 回復
  17. 挺不錯,值得收藏

    來自江蘇 回復