徐星昊
(昆明理工大學 信息工程與自動化學院,云南 昆明 650000)
目前,智能醫(yī)療問答系統(tǒng)已逐步參與到醫(yī)院的診療過程中,如何將用戶所提出的問題進行準確分類是智能醫(yī)療問答系統(tǒng)的關鍵。例如問題“病情描述:高壓196 低壓139 血壓嚴重嗎?”的類別是“治療”,而問題“病情描述:請問高血壓能否吃銀杏葉片?”的類別是“健康生活方式”。由此,能否正確識別用戶問題的語義類別,是決定系統(tǒng)能否返回正確答案的重點,醫(yī)療健康問句分類尤為關鍵。
醫(yī)學健康問句具有以下兩個特點:第一,由于所有健康問句都是病人在平臺中的口語化提問,其中涉及的語句大多數(shù)為短文本,而短文本包含的詞項少,導致文本內(nèi)容缺乏足夠的上下文信息,極大地限制了短文本分類任務的完成。第二,健康問句具有較強的專業(yè)性和復雜性,病人在提出問題時會出現(xiàn)描述不準確、不全面等問題。對于短文本稀疏性問題的研究,陳等人[1]使用BERT、ERNIE 模型通過領域預訓練提取先驗知識信息,結合TextCNN模型生成高階文本特征向量并進行特征融合來實現(xiàn)短文本分類。楊等人[2]提出了一種基于多特征融合動態(tài)調(diào)整模型特征的方法進行短文本分類。而對于問句中病人描述不準確、不全面的問題,將表述不清晰的醫(yī)學關鍵詞進行加強解釋,有助于輔助健康問句的分類,如張等人[3]使用外部知識結合雙層注意力機制的方法進行短文本分類。以上研究方法都只是簡單地對特征進行融合。
健康問句的文本大多是短文本,詞項少且存在問句描述不清晰的問題,上述的幾種短文本分類方法都有一定的局限性,因此本文提出一種把基于變換器的雙向編碼器表征技術(Bidirectional Encoder Representations from Transformers,BERT)的字符級特征取平均與BERT 的句子級特征拼接的中文健康問句分類方法。本文的創(chuàng)新點是:通過將BERT 的字符級特征與BERT 的句子級特征融合,獲取多維度特征知識來為分類任務提供基礎,從而進一步改善多標簽文本分類(Multi-Label text classification,MLTC)效果。
1.1.1 BERT 模型概述
BERT 模型是以雙向Transformer 為基礎,面向掩碼模型(Masked Language Model)和下一句判斷(Next Sentence Prediction)任務構建的深度學習模型。當前,采用大量文本作為數(shù)據(jù)集預訓練而成的BERT 模型已成為處理多項自然語言處理(Natural Language Processing,NLP)任務的通用架構。
1.1.2 BERT 模型的輸出
BERT 模型的輸出有兩種模式:一種是字符級別的輸出,對應的是輸入短文本中的每一個字符所對應的特征表示;另一種是句子級別的向量,即BERT 模型輸出最左邊[CLS]特殊符號的向量。BERT 通常將[CLS]視作整個句子的語義特征,如圖1 所示。
圖1 BERT 輸出模型
在自然語言處理中,多標簽文本分類是一項基本且具有挑戰(zhàn)性的任務。MLTC 的目的是為給定的文本分配多個標簽。MLTC 已廣泛應用于情感分析、意圖識別以及問答系統(tǒng)等許多領域。隨著深度學習的發(fā)展,單標簽分類取得了巨大的成功。通過將問題視為一系列單標簽分類任務,可以將單標簽文本分類簡單地擴展到MLTC 任務,但是這種過度簡化的擴展通常會帶來較差的性能。與常規(guī)的單標簽分類不同,MLTC 各種標簽之間存在語義依賴性。由于本文的數(shù)據(jù)集不考慮標簽之間的語義依賴性,而是將問題視為一系列的單標簽分類任務,因此本文的多標簽分類流程如圖2 所示。
圖2 多標簽文本分類
大規(guī)模的預訓練語言模型開始出現(xiàn)在公眾的視線之中,是因為這些預訓練模型可以縮短人們花費在特征提取工作上的時間,使得自然語言處理走向另一個階段。BERT 就是這類基于預訓練任務的自然語言處理模型。這些模型往往基于大量的語料預訓練任務,在有足夠的算力的情況下,通過對下游任務的微調(diào)工作,能夠產(chǎn)生優(yōu)越的表現(xiàn)。通過對具體問題具體語料下的分析和模型結構的調(diào)整,預訓練模型結構可以產(chǎn)生更加優(yōu)異的效果。
由于本文數(shù)據(jù)集相與醫(yī)學健康相關,因此采用Zhang 等[4]提供的mcBERT 預訓練模型,在中文生物醫(yī)學領域的大量語料上完成訓練。
本文利用BERT 模型輸出的Sequence_out 取平均并與Pooler_out 進行拼接,也就是將BERT 的字符級特征取平均與句子級特征拼接,該模型記為SQ_BERT。CLS 代表的是分類任務的特殊token,它的輸出就是模型的Pooler_output。SQ_BERT 算法中,Pooler_output 對應的是[CLS]的輸出,Sequence_output 對應的是所有其他的輸入字的最后輸出。算法的具體流程步驟如下。
(1)輸入原始文本數(shù)據(jù)。
(2)對文本數(shù)據(jù)進行預處理。
(3)預處理好的數(shù)據(jù)按照[CLS]+句子A(+[SEP]+句子B+[SEP])的格式送入模型中。其中,[CLS]代表分類任務的特殊token,它的輸出就是模型的Pooler output;[SEP]是分隔符,句子A 以及句子B 是模型的輸入文本。句子B 可以為空,如果句子B 為空,則輸入變?yōu)閇CLS]+句子A。
(4)對步驟(3)所得到的結果Sequence_output取平均且與Pooler_output 進行拼接。
(5)將步驟(4)的結果作為輸入送入Sigmoid分類器進行分類。
基于提出的模型與算法,對問句的主題進行分類(包含A 診斷、B 治療、C 解剖學/生理學、D流行病學、E 健康生活方式、F 擇醫(yī)共6 個大類)實驗[5]。由于C 解剖學/生理學這一類數(shù)據(jù)集中僅含有一個問句數(shù)據(jù),無法保證實驗的全面性和有效性,因此在實際實驗中將問句主題分為5 類,即診斷、治療、流行病學、健康生活方式以及擇醫(yī)[6]。
3.1.1 數(shù)據(jù)集
本文所用的數(shù)據(jù)集為Kesci 的公眾健康問句分類比賽數(shù)據(jù)集和中文公眾健康問句數(shù)據(jù)集。Kesci的公眾健康問句分類比賽數(shù)據(jù)集的各項基本信息如表1 所示,中文公眾健康問句數(shù)據(jù)集[7]基本信息如表2 所示。
表1 Kesci 公眾健康問句分類數(shù)據(jù)集
表2 中文公眾健康問句數(shù)據(jù)集
3.1.2 評價指標
本文實驗的評價指標引入文本分類模型常用的評價指標,包括精確度(Precision,簡稱P)、召回率(Recall,簡稱R)以及F 值(F-Score,簡稱F)。
3.2.1 實驗平臺
本研究中所有的代碼都由Python 語言編寫,模型基于Pytorch 搭建。設備操作系統(tǒng)為Windows,配備GeForce RTX 1650,內(nèi)存為16 GB。
3.2.2 數(shù)據(jù)預處理
對于Kesci 公眾健康問句分類數(shù)據(jù)集,通過每一類數(shù)據(jù)量的比較發(fā)現(xiàn)解剖學/生理學這一類別數(shù)量分布極度不平衡。為保證數(shù)據(jù)集在訓練和測試的過程中的合理性,將于解剖學/生理學這一類別剔除掉。由于該數(shù)據(jù)集包含5 000 條有標簽的數(shù)據(jù),將數(shù)據(jù)集按4∶1 的比例分為訓練集和測試集[12]。
對于實驗參數(shù)設置,在訓練模型中,初始學習率設置為2×10-5,epoch 設置為5,并且利用K 折交叉驗證法(實驗中K=5)。由于BERT 的最大處理長度為512,因此在處理長文本的過程中使用截斷法。從數(shù)據(jù)集可以看到,由于問句基本集中在尾部,因此可以將頭部長度設置為127(稍短),尾部長度設置為383(稍長)。具體參數(shù)設置如表3 所示。
表3 參數(shù)設置
3.3.1 實驗結果
實驗結果分為兩部分,一個是Kesci 公眾健康問句分類數(shù)據(jù)集對比實驗,另一個是中文公眾健康問句數(shù)據(jù)集對比實驗。第一部分實驗分別為CNN[8]、LSTM[9]、BiGRU+Attention[10]以 及BERT 與本文模型在實驗中的效果對比,實驗結果如表4所示。
表4 實驗效果對比
第二部分實驗分別為CNN、LSTM、SA-CIndRNN 與本文模型在實驗中的效果對比。本文模型相較于一般的基線模型對比實驗效果有顯著提高,與同樣使用特征融合的模型SA-C-INDRNN 進行對比,效果也略高于SA-C-INDRNN 模型。實驗結果如表5 所示。
表5 對比實驗結果
3.3.2 實驗分析
由表4 的實驗結果可知,本模型的效果優(yōu)于LSTM、BiGRU 以及CNN 等傳統(tǒng)文本分類深度學習模型。相比于BERT,本文模型的F1 值上升了3.3%。通過效果分析可知,將BERT 的字符級特征取平均與句子級特征拼接的效果優(yōu)于BERT。由表5 結果可知本模型相比于傳統(tǒng)的深度學習模型有或多或少的提升,并且比SA-C-IndRNN 模型的結果F1 值上升了1%。
針對患者在提出健康問句時描述不明確、不全面以及短文本分類存在特征少且稀疏等問題,本文提出了通過將BERT 的字符級特征拼接于BERT 的句子級特征的方式進行分類。實驗結果表明,所提的方法在醫(yī)學中文健康問句數(shù)據(jù)集分類中取得了較好的效果,相較于傳統(tǒng)的深度學習方法有著明顯的提升。
本文方法提升了健康問句在問答系統(tǒng)中的分類效果,使問答系統(tǒng)能夠?qū)】祮柧溥M行更高效、便捷的分類,也可為其他領域的短文本分類模型構建提供借鑒。未來將對不同語料庫內(nèi)容進行對比,優(yōu)化關鍵詞詞典;嘗試在語義層面深度提取醫(yī)學短文本關鍵詞,從而深度提取關鍵詞,更好地實現(xiàn)醫(yī)學短文本分類。另外,盡管將BERT 的句子級特征與字符級特征拼接取得了較好效果,但是特征提取方面依舊不足,可進一步改善特征提取效果,從而使健康問句的分類更準確。