以同程藝龍客服機(jī)器人為例,談?wù)勔鈭D識(shí)別和對(duì)話管理建設(shè)

25 評(píng)論 14040 瀏覽 60 收藏 18 分鐘

隨著云計(jì)算、大數(shù)據(jù)、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等技術(shù)的不斷發(fā)展進(jìn)步,基于人工智能的智能客服機(jī)器人嶄露頭角。本文將以同程藝龍客服機(jī)器人為例,分析智能客服機(jī)器人的意圖識(shí)別和對(duì)話管理建設(shè)。

所謂智能客服機(jī)器人,其實(shí)是一種使用自然語(yǔ)言與用戶(hù)進(jìn)行交流的人工智能信息系統(tǒng),它采用包括自然語(yǔ)言理解、機(jī)器學(xué)習(xí)技術(shù)在內(nèi)的多項(xiàng)智能人機(jī)交互技術(shù),能夠識(shí)別并理解用戶(hù)以文字或語(yǔ)音形式提出的問(wèn)題,通過(guò)語(yǔ)義分析理解用戶(hù)意圖,并以擬人化的方式與用戶(hù)溝通,向用戶(hù)提供信息咨詢(xún)等相關(guān)服務(wù)。

智能客服是人機(jī)交互在客服領(lǐng)域的一個(gè)應(yīng)用,本文將和大家簡(jiǎn)單分享下同程藝龍智能客服機(jī)器人在意圖識(shí)別以及對(duì)話管理建設(shè)過(guò)程中的一點(diǎn)心得體會(huì)。

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

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

一、關(guān)于意圖識(shí)別的實(shí)踐

對(duì)于智能客服機(jī)器人而言,意圖識(shí)別就是判斷用戶(hù)咨詢(xún)的問(wèn)題是什么?用戶(hù)想表達(dá)的是什么意思?

例如:

這張機(jī)票我不要了-退票

我的火車(chē)票出票了沒(méi)-催出票

我要預(yù)訂明天的機(jī)票-幫下單

一般會(huì)使用下面幾種方式進(jìn)行提取

1. 基于命名實(shí)體提取和詞庫(kù)

例如我的訂單出票了沒(méi),使用HanLp?自然語(yǔ)言處理工具包, 會(huì)抽取以下2個(gè)詞語(yǔ)?訂單、出票,根據(jù)停用詞詞典去除掉訂單,然后根據(jù)出票到詞庫(kù)中進(jìn)行匹配對(duì)應(yīng)的分類(lèi),找到對(duì)應(yīng)意圖催出票。對(duì)于復(fù)雜的句子,可以統(tǒng)計(jì)詞頻,根據(jù)頻率最高的找到對(duì)應(yīng)的分類(lèi)意圖。

使用這種方式優(yōu)點(diǎn)是操作方便,用搜索的方式很快找出對(duì)應(yīng)的意圖。但缺點(diǎn)也很明顯,比如這個(gè)訂單還沒(méi)出票,沒(méi)出票不要了,意圖是退票,很明顯提取出來(lái)的是錯(cuò)誤。識(shí)別的準(zhǔn)確率相對(duì)來(lái)說(shuō)不高,所以此種方式一般作為機(jī)器學(xué)習(xí)意圖槽位數(shù)據(jù)提取。

2. 基于模板的匹配

查詢(xún)非常符合規(guī)則的類(lèi)別,通過(guò)規(guī)則解析的方式來(lái)獲取查詢(xún)的意圖。 幫我預(yù)訂明天的蘇州到北京的機(jī)票,可以使用規(guī)則模板,進(jìn)行如下提取 [蘇州]到[北京][明天][機(jī)票]。

這種方式需要借助命名實(shí)體提取,詞性標(biāo)準(zhǔn),語(yǔ)義分析才能完成,對(duì)于規(guī)則性比較強(qiáng)的咨詢(xún)有較好的準(zhǔn)確率。但此種方式對(duì)于研發(fā)和訓(xùn)練師需要做大量的工作,較難進(jìn)行擴(kuò)展。

3. 基于機(jī)器學(xué)習(xí)

1)邏輯回歸

意圖識(shí)別在機(jī)器學(xué)習(xí)中的分類(lèi)問(wèn)題,也就是使用邏輯回歸進(jìn)行分類(lèi)。在使用邏輯回歸之前,首先要對(duì)詞語(yǔ)進(jìn)行分詞,向量化。 分詞可以比較各個(gè)分詞的效果,最常用是jieba分詞。支持配置專(zhuān)業(yè)名詞及停用詞。分詞完成后,需要將詞與進(jìn)行向量化。

一般有2種方式,一種是使用One-Hot編碼,這種方式一般針對(duì)專(zhuān)業(yè)性比較強(qiáng)的領(lǐng)域使用,另一種是word2vec,這種編碼方式可以很好的標(biāo)識(shí)詞之間的關(guān)系。

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

那么[訂單,出票,取消]得到的詞向量為[[1,0,0],[0,1,0],[0,0,1]] 假如一個(gè)句子是這個(gè)訂單還沒(méi)出票,沒(méi)出票不要了,訂單出現(xiàn)一次,出票出現(xiàn)2次,這個(gè)句子最終的向量為

使用word2vec得到的結(jié)果類(lèi)似。

針對(duì)意圖識(shí)別,一般是多類(lèi)分類(lèi)。但多分類(lèi)問(wèn)題是從二分類(lèi)問(wèn)題進(jìn)行擴(kuò)展。

2)二元分類(lèi)

對(duì)于二分問(wèn)題,在對(duì)于未知概率分布條件下,一般假設(shè)為正態(tài)分布(高斯分布),多維高斯分布如下,也是多個(gè)高斯分布相乘得到的結(jié)果。

帶入貝葉斯公式,最終得到是關(guān)于w,b的函數(shù),也是sigmod函數(shù)。

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

代表數(shù)據(jù)分類(lèi)屬于c1?,否則屬于c2?。由于是二元分類(lèi),不必單獨(dú)計(jì)算p(c2|x)。

但針對(duì)數(shù)據(jù)量較多的情況,一般使用判別模型(Discriminative Model), 針對(duì)二分類(lèi)問(wèn)題,根據(jù)最大擬然估算,Loss函數(shù)為

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

為了計(jì)算方便,將公式取對(duì)數(shù)

由于和的概率表達(dá)式不統(tǒng)一,上面的式子無(wú)法寫(xiě)成統(tǒng)一的形式,為了統(tǒng)一格式,這里將所有Training data都打上0和1的標(biāo)簽, y = 1代表?c1, y= 0代表?c2,于是上式進(jìn)一步改寫(xiě)成:

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

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

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

以上二元分類(lèi)的情況,對(duì)于多元分類(lèi)問(wèn)題,其原理的推導(dǎo)過(guò)程與二元分類(lèi)基本一致。

3)多分類(lèi)

假設(shè)我們用的是高斯分布,共用協(xié)方差矩陣,經(jīng)過(guò)一般推導(dǎo),也就是各種變換后,可以得到一個(gè)softmax函數(shù)。

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

用softmax進(jìn)行輸出正則化。softmax計(jì)算方式如下:

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

即二分類(lèi)使用sigmod函數(shù)輸出得到結(jié)果,而多分類(lèi)使用softmax得到結(jié)果。

如下圖所示,輸入x經(jīng)過(guò)三個(gè)式子分別生成,經(jīng)過(guò)softmax轉(zhuǎn)化成輸出,它們分別是這三個(gè)?分類(lèi)的概率,由于sum=1,因此做完softmax之后就可以把y的分布當(dāng)做是一個(gè)概率分布。

我們?cè)谟?xùn)練的時(shí)候還需要有一個(gè)輸出,因?yàn)槭侨齻€(gè)分類(lèi),所以對(duì)應(yīng)的輸出也是三維的。為了滿足交叉熵的條件,輸出也必須是概率分布,這里我們不能使用1,2,3作為分類(lèi)的區(qū)分,為了保證所有分類(lèi)之間的關(guān)系是一樣的,這里使用類(lèi)似于one-hot編碼的方式。

和二元分類(lèi)求解一樣,利用交叉熵,最終通過(guò)微分得到最優(yōu)?w1,w2,w3??。

4. 基于神經(jīng)網(wǎng)絡(luò)

對(duì)于輸入?yún)?shù)比較復(fù)雜的情況,例如輸入的可能是一個(gè)100*100的矩陣,這個(gè)時(shí)候就需要對(duì)數(shù)據(jù)進(jìn)行處理,或者輸入的特征無(wú)法在數(shù)據(jù)源上進(jìn)行數(shù)據(jù)處理,就需要在邏輯回歸之前再接上一個(gè)邏輯回歸,對(duì)數(shù)據(jù)源做處理。

多個(gè)邏輯回歸就構(gòu)成了一個(gè)類(lèi)神經(jīng)網(wǎng)絡(luò),也就是深度學(xué)習(xí),如(CNN,LTSM)。

