以同程藝龍客服機(jī)器人為例,談?wù)勔鈭D識(shí)別和對(duì)話管理建設(shè)
隨著云計(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é)議
先簡(jiǎn)單了解,如果做了入職了,再深入學(xué)習(xí),多謝分享
你在同程藝龍嗎
很多干貨,學(xué)習(xí)到了
干貨挺多。不錯(cuò)
不錯(cuò)不錯(cuò) 深度好文
ZY的?
專(zhuān)業(yè)性術(shù)語(yǔ)較多,技術(shù)性較為出彩,不過(guò)個(gè)人感覺(jué)還是應(yīng)該更偏業(yè)務(wù)側(cè)一些
感謝您的建議,后續(xù)分享一些產(chǎn)品推進(jìn)上的心得體會(huì),大家一起交流學(xué)習(xí)
??
大佬太謙虛了, 億點(diǎn)點(diǎn)心得。
求教,AI產(chǎn)品經(jīng)理需要對(duì)上述算法和建模(類(lèi)似高斯、貝葉斯等)有很深的理解嗎?
從事NLP領(lǐng)域相關(guān)產(chǎn)品是需要了解一些算法知識(shí),當(dāng)然沒(méi)有必要一味追求最新的算法,找到適合自己的算法才最重要。
好多干貨
??????????????????
??
?? 雖然看不懂,但是覺(jué)得很厲害
同感
同感
很好
同感
意圖識(shí)別 、 機(jī)器學(xué)習(xí),值得關(guān)注
很好
不錯(cuò)
干貨很多!
挺不錯(cuò),值得收藏