遲海洋,嚴(yán) 馨,徐廣義,陳 瑋,周 楓
1(昆明理工大學(xué) 信息工程與自動化學(xué)院,昆明 650500) 2(昆明理工大學(xué) 云南省人工智能重點(diǎn)實(shí)驗(yàn)室,昆明 650500) 3(云南南天電子信息產(chǎn)業(yè)股份有限公司,昆明 650040) E-mail:kg_yanxin@sina.com
信息技術(shù)的發(fā)展和智能設(shè)備的普及極大地改善和提高了人們的生活質(zhì)量.在醫(yī)療方面,用戶可以利用在線問答社區(qū)、網(wǎng)站等方式來咨詢、獲取健康服務(wù)和信息,如通過各種在線問診平臺或網(wǎng)站查找和咨詢健康問題已逐漸成為人們到醫(yī)院就診前的首先步驟.基于醫(yī)療問答社區(qū)產(chǎn)生的大量健康問句數(shù)據(jù)、記錄具有豐富的醫(yī)療、研究和實(shí)用價值.通過對用戶提出的健康問句分類和分析,一方面可以提高已回答問題的檢索效率、提升用戶體驗(yàn);另一方面還可以創(chuàng)造更多的價值,如向用戶推薦相關(guān)的醫(yī)師和科室等.
問答系統(tǒng)的關(guān)鍵是要準(zhǔn)確理解和識別用戶問題的意圖[1],并能準(zhǔn)確地返回給用戶預(yù)期的答案.而對用戶的健康問句意圖識別可以看作分類問題[2,3],即事先在該領(lǐng)域范圍內(nèi)定義可能的意圖類別,再用分類方法將問句劃分到合適的類中.目前在用戶意圖分類研究中,對已有的方法進(jìn)行總結(jié),大致劃分為3類:
1)基于規(guī)則的方法:該方法需要通過領(lǐng)域?qū)<胰斯ぬ崛♂槍μ囟▎栴}類型的特征規(guī)則,進(jìn)而構(gòu)建一個基于規(guī)則的分類器對問句進(jìn)行分類.Ramanand等[4]提出基于規(guī)則和圖的方法來獲取意圖模板進(jìn)而實(shí)現(xiàn)用戶的消費(fèi)意圖.Campillos等[5]通過預(yù)先構(gòu)建的規(guī)則與問句中相關(guān)字詞、句子匹配,實(shí)現(xiàn)了對醫(yī)療健康問題的分類.該方法雖然對數(shù)據(jù)依賴性小,但需要定義大量的規(guī)則、費(fèi)時費(fèi)力且泛化能力較弱,很難構(gòu)建一個通用的規(guī)則架構(gòu).
2)基于傳統(tǒng)機(jī)器學(xué)習(xí)的方法:該方法基于特征工程,不需要人工定義大量的規(guī)則.陳浩辰[6]分別使用SVM和Na?ve Bayes分類器實(shí)現(xiàn)了對微博語料的消費(fèi)意圖分類.Roberts等[7]使用k近鄰算法幫助對醫(yī)學(xué)問題的資源類型進(jìn)行分類;Guo等[8]采用SVM對中文醫(yī)療健康問句進(jìn)行分類.雖然該方法取得了不錯的效果,但仍然存在諸多問題:一方面,傳統(tǒng)的機(jī)器學(xué)習(xí)方法需要人工構(gòu)建分類特征,成本較高;當(dāng)數(shù)據(jù)集變化時,會演變成特征設(shè)計(jì)、特征選取問題.另一方面,選取的分類特征難以獲取句子中詞與詞之間的深層語義信息,最終無法準(zhǔn)確理解用戶問句的語義信息.
3)基于深度學(xué)習(xí)的方法:該方法不需要人工顯式地給定分類特征,極大降低了獲取文本特征的難度.目前深度學(xué)習(xí)技術(shù)快速發(fā)展、已成為研究熱點(diǎn),在NLP領(lǐng)域得到廣泛的應(yīng)用.Ravuri等[9]提出將LSTM與RNN兩種模型應(yīng)用于意圖分類問題.Hughes等[10]使用CNN對臨床文本進(jìn)行分類.錢岳等[11]構(gòu)建了一種基于卷積的長短期記憶網(wǎng)絡(luò)(Convolutional-LSTM)模型對用戶的出行消費(fèi)意圖識別,相較于傳統(tǒng)機(jī)器學(xué)習(xí)和單獨(dú)使用CNN或LSTM的深度學(xué)習(xí)方法,F值有較為不錯的提升.唐曉波等[12]提出了一種基于關(guān)鍵詞詞向量特征擴(kuò)展的健康問句分類模型,使用LDA提取問句關(guān)鍵字并對其進(jìn)行詞向量特征擴(kuò)展,最后由CNN實(shí)現(xiàn)分類,有效提升了健康問句的分類效果.余慧等[13]構(gòu)建了基于BTM(Biterm Topic Model)-BiGRU的意圖識別模型,利用BTM主題建模對短文本進(jìn)行主題特征挖掘并結(jié)合深度學(xué)習(xí)的方法采用雙向GRU網(wǎng)絡(luò)捕獲上下文信息,在用戶就醫(yī)意圖識別上獲得理想的效果.張志昌等[14]使用卷積和獨(dú)立循環(huán)神經(jīng)網(wǎng)絡(luò),構(gòu)建了一種融合局部語義信息和全局結(jié)構(gòu)信息的中文醫(yī)療健康問題分類方法,在中文醫(yī)療健康數(shù)據(jù)集上取得了非常好的效果.現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)及其變體結(jié)構(gòu)獲取整個句子序列信息有限,且中文醫(yī)療健康問句文本長度較短、字符數(shù)少、特征稀疏,不宜看作為一般的文本分類任務(wù)[15],分類性能尚有提升空間.
針對上述問題,本文提出一種融合主題信息和Transformer模型的健康問句意圖分類方法,主要貢獻(xiàn)如下:
1)針對卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的不足,構(gòu)建完全基于多頭自注意力機(jī)制的Transformer意圖分類模型,充分提取句子內(nèi)的語義信息.
2)針對中文醫(yī)療健康問句數(shù)據(jù)量龐大且文本字符數(shù)少、特征稀疏的特點(diǎn),引入BTM主題模型對用戶問句隱含主題建模,可以更好地對問句進(jìn)行特征挖掘.
主題模型作為語義挖掘的利器,是一種對文字隱含主題進(jìn)行建模的方法.主題是一個概念、一個方面,表現(xiàn)為一系列相關(guān)的詞語,用數(shù)學(xué)語言描述,主題就是詞匯表上詞語的條件概率分布,與主題關(guān)系越密切的詞語,它的條件概率越大,反之則越小.例如一個文本若是涉及“癥狀”這個主題,那么“癥狀”“表現(xiàn)”等詞語便會以較高的頻率出現(xiàn).
傳統(tǒng)的主題模型主要是通過計(jì)算詞項(xiàng)在文本中的重要性來建模,若文本內(nèi)容較短、數(shù)據(jù)稀疏則難以計(jì)算詞項(xiàng)的重要性.針對LDA對短文本建模的缺陷,BTM主題模型應(yīng)運(yùn)而生[16-18].BTM模型的思想是對數(shù)據(jù)集中的同一上下文共同出現(xiàn)的一對無序詞項(xiàng)進(jìn)行建模,通過分析建模的結(jié)果,兩個詞項(xiàng)是否屬于同一類別取決于它們的共現(xiàn)次數(shù).
傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)如RNN、LSTM在編碼句子時無法進(jìn)行并行計(jì)算,若層數(shù)較深時計(jì)算速度更是嚴(yán)重下降.雖然CNN能夠?qū)崿F(xiàn)并行計(jì)算,但不能直接處理過長的序列樣本.針對以上提到的CNN、RNN、LSTM的不足,2017年Vaswani等[19]提出了一種基于自注意力機(jī)制的Seq2Seq模型Transformer,該模型可以將序列中所有單詞并行處理,同時將上下文與較遠(yuǎn)的單詞結(jié)合起來,在每個步驟中,每一個符號的信息都可以借助自注意力機(jī)制與其他所有的符號進(jìn)行溝通.Transformer模型包含編碼器和解碼器兩個部分,編碼器由N個網(wǎng)絡(luò)塊組成,每一個塊中包含一個自注意力子層和前饋神經(jīng)網(wǎng)絡(luò)子層,同時每個子層中還加入了殘差網(wǎng)絡(luò)和歸一化;解碼器的網(wǎng)絡(luò)塊一般與編碼器網(wǎng)絡(luò)塊相同,也是由N(一般為6)個網(wǎng)絡(luò)塊組成,不過解碼器的網(wǎng)絡(luò)中多了一個Masked 多頭注意力層.
本文通過Transformer模型學(xué)習(xí)句子序列信息,可以使模型更加專注詞的不同位置,進(jìn)而理解句子中詞之間的順序和距離信息,同時考慮到中文醫(yī)療健康問句的特點(diǎn)以及BTM主題模型處理中文短文本語料的優(yōu)勢,利用BTM對主題建模和使用主題詞向量模型[20]TWE(Topical Word Embedding)進(jìn)行主題嵌入從而獲得詞級主題特征向量作為額外的特征信息,可以使模型充分利用句子的各種特征信息,進(jìn)而有效的識別出句子的意圖類別.融合主題信息和Transformer模型的問句意圖分類模型框架如圖1所示.
圖1 模型框架圖Fig.1 Model frame diagram
針對中文醫(yī)療健康問句的特點(diǎn),若使用傳統(tǒng)的詞共現(xiàn)方式進(jìn)行主題挖掘,效果不夠理想,因此本文采用Cheng等[21]提出的利用詞對共現(xiàn)代替詞共現(xiàn)的方法來進(jìn)行主題建模.Bi-term表示出現(xiàn)在同一文本中的兩個無序詞構(gòu)成的詞對,BTM通過對可以表達(dá)潛在主題的Bi-term的生成過程進(jìn)行建模,以潛在的方式反映語料庫中的語義結(jié)構(gòu),解決了短文本數(shù)據(jù)稀疏的問題.
Step 1.構(gòu)建語料主題分布θ~Dirichlet(α).
Step 2.對于每個主題k,k ∈[1,K],K為整個語料庫中的主題數(shù)目,從參數(shù)為β的Dirichlet先驗(yàn)中生成主題-詞匯分布φk~Dirichlet(β).
Step 3.對于每一個詞對bi∈B:
Step 3.1.從整個語料庫的主題分布θ中抽取一個zi來生成詞對的主題分配,記為zi~Multinational(θ).
Step 3.2.從抽取的主題z中獲取詞對b的兩個不同詞wi,1,wi,2,且wi,1,wi,2~Multitional(φk).
BTM生成過程如圖2所示.
圖2 BTM的圖解模型Fig.2 Graphical model of BTM
給定數(shù)據(jù)集,通過BTM主題建模最終可以推斷語料中主題-詞概率分布p(wi|zi)及文檔-主題概率分布p(zi|s),由主題-詞概率分布和文檔-主題概率分布可以得到詞在各個主題下的對應(yīng)概率分布pwi,基于開源的TWE模型訓(xùn)練后可以生成主題向量矩陣Wt.設(shè)給定文本序列S=(w1,w2,…,wn),第i個詞wi對應(yīng)主題zj的概率可由公式(1)計(jì)算所得:
p(zj|wi,s)=p(wi|zj)×p(zj|s)
(1)
對于每一個主題計(jì)算wi對應(yīng)的主題概率分布并進(jìn)行歸一化操作,可以得到wi在不同主題下的概率分布pwi,計(jì)算方法見公式(2):
pwi=[p(z1|wi,s),p(z2|wi,s),…,p(zK|wi,s)]
(2)
其中,pwi可以反映wi在不同主題下的權(quán)重.
基于wi的主題概率分布pwi與主題向量矩陣Wt相乘可以獲得詞wi所對應(yīng)的主題詞向量,計(jì)算方法見公式(3):
(3)
將詞wi的主題詞向量twi作為附加特征與其相對應(yīng)的詞向量W[wi]進(jìn)行拼接,生成詞的最終表示,見公式(4):
xi=W[wi]?twi
(4)
為了學(xué)習(xí)輸入序列的句子表示,本文將融合了詞主題信息的詞向量集合X={x1,x2,…,xn}輸入到Transformer編碼器網(wǎng)絡(luò)中,進(jìn)行特征提取,如圖3所示.本文只使用Transformer的編碼器部分,Transformer編碼器由兩個子層組成,結(jié)構(gòu)如圖4所示.
圖3 基于Transformer編碼器模型Fig.3 Encoder model based on Transformer
圖4 Transformer編碼器結(jié)構(gòu)Fig.4 Transformer encoder structure
Transformer獲取句子序列特征過程如下:
1)將融合了主題詞向量的序列X輸入到編碼器中.
2)由于Transformer模型缺少對輸入序列中詞語順序的表示,所以在編碼器層的輸入添加一個位置編碼向量Positional Encoding,該向量決定當(dāng)前詞在序列中的位置,計(jì)算方法見公式(5)、公式(6):
PE(pos,2i)=sin(pos/100002i/dmodel)
(5)
PE(pos,2i+1)=cos(pos/100002i/dmodel)
(6)
其中,pos表示當(dāng)前詞在句子中的位置,i表示向量中每個值的索引,dmodel表示詞向量的維度.
3)多頭自注意力的輸出計(jì)算見公式(7)-公式(9):
(7)
(8)
Z=MultiHead(Q,K,V)=Concat(head1…h(huán)eadh)WO
(9)
4)利用殘差連接和層歸一化調(diào)整特征信息,可以有效避免梯度消失、加快收斂速度和提高模型的性能,計(jì)算見公式(10):
L=LayerNorm(X+Z)
(10)
其中,LayerNorm為歸一化函數(shù).
5)通過前饋神經(jīng)網(wǎng)絡(luò)對經(jīng)過殘差連接和歸一化處理的輸出L做兩次線性變換,并使用ReLU激活函數(shù)激活,計(jì)算見公式(11):
FFN(L)=max(0,LW1+b1)W2+b2
(11)
其中,W1,W2為權(quán)重矩陣,b1,b2為偏置矩陣.
6)最后再通過一次殘差網(wǎng)絡(luò)和層歸一化調(diào)整特征信息作為Transformer編碼器的最后輸出,見公式(12):
S=LayerNorm(L+FFN(L))
(12)
本文使用Softmax分類器計(jì)算問句被分到每個類別標(biāo)簽的概率,從而實(shí)現(xiàn)問句的意圖分類;通過反向傳播機(jī)制對模型中的參數(shù)不斷進(jìn)行訓(xùn)練,利用最小化交叉熵對模型進(jìn)行優(yōu)化,見公式(13)、公式(14)所示.
y=softmax(WfS+bf)
(13)
其中,Wf為全連接層的權(quán)重矩陣,bf為偏置.
(14)
本文采用的實(shí)驗(yàn)數(shù)據(jù)集來源于兩部分:
1)網(wǎng)絡(luò)(1)https://github.com/zhangsheng93/cMedQA2中整理的中文醫(yī)學(xué)QA數(shù)據(jù)集questions.csv文件中提供的用戶問句,該數(shù)據(jù)集所含用戶問句豐富,累計(jì)數(shù)量擁有12萬條.本文從中隨機(jī)抽取20%的樣本,為了提高樣本的質(zhì)量,先對抽取的樣本進(jìn)行篩選,剔除多意圖或意圖不明確的樣本,確保每個問句只含有單一意圖,再將其分成四部分交由四組人員獨(dú)立對其進(jìn)行人工標(biāo)注,通過匹配每組人員的語料標(biāo)注結(jié)果,去掉標(biāo)注不一致部分從而確定每個樣本的分類標(biāo)簽.
2)爬取國內(nèi)知名健康網(wǎng)站:尋醫(yī)問藥網(wǎng)(2)http://z.xywy.com/、好大夫在線(3)https://www.haodf.com/,近一年用戶提出的健康問句[22].考慮到隨機(jī)抽取的樣本中存在數(shù)據(jù)不平衡的現(xiàn)象,其中病因和治療類的數(shù)據(jù)偏多,所以通過爬取在線健康網(wǎng)站的部分語料作為擴(kuò)充.
目前分類體系尚無統(tǒng)一的標(biāo)準(zhǔn),具體到健康醫(yī)療領(lǐng)域,若使用開放領(lǐng)域的問句分類方式難以滿足其分類需求,還需面向領(lǐng)域知識的主題分類[22],本文在基于健康問答社區(qū)的主題分析、中文健康問句分類[23-25]以及綜合分析語料中所涉及的用戶的問題基礎(chǔ)上,根據(jù)期望查詢目標(biāo)將用戶問句大致歸類并在此基礎(chǔ)上開展實(shí)驗(yàn).對數(shù)據(jù)集進(jìn)行預(yù)處理后得到20000條樣本,每種類別的樣本數(shù)量、類別標(biāo)簽及示例如表1所示.
表1 意圖分類及示例Table 1 Intent classification and examples
本文實(shí)驗(yàn)基于Pytorch深度學(xué)習(xí)框架實(shí)現(xiàn),使用Adam優(yōu)化器,學(xué)習(xí)率為0.001,模型具體參數(shù)設(shè)置如表2所示.
表2 實(shí)驗(yàn)參數(shù)設(shè)置Table 2 Experimental parameter setting
本文采用精確率P(Precision)、召回率R(Recall)及F1值來對問句意圖分類效果進(jìn)行評價,計(jì)算見公式(15)-公式(17):
(15)
(16)
(17)
其中TP表示將正類預(yù)測為正類的問題數(shù);FP表示將負(fù)類預(yù)測為正類的問題數(shù);FN表示將正類預(yù)測為負(fù)類的問題數(shù).
本文實(shí)驗(yàn)中,將原始語料經(jīng)過預(yù)處理后按9∶1比例分為訓(xùn)練集和測試集,并在谷歌提供的BERT預(yù)訓(xùn)練模型基礎(chǔ)上對數(shù)據(jù)集進(jìn)行fine-tune,生成詞向量.
為驗(yàn)證模型的有效性,本文使用同一個數(shù)據(jù)集,選取經(jīng)典的機(jī)器學(xué)習(xí)方法(SVM)和深度學(xué)習(xí)方法(CNN[26]、LSTM[27])作為基線并與本文采用的Transformer編碼器網(wǎng)絡(luò)作對比實(shí)驗(yàn);同時,將本文提出的融合了詞主題信息的BTM-Transformer模型與LDA-CNN[12]、BTM-BiGRU[13]模型作對比實(shí)驗(yàn).不同方法在測試語料上整體分類性能對比實(shí)驗(yàn)結(jié)果見表3,不同方法在其各個意圖分類中F1值比較見表4.
表3 不同方法對比實(shí)驗(yàn)結(jié)果Table 3 Comparative results of different experimental methods
由表3、表4可以看出,本文提出的融合詞主題信息和Transformer模型的問句意圖分類方法在本文構(gòu)建的語料中取得了最好的效果.
表4 不同方法在其各個意圖分類中F1值比較Table 4 Comparison of F1 values in each intention classification in different methods %
相較于傳統(tǒng)的SVM機(jī)器學(xué)習(xí)方法,基于深度學(xué)習(xí)的方法在意圖識別效果上均有較大的提高.
對比CNN、LSTM、Transformer這3種深度學(xué)習(xí)網(wǎng)絡(luò)模型,Transformer表現(xiàn)出了更強(qiáng)的特征獲取和表達(dá)能力.雖然CNN獲取句子局部特征能力較強(qiáng),但缺乏對整個句子的語義表達(dá)和上下文時序關(guān)系的建模.基于LSTM的分類方法較SVM和CNN均有所提高,但存在捕捉特征不全、長程依賴、無法挖掘句子深層次信息以及梯度消失和爆炸的問題.由表4可以看出基于LSTM的分類方法在某些類別上提升并不明顯.基于Transformer的模型比傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)可以提取到句子中更豐富的特征信息,語義編碼能力更強(qiáng).使用Transformer編碼器提取句子特征,可以很好地捕捉到句子的長依賴特征以及充分提取句子內(nèi)的語義信息,實(shí)現(xiàn)對句子的深層次語義編碼,提升模型性能.
對比LDA-CNN、BTM-BiGRU、BTM-Transformer這3種方法,本文提出的BTM-Transformer模型效果最佳.針對中文醫(yī)療健康問句文本字符數(shù)少、特征稀疏的特點(diǎn),引入BTM主題模型可以更好地對問句進(jìn)行特征挖掘,說明融合了詞主題信息的詞向量能夠豐富問句語義信息、緩解數(shù)據(jù)特征稀疏的問題,融入主題信息有助于提升模型整體分類性能.
本文提出了一種融合主題信息和Transformer模型的健康問句意圖分類方法,將詞向量和詞的主題向量拼接融合在一起,考慮了詞級別和主題級別兩個粒度的語義抽象表示,緩解了中文醫(yī)療健康問句文本字符數(shù)少、特征稀疏的問題;利用Transformer編碼器對句子進(jìn)行充分的特征提取,增強(qiáng)了問句表示,與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型相比效果提升顯著.在健康問句數(shù)據(jù)集上的實(shí)驗(yàn)表明,本文提出的方法能有效提升意圖分類效果,驗(yàn)證了該模型的有效性.
在下一步研究工作中,可以進(jìn)一步考慮將句子層面上的主題特征加入到模型中,增強(qiáng)問句的語義表示;同時嘗試結(jié)合知識圖譜來豐富短文本的語義信息,更好地解決數(shù)據(jù)稀疏問題,提升短文本分類性能.