對(duì)于分類(lèi)問(wèn)題,深度學(xué)習(xí)的最后輸出函數(shù)也就是sigmod或者softmax函數(shù)。

通過(guò)上一次的語(yǔ)義抽取和意圖識(shí)別,對(duì)話會(huì)進(jìn)入后續(xù)對(duì)話樹(shù)模塊。根據(jù)前一模塊抽取數(shù)據(jù)和用戶(hù)本身數(shù)據(jù),將數(shù)據(jù)填充到對(duì)話樹(shù)的對(duì)應(yīng)部分,對(duì)話數(shù)節(jié)點(diǎn)也可以根據(jù)條件拉取其他數(shù)據(jù),最終這些數(shù)據(jù)都會(huì)在當(dāng)前會(huì)話中保存??梢愿鶕?jù)用戶(hù)問(wèn)題,如果條件滿足,通過(guò)NLG模塊生成對(duì)應(yīng)話術(shù)返回。

最終一次用戶(hù)會(huì)話的完整的流程

5. 應(yīng)用與實(shí)踐

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

二、對(duì)話管理平臺(tái)的搭建

上文我們提到了智能客服相關(guān)的核心技術(shù),除此之外,我們還希望有一套比較完整的對(duì)話管理系統(tǒng)解決方案,并期望它:

更靈活:可靈活支持以上不同形態(tài),不同業(yè)務(wù),不同的運(yùn)營(yíng)人員使用。

更易用:運(yùn)營(yíng)團(tuán)隊(duì)可以自主訓(xùn)練自己的機(jī)器人和定義對(duì)話流程。

同程藝龍對(duì)話管理平臺(tái):

面向于同程藝龍和外部租戶(hù)的公共對(duì)話管理支持系統(tǒng),包括機(jī)器人訓(xùn)練,對(duì)話流程配置功能(詞槽和意圖的配置、對(duì)話條件和執(zhí)行動(dòng)作的配置)、以及相關(guān)的數(shù)據(jù)報(bào)表和機(jī)器人自學(xué)習(xí)優(yōu)化等功能。

1. 多租戶(hù)管理

考慮內(nèi)外部的不同需求,平臺(tái)采用SAAS的租戶(hù)管理方式,將不同業(yè)務(wù)之間分離解耦。租戶(hù)下支持創(chuàng)建多業(yè)務(wù)線和系統(tǒng)角色、成員等。

2. 可視化任務(wù)場(chǎng)景搭建

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

業(yè)務(wù)系統(tǒng)可以通過(guò)系統(tǒng)公共API接入全局變量,并將這些變量運(yùn)用到對(duì)話流配置中。同時(shí)也也可以使用系統(tǒng)預(yù)置的條件參數(shù),或?qū)υ捴幸咽占降男畔?lái)完善任務(wù)場(chǎng)景。

例如:【定機(jī)票】場(chǎng)景下,首先要判斷是否已存在未支付的沖突訂單,業(yè)務(wù)系統(tǒng)可以接入全局變量 [查詢(xún)訂單] [訂單狀態(tài)],在該判斷節(jié)點(diǎn)選擇使用。

在決策樹(shù)中添加信息收集節(jié)點(diǎn)(SlotFilling),配置多輪對(duì)話參數(shù)和澄清話術(shù),來(lái)完成復(fù)雜場(chǎng)景和多倫對(duì)話。系統(tǒng)預(yù)置了常用通用實(shí)體供選擇,如時(shí)間,城市等;支持自行擴(kuò)寫(xiě)專(zhuān)用實(shí)體類(lèi)型用來(lái)補(bǔ)充與業(yè)務(wù)強(qiáng)相關(guān)的行業(yè)專(zhuān)用實(shí)體,如航司,水果等;

例如:【定機(jī)票】場(chǎng)景中,如不存在沖突訂單,需要確認(rèn)買(mǎi)票的信息:定義 [出發(fā)時(shí)間] [出發(fā)地] [目的地] 3個(gè)槽位,和澄清話術(shù),系統(tǒng)將按流程完成填槽信息收集。

3. 響應(yīng)類(lèi)型

任務(wù)執(zhí)行響應(yīng)結(jié)果包含文本響應(yīng),自定義類(lèi)響應(yīng)(提交數(shù)據(jù)或完成某項(xiàng)任務(wù)),跳轉(zhuǎn)(跳轉(zhuǎn)其他場(chǎng)景/節(jié)點(diǎn))等多種形式。

