余 慧,馮旭鵬,劉利軍,黃青松,3
(1.昆明理工大學(xué) 信息工程與自動化學(xué)院,昆明 650500; 2.昆明理工大學(xué) 教育技術(shù)與網(wǎng)絡(luò)中心,昆明 650500;3.云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室(昆明理工大學(xué)),昆明 650500)(*通信作者電子郵箱kmustailab@hotmail.com)
近年來,人工智能發(fā)展迅猛,逐漸融入各個領(lǐng)域,其中在醫(yī)療領(lǐng)域的應(yīng)用正引起學(xué)術(shù)界和工業(yè)界廣泛關(guān)注。不少在線醫(yī)療平臺開始使用聊天機(jī)器人來提供健康咨詢服務(wù),這時聊天機(jī)器人不僅充當(dāng)客服角色,更多起到一個健康咨詢師的作用。在和“健康咨詢師”聊天過程中,用戶會產(chǎn)生大量數(shù)據(jù),不僅包含其健康信息,還包含其他相關(guān)信息。如果能夠利用這些信息提前判斷出用戶就醫(yī)傾向,則可以為下一步給用戶提出合理治療建議以及推薦相應(yīng)科室作好準(zhǔn)備[1]。
準(zhǔn)確識別用戶意圖有助于了解用戶潛在需求,輔助事件預(yù)測以及判斷事件走向[2]。雖然目前聊天機(jī)器人中用戶意圖識別的研究工作還處于起步階段,但由于互聯(lián)網(wǎng)蓬勃發(fā)展,互聯(lián)網(wǎng)用戶意圖識別的研究正如火如荼進(jìn)行,因此可以借鑒這些相關(guān)領(lǐng)域的研究。比如基于搜索引擎的查詢意圖識別,研究者主要通過分類Query來確定用戶的搜索內(nèi)容[3]。在消費(fèi)意圖挖掘研究中有學(xué)者利用模板的思想來抽取和泛化用戶的消費(fèi)意圖,Ramanand等[4]提出基于規(guī)則和圖的方法來獲取意圖模板;Chen等[5]考慮到消費(fèi)意圖語料的匱乏,在消費(fèi)意圖表達(dá)具有相似性的假設(shè)下提出了跨領(lǐng)域遷移學(xué)習(xí)(transfer learning)的消費(fèi)意圖檢測方法。這些傳統(tǒng)的意圖識別方法一般是基于模板匹配或人工特征集合,費(fèi)時費(fèi)力、擴(kuò)展性不強(qiáng)。
針對上述問題,本文把聊天機(jī)器人中用戶就醫(yī)意圖識別看作文本分類問題,即明確沒有就醫(yī)意圖、極小可能就醫(yī)、可能就醫(yī)、極大可能就醫(yī)和明確具有就醫(yī)意圖;同時考慮醫(yī)療領(lǐng)域聊天文本的特點(diǎn),即長度短、包含多輪回話的上下文信息和領(lǐng)域?qū)S性~,比如醫(yī)院、醫(yī)生等,構(gòu)建了基于短文本主題模型(Biterm Topic Model,BTM)和雙向門控循環(huán)單元(Bidirectional Gated Recurrent Unit,BiGRU)的意圖識別模型(BTM-BiGRU)來進(jìn)行用戶就醫(yī)意圖識別。針對領(lǐng)域文本特點(diǎn),本文使用主題作為文本特征,首先通過BTM對用戶聊天文本進(jìn)行主題挖掘,相較于狄利克雷分布(Latent Dirichlet Allocation,LDA)主題模型,BTM對短文本的適應(yīng)效果更好[6]。然后結(jié)合深度學(xué)習(xí)方法,將上述BTM得到表示連續(xù)語句的特征向量集送入BiGRU中進(jìn)行完整上下文學(xué)習(xí),最后通過Softmax[7]輸出分類結(jié)果實(shí)現(xiàn)本文任務(wù)。與支持向量機(jī)(Support Vector Machine,SVM)[8]等傳統(tǒng)機(jī)器學(xué)習(xí)方法相比,BiGRU能夠更好地對用戶多輪對話進(jìn)行建模,充分利用上下文信息來提取用戶聊天文本特征。實(shí)驗(yàn)結(jié)果證明該混合模型結(jié)合了BTM和BiGRU的優(yōu)點(diǎn),相比傳統(tǒng)方法,能更有效進(jìn)行用戶就醫(yī)意圖識別。
在使用機(jī)器學(xué)習(xí)進(jìn)行自然語言處理時,第一步肯定是將實(shí)際的文本內(nèi)容變成計(jì)算機(jī)能識別的表示形式,即將要處理的信息數(shù)學(xué)化[9]。向量空間模型是目前自然語言處理中的主流模型,其中詞向量則是最基礎(chǔ)和重要的。詞向量常見的一種表達(dá)方式是one-hot representation,它的向量維度是整個語料庫中詞個數(shù),每一維代表語料庫中一個詞,其中1代表出現(xiàn),反之為0。很明顯,one-hot representation不僅存在維度災(zāi)難,而且最大問題是它只表達(dá)詞本身是否出現(xiàn),而沒有表達(dá)詞與詞之間的關(guān)聯(lián)。為此,便有了通過目標(biāo)詞上下文來預(yù)測目標(biāo)詞從而得到詞向量的方法,稱為distributed representation。相應(yīng)地,句向量、段向量等也就可以在此基礎(chǔ)上得到。如今最常用的詞向量訓(xùn)練方式是word2vec[10],本文也使用它來訓(xùn)練詞向量。
近幾年,許多需要大規(guī)模文本分析的領(lǐng)域都成功應(yīng)用了主題模型[11],包括自然語言處理、數(shù)據(jù)挖掘、商業(yè)智能、信息檢索等。首先關(guān)于主題,它是一個概念、一個方面,表現(xiàn)為一系列相關(guān)的詞語。例如一個文檔如果涉及“醫(yī)院”這個主題,那么“醫(yī)院”“醫(yī)生”等詞語便會以較高的頻率出現(xiàn)。用數(shù)學(xué)語言描述,主題就是詞匯表上詞語的條件概率分布,與主題關(guān)系越密切的詞語,它的條件概率越大,反之則越小[12]。而主題模型作為語義挖掘的利器,則是一種對文字隱含主題進(jìn)行建模的方法。主題模型中最具代表性的是Hofmann[13]提出的基于概率潛在語義分析(Probabilistic Latent Semantic Analysis,PLSA)模型和Blei等[14]提出的LDA模型。而本文所采用的BTM則是Cheng等[15]提出的針對短文本學(xué)習(xí)的主題模型,該模型通過詞對共現(xiàn)模式加強(qiáng)主題學(xué)習(xí)。
針對短文本,由于其數(shù)據(jù)稀疏,如果根據(jù)傳統(tǒng)的詞共現(xiàn)方式來進(jìn)行主題挖掘,效果將很不理想。為此,Cheng等[15]利用詞對共現(xiàn)來代替詞共現(xiàn),提出一種短文本主題模型(BTM)。BTM結(jié)構(gòu)如圖1所示,其中各參數(shù)的含義如表1所示。
圖1 BTM結(jié)構(gòu)
參數(shù)含義K主題數(shù)目Nb語料中所有詞對的數(shù)目α主題的狄利克雷先驗(yàn)參數(shù)概率分布β主題詞的狄利克雷先驗(yàn)參數(shù)概率分布θ文檔-主題概率分布Φ主題-詞概率分布z主題
每篇文檔的主題分布產(chǎn)生過程如下:
假設(shè)文檔的主題概率等于此文檔生成的詞對的主題概率的期望值,如式(1)所示:
(1)
其中:z表示主題,d表示文檔,b表示詞對。
通過貝葉斯公式能夠得到詞對的主題概率P(z|b),如式(2)所示:
(2)
其中:P(z)=θz,P(wi|z)=φi|z,wi、wj表示某個詞對b中的兩個不同的詞,θz表示從主題分布θ中抽取一個主題z,φi|z表示主題-詞分布φz中詞wi對應(yīng)值。
用文檔中詞對的經(jīng)驗(yàn)分布估計(jì)P(b|d),如式(3)所示:
(3)
其中,nd(b)為文檔d中詞對b的出現(xiàn)次數(shù)。
針對普通循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)[16]存在的兩大問題,即長距離依賴和梯度消失或梯度爆炸,Hochreiter等[17]提出了長短期記憶(Long-Short Term Memory, LSTM)模型。相比傳統(tǒng)RNN,LSTM的重復(fù)神經(jīng)網(wǎng)絡(luò)模塊更復(fù)雜,增加了門結(jié)構(gòu),即遺忘門、輸入門以及輸出門。三個門的計(jì)算也造成了LSTM訓(xùn)練時間較長,而門控循環(huán)單元(Gated Recurrent Unit, GRU)[18]作為LSTM的一個變體,在保持其學(xué)習(xí)效果的同時又使結(jié)構(gòu)更加簡單,節(jié)省訓(xùn)練時間。GRU只有重置門rt和更新門zt,其中更新門由遺忘門和輸入門合成,其工作流程具體如下:
和LSTM一樣,GRU的關(guān)鍵是元胞狀態(tài)。首先決定要從舊元胞狀態(tài)和當(dāng)前輸入中丟掉哪些信息,由重置門來控制其程度,如式(4)所示:
rt=σ(Wrxt+Urht-1)
(4)
其中:σ代表Sigmod非線性函數(shù),xt代表當(dāng)前輸入,ht-1代表上一時刻隱層的輸出。
接下來是決定將哪些新信息保存到元胞狀態(tài),具體分為兩部分:
1)更新門用來控制忘記之前信息和添加新信息的程度,如式(5)所示:
zt=σ(Wzxt+Uzht-1)
(5)
(6)
其中:tanh代表雙曲線正切函數(shù),⊙代表元素級相乘運(yùn)算。
最后,把這兩個值組合起來用于更新舊元胞狀態(tài)ht-1到新元胞狀態(tài)ht,如式(7)所示:
(7)
雙向GRU是GRU的改進(jìn)。由于GRU是單方向推進(jìn),往往忽略了未來的上下文信息,而雙向GRU的基本思想是使用同一個訓(xùn)練序列向前向后各訓(xùn)練一個GRU模型,再將兩個模型的輸出進(jìn)行線性組合,使得序列中每一個節(jié)點(diǎn)都能完整地依賴所有上下文信息。對于本任務(wù),在每一個時間步上充分利用過去和未來的上下文,將有助于更好理解用戶的就醫(yī)意圖。雙向GRU的結(jié)構(gòu)如圖2所示。
圖2 雙向GRU模型結(jié)構(gòu)
該混合模型的結(jié)構(gòu)如圖3所示,由BTM層、Sentence embedding層、BiGRU層和最終的Softmax層組成。
1)BTM層:按照聊天順序?qū)⒘奶煺Z句逐句送入BTM層,利用BTM挖掘出每句的文檔-主題概率分布P(z|d)的最大值p=(z|d)max對應(yīng)主題下的主題-詞分布前N個詞。
2)語句嵌入層:將BTM層得到的主題詞作為特征項(xiàng)并用詞向量表示,特征詞對應(yīng)權(quán)重由整個實(shí)驗(yàn)語料的TF(Term Frequency)和IDF(Inverse Document Frequency)確定,如式(8)所示,從而得到句子的特征向量。假設(shè)長度為n句話的用戶聊天文本,令Si∈Rk代表聊天中第i句話的句向量,則整個用戶聊天文本表示為CR∈Rnk,如式(9)所示:
wik=TFik×IDFik
(8)
其中,wik代表第i句話的第k個主題特征詞權(quán)重。
CR=S1⊕S2⊕…⊕Sn
(9)
其中,⊕代表將句向量依次進(jìn)行拼接操作。
假設(shè)經(jīng)過濾得到某用戶的聊天對話:D=S1+S2,其中S1=“最近我這一直胸悶,想去醫(yī)院看看”,S2=“請問我該掛什么號”。通過BTM層后分別得到S1的最大主題概率下的前2個主題詞為“醫(yī)院”“醫(yī)生”,S2的為“掛號”“科室”。利用word2vec分別得到醫(yī)院、醫(yī)生、掛號、科室的詞向量,假設(shè)為x1、x2、x3、x4,其對應(yīng)TF-IDF權(quán)重為w11、w12、w21、w22, 則S1的句向量S1=w11·x1⊕w12·x2,S2的句向量S2=w21·x3⊕w22·x4。
3)BiGRU層:由前向GRU和后向GRU組成。分別將用戶聊天文本向量CR順序、逆序輸入前向GRU和后向GRU,得到兩個方向的連續(xù)語句表示F_CR′和B_CR′,將其拼接起來作為用戶多輪會話的最終表示。
4)Softmax層:本任務(wù)一共有5個輸出,即該用戶明確沒有就醫(yī)意圖、極小可能就醫(yī)、可能就醫(yī)、極大可能就醫(yī)和明確具有就醫(yī)意圖,因此混合模型的Softmax層輸出維度為5。Softmax層的輸出是判別類別的概率,即根據(jù)條件概率的值來判斷聊天文本到底屬于哪類用戶意圖。
圖3 BTM-BiGRU結(jié)構(gòu)
本文綜合BTM和雙向GRU的優(yōu)點(diǎn),構(gòu)建了BTM-BiGRU混合模型。正如前文分析所得,由于BTM采用詞對共現(xiàn)模式代替?zhèn)鹘y(tǒng)的詞共現(xiàn)模式,因此可以更好地對短文本進(jìn)行主題特征挖掘。GRU不僅保持LSTM可以對文本的上下文信息進(jìn)行有效刻畫,解決文本長期依賴問題的優(yōu)勢,而且只有兩個門的計(jì)算,參數(shù)減少,節(jié)省了模型的訓(xùn)練時間。但不管是LSTM還是GRU,都有一個問題,它是從左往右推進(jìn)的,后面的輸入會比前面的更重要。很明顯對于本任務(wù)來說這是不妥的,因?yàn)榱奶熘懈髡Z句應(yīng)該是平權(quán)的,因此本文采用雙向GRU來完整捕捉上下文信息。
由于目前公開的醫(yī)療聊天語料較少,因此本文使用的實(shí)驗(yàn)數(shù)據(jù)是通過爬蟲程序在浙江大學(xué)附屬第一醫(yī)院爬取下來的用戶聊天語料,共計(jì)18 822條。通過關(guān)鍵字及模板規(guī)則過濾掉對意圖沒有貢獻(xiàn)的語句,再人工將同一用戶的一句或多句話歸為一組,共分了5 660組數(shù)據(jù)。然后由兩名標(biāo)注人員各自對其標(biāo)注意圖類別,通過匹配兩名標(biāo)注人員的標(biāo)注結(jié)果,去掉不一致,最終得到標(biāo)注結(jié)果一致的5 425組數(shù)據(jù),如表2所示。其中,明確沒有就醫(yī)意圖有891組,極小可能就醫(yī)有538組,可能就醫(yī)有1 868組,極大可能就醫(yī)有782組,明確具有就醫(yī)意圖有1 346組。另外,為避免實(shí)驗(yàn)結(jié)果的偶然性,在進(jìn)行對比實(shí)驗(yàn)時,采用5折交叉驗(yàn)證,即將數(shù)據(jù)集分成5等份,其中1份作為測試集,其余4份作為訓(xùn)練集,進(jìn)行循環(huán)實(shí)驗(yàn),得到5次分類結(jié)果。
本文的用戶就醫(yī)意圖識別本質(zhì)是多分類問題,因此采用文本分類器中常用的評估指標(biāo)來對每種類型進(jìn)行評價,即準(zhǔn)確率P、召回率R以及二者的綜合評價F-measure值,如式(10)~ (12)所示:
P=TP/(TP+FP)
(10)
R=TP/(TP+FN)
(11)
F-measure=2RP/(R+P)
(12)
其中:屬于類A的樣本被正確分到類A中,記這一類樣本數(shù)為TP(True Positive);屬于類A卻被錯誤分到類A以外的其他類,記這一類樣本數(shù)為FN(False Negative);不屬于類A被正確分到類A以外的其他類,記這一類樣本數(shù)為TN(True Negative);不屬于類A卻被錯誤分到類A中,記這一類樣本數(shù)為FP(False Positive)。
關(guān)于整體性能的評價,用準(zhǔn)確率P、召回率R和F-measure的期望,其中每種類型的權(quán)重與其對應(yīng)語料數(shù)量成比例。
表2 實(shí)驗(yàn)語料舉例
BTM-BiGRU混合模型的參數(shù)設(shè)置中,BTM部分,將主題數(shù)設(shè)為K=8,α=50/K=6.25,β=0.01,在不影響實(shí)驗(yàn)效果的情況下選取主題-詞概率分布中前N=2個詞作為文檔特征。此基礎(chǔ)上得到主題-詞分布如表3所示。在word2vec時,設(shè)置詞向量維度為100。在BiGRU這部分設(shè)置輸出維度為128。另外,設(shè)置訓(xùn)練過程中batch_size=32,為防止數(shù)據(jù)過擬合,還應(yīng)使用dropout[19]與L2正則化進(jìn)行約束,其中dropout應(yīng)用于BiGRU層與Softmax分類層之間,并且dropout=0.25,而L2正則化則應(yīng)用于最終的Softmax層。
表3 主題-詞分布
實(shí)驗(yàn)環(huán)境搭建在VMware Workstation+Ubuntu+Linux下。實(shí)驗(yàn)中,首先需要對上述實(shí)驗(yàn)數(shù)據(jù)進(jìn)行清洗,去除數(shù)據(jù)中的雜質(zhì)文本,然后采用jieba分詞工具進(jìn)行分詞,之后使用 Google開源提供的word2vec進(jìn)行詞向量模型的訓(xùn)練以量化文本。
本文為與現(xiàn)有方法作更好對比,除基于BTM和BiGRU單模型外,還比較傳統(tǒng)模板匹配、SVM分類方法以及文獻(xiàn)[20]中提到目前較好的基于卷積和長短期記憶網(wǎng)絡(luò)(Convolution Neural Network and Long-Short Term Memory Network,CNN-LSTM)的方法。CNN-LSTM利用CNN能夠獲取深層特征的優(yōu)點(diǎn),先對用戶聊天文本提取局部代表性特征,然后為保證文本時序性,按照卷積先后順序重新組合,再依次輸入LSTM中進(jìn)行上下文學(xué)習(xí),最后得到較為理想的分類結(jié)果。不同方法下,整體性能表現(xiàn)如表4所示。
表4 意圖識別實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)結(jié)果表明,在聊天機(jī)器人中用戶就醫(yī)意圖識別任務(wù)上,本文的BTM-BiGRU方法效果最好。對比基于BTM、SVM方法與本文方法的實(shí)驗(yàn)結(jié)果,說明了BiGRU的優(yōu)勢,它能夠充分地利用上下文建模。對比基于BiGRU、CNN-LSTM方法與本文方法的實(shí)驗(yàn)結(jié)果,則證明本任務(wù)上使用BTM挖掘的主題特征作為循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入效果更好。雖然基于模板匹配方法的效果不錯,但其需要事先獲取意圖模板,比較費(fèi)時費(fèi)力,而且一旦模板不準(zhǔn)確,效果將很差。
實(shí)際應(yīng)用中,不僅考慮方法效果,也需要關(guān)注其時間復(fù)雜度??紤]到傳統(tǒng)基于模板匹配的意圖識別方法,其模板獲取所花費(fèi)時間遠(yuǎn)遠(yuǎn)多于其余五種方法,因此這里主要比較基于SVM、CNN-LSTM、BTM、BiGRU以及BTM-BiGRU的方法執(zhí)行時間,如表5所示。
這四種方法訓(xùn)練模型時均涉及迭代,迭代次數(shù)不同所用時間也就不同,這里均以最終實(shí)驗(yàn)效果最好為準(zhǔn)得到各自執(zhí)行時間。結(jié)果表明,時間最短的是基于SVM的方法,時間最長的是CNN-LSTM,這體現(xiàn)了GRU的優(yōu)勢,相比LSTM能夠節(jié)省訓(xùn)練時間。因此無論從方法效果還是時間復(fù)雜度上考慮,本文提出的BTM-BiGRU方法都是行之有效的。
表5 各方法執(zhí)行時間
在線醫(yī)療聊天機(jī)器人中,如果能在聊天過程中識別出用戶就醫(yī)傾向,將便于進(jìn)一步為用戶提出合理治療建議以及推薦相應(yīng)科室。本文將任務(wù)當(dāng)作文本分類問題,并針對醫(yī)療聊天文本的特點(diǎn),提出了基于短文本主題模型和雙向門控循環(huán)單元的意圖識別模型BTM-BiGRU來進(jìn)行用戶就醫(yī)意圖識別。實(shí)驗(yàn)結(jié)果表明,該混合模型的整體分類準(zhǔn)確率優(yōu)于傳統(tǒng)的用戶意圖識別方法以及目前較好的CNN-LSTM方法。
本文在不同階段利用了BTM和BiGRU提取特征,后續(xù)工作將在特征工程上作進(jìn)一步研究,尋找更好方法進(jìn)行醫(yī)療聊天文本特征提取,從而繼續(xù)提高聊天機(jī)器人中用戶就醫(yī)意圖識別的效果。