例如:【定機(jī)票】場(chǎng)景下,通過(guò)文本回復(fù)確認(rèn)客戶(hù)購(gòu)買(mǎi)需求后,可以通過(guò)[提交訂單][發(fā)送支付鏈接]代替客戶(hù)提交訂單并發(fā)送支付鏈接完成下單流程。

在整體上,智能客服業(yè)務(wù)和技術(shù)的部分是解耦的。業(yè)務(wù)相關(guān)信息的設(shè)定和操作都是通過(guò)智能客服平臺(tái),包括不同業(yè)務(wù)線的意圖和詞槽的設(shè)定、答案配置、數(shù)據(jù)審核、測(cè)試、標(biāo)注等。新建一條業(yè)務(wù)線的智能客服應(yīng)用,只需要在平臺(tái)上新建項(xiàng)目,輸入設(shè)定的意圖、對(duì)應(yīng)的語(yǔ)料、必要的槽位和對(duì)應(yīng)的答案。

此外,平臺(tái)上的答案配置也很靈活,可以是固定回答,可以是知識(shí)圖譜的schema,可以是外部的接口,或是隨不同詞槽設(shè)定的回復(fù)等等。

三、寫(xiě)在最后

以上是同程藝龍智能客服產(chǎn)品技術(shù)推進(jìn)過(guò)程中的一點(diǎn)點(diǎn)心得分享,未來(lái)智能客服將往多模態(tài)和多語(yǔ)言方向發(fā)展,支持語(yǔ)音、圖像等模態(tài)的解析。智能客服還將提供智能外呼、主動(dòng)服務(wù)、人機(jī)協(xié)同、等多維度服務(wù),未來(lái)將實(shí)現(xiàn)從售前到售后、從服務(wù)到產(chǎn)品的全業(yè)務(wù)以及全服務(wù)流程的智能化,構(gòu)建服務(wù)行業(yè)的全智能模式。

 

本文由 @Candy 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 先簡(jiǎn)單了解,如果做了入職了,再深入學(xué)習(xí),多謝分享

    來(lái)自湖北 回復(fù)
  2. 你在同程藝龍嗎

    來(lái)自江蘇 回復(fù)
  3. 很多干貨,學(xué)習(xí)到了

    來(lái)自江蘇 回復(fù)
  4. 干貨挺多。不錯(cuò)

    回復(fù)
  5. 不錯(cuò)不錯(cuò) 深度好文

    回復(fù)
  6. ZY的?

    來(lái)自上海 回復(fù)
  7. 專(zhuān)業(yè)性術(shù)語(yǔ)較多,技術(shù)性較為出彩,不過(guò)個(gè)人感覺(jué)還是應(yīng)該更偏業(yè)務(wù)側(cè)一些

    來(lái)自江蘇 回復(fù)
    1. 感謝您的建議,后續(xù)分享一些產(chǎn)品推進(jìn)上的心得體會(huì),大家一起交流學(xué)習(xí)

      來(lái)自江蘇 回復(fù)
  8. ??

    來(lái)自江蘇 回復(fù)
  9. 大佬太謙虛了, 億點(diǎn)點(diǎn)心得。

    來(lái)自上海 回復(fù)
  10. 求教,AI產(chǎn)品經(jīng)理需要對(duì)上述算法和建模(類(lèi)似高斯、貝葉斯等)有很深的理解嗎?

    來(lái)自上海 回復(fù)
    1. 從事NLP領(lǐng)域相關(guān)產(chǎn)品是需要了解一些算法知識(shí),當(dāng)然沒(méi)有必要一味追求最新的算法,找到適合自己的算法才最重要。

      來(lái)自江蘇 回復(fù)
  11. 好多干貨

    來(lái)自江蘇 回復(fù)
  12. ??????????????????

    來(lái)自江蘇 回復(fù)
  13. ??

    來(lái)自江蘇 回復(fù)
  14. ?? 雖然看不懂,但是覺(jué)得很厲害

    來(lái)自江蘇 回復(fù)
    1. 同感

      來(lái)自廣東 回復(fù)
    2. 同感

      來(lái)自上海 回復(fù)
    3. 很好

      來(lái)自上海 回復(fù)
    4. 同感

      來(lái)自上海 回復(fù)
  15. 意圖識(shí)別 、 機(jī)器學(xué)習(xí),值得關(guān)注

    來(lái)自江蘇 回復(fù)
    1. 很好

      來(lái)自上海 回復(fù)
    2. 不錯(cuò)

      來(lái)自上海 回復(fù)
  16. 干貨很多!

    來(lái)自江蘇 回復(fù)
  17. 挺不錯(cuò),值得收藏

    來(lái)自江蘇 回復(fù)