程 強(qiáng), 杜中敏
(南陽師范學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,河南 南陽 473061)
作為一種古老的醫(yī)學(xué)體系,中醫(yī)在中國幾千年來一直扮演著不可或缺的角色,并且在世界各國越來越多地被用作現(xiàn)代醫(yī)學(xué)的補(bǔ)充療法.歷史上積累的中醫(yī)臨床記錄是做出臨床診斷的主要知識(shí)來源,而文本分類作為自然語言處理(NLP)的一項(xiàng)基本任務(wù),在管理和檢索臨床記錄以支持診斷和處方方面發(fā)揮著重要作用,這些方法無一例外地也適用于中醫(yī).
現(xiàn)有的臨床文本分類研究主要集中在用英文書寫的現(xiàn)代醫(yī)學(xué)臨床記錄上,推廣到中醫(yī)臨床記錄分類的應(yīng)用上存在一些障礙和困難.前期的工作是研究中醫(yī)臨床病歷分類的特征和學(xué)習(xí)算法,這需要投入大量的人力進(jìn)行人工標(biāo)注特征工程.
STANFILL等對(duì)臨床文本分類研究進(jìn)行了全面的文獻(xiàn)調(diào)查,大多數(shù)臨床文本分類工作都集中在英文臨床病歷和特征工程上,而對(duì)中文臨床文本和深度學(xué)習(xí)模型的研究有限[1].MUJTABA系統(tǒng)地探討了中醫(yī)臨床文本的特征和分類器,并進(jìn)一步提出了基于知識(shí)的詞嵌入方法,但并沒有使用最新的深度學(xué)習(xí)模型[2].近年來,HU等將中醫(yī)證型建模作為文本分類任務(wù),并使用了卷積神經(jīng)網(wǎng)絡(luò)(CNN)和fastText兩種深度學(xué)習(xí)模型[3],然而仍有許多先進(jìn)的深度學(xué)習(xí)模型尚未應(yīng)用到中醫(yī)學(xué)領(lǐng)域.
目前文本分類任務(wù)中三種常用的深度學(xué)習(xí)模型有CNN、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)和fastText.為了提高這些深度學(xué)習(xí)模型的表示能力,通常會(huì)引入注意力機(jī)制(self-attention)當(dāng)作模型的組成部分.近年來,引入self-attention的Transformer模型,凸顯出其在機(jī)器翻譯等NLP任務(wù)中的優(yōu)勢,而ELMo、ULMFiT、BERT和ERNIE,這類深度學(xué)習(xí)模型,也在NLP領(lǐng)域取得了巨大的成功;這些模型利用海量的自由文本數(shù)據(jù),學(xué)習(xí)上下文的詞嵌入,在多語言理解任務(wù)中獲得極高的準(zhǔn)確度.ERNIE模型,通過掩碼語言建模(Mask LM)和下一句預(yù)測(NSP),在大規(guī)模通用領(lǐng)域語料庫上訓(xùn)練雙向編碼器,可以為中文提供一個(gè)預(yù)訓(xùn)練模型.Alsentzer等用MIMIC-Ⅲ臨床記錄對(duì)BERT進(jìn)行了預(yù)訓(xùn)練,并針對(duì)自然語言推理和命名實(shí)體識(shí)別任務(wù),對(duì)BERT模型進(jìn)行了微調(diào)[4].HUANG等也在MIMIC-Ⅲ臨床記錄上對(duì)BERT進(jìn)行了預(yù)訓(xùn)練,針對(duì)出院病人的再入院可能預(yù)測,在BERT上進(jìn)行了微調(diào)[5].本文的方法與以上不同,采用對(duì)百度最新的預(yù)訓(xùn)練ERNIE2.0模型進(jìn)行二次微調(diào),先是用未標(biāo)注的臨床文本對(duì)通用領(lǐng)域的ERNIE模型進(jìn)行微調(diào),構(gòu)建出特定領(lǐng)域的模型,然后用臨床文本分類任務(wù)對(duì)特定領(lǐng)域模型進(jìn)行二次精調(diào),構(gòu)建TCM-ERNIE模型,專門用于中醫(yī)臨床病歷分類,取得了不錯(cuò)的分類效果.
本文從《二續(xù)名醫(yī)類案》(ISBN 7-5381-2372-5)中提取的中醫(yī)醫(yī)案,構(gòu)建臨床基準(zhǔn)數(shù)據(jù)集.該數(shù)據(jù)集包含7037條記錄,分為5個(gè)專科類別(內(nèi)科、外科、婦科、耳鼻喉科和兒科),按照不同的醫(yī)學(xué)專業(yè)來檢索疾病.中醫(yī)的大多數(shù)疾病(除了眼病和骨病)都可以分為這5類.每條記錄只屬于5類當(dāng)中的一類.訓(xùn)練集包含4882條記錄,測試集包含2155條記錄.平均字符數(shù)為316個(gè).關(guān)于數(shù)據(jù)集的更多信息,請參考文獻(xiàn)[6].圖1顯示了訓(xùn)練集的一條示例記錄.
圖1 訓(xùn)練集的記錄示例
本文使用了中國工程科技知識(shí)中心(CKCEST)的46205份未標(biāo)注臨床病歷記錄,構(gòu)建特定領(lǐng)域的語料庫,提供中醫(yī)專業(yè)領(lǐng)域知識(shí)庫,其中包含有18327723個(gè)標(biāo)記.
ERNIE是在多層Transformer雙向編碼器架構(gòu)上開發(fā)的最先進(jìn)的預(yù)處理模型,具有注意力機(jī)制.ERNIE框架有兩個(gè)步驟:預(yù)訓(xùn)練和微調(diào).在預(yù)訓(xùn)練期間,ERNIE模型通過兩個(gè)自監(jiān)督的任務(wù),即掩碼語言建模(Mask LM)和下一句預(yù)測(NSP),在無標(biāo)簽的多語言通用領(lǐng)域數(shù)據(jù)(本文使用的數(shù)據(jù)來自百度中文百科)上進(jìn)行訓(xùn)練.為了進(jìn)行微調(diào),ERNIE模型用預(yù)訓(xùn)練參數(shù)進(jìn)行初始化,并利用下游任務(wù)的標(biāo)注數(shù)據(jù)對(duì)所有參數(shù)進(jìn)行微調(diào),比如文本分類、句子對(duì)分類和問題回答任務(wù).
標(biāo)準(zhǔn)ERNIE是在百度百科和百度新聞文本上進(jìn)行預(yù)訓(xùn)練的模型,它只能捕捉到一般的中文語法和語義信息.然而中醫(yī)臨床記錄與通用領(lǐng)域的文本有很大不同,它不僅包含了許多中醫(yī)領(lǐng)域特有的癥狀、證候和中藥詞匯,而且許多中醫(yī)臨床記錄是用古文書寫的,古漢語文字在句子不同位置中可以代表不同的含義.
針對(duì)預(yù)訓(xùn)練的ERNIE模型在中醫(yī)臨床記錄分類方面的不足,本文在對(duì)ERNIE文本分類器進(jìn)行最終微調(diào)之前,只使用未標(biāo)注的臨床語料庫對(duì)預(yù)訓(xùn)練的ERNIE模型進(jìn)行微調(diào).中間步驟使用與預(yù)訓(xùn)練過程相同的目標(biāo)值,采用的方法與ULMFiT中的3個(gè)步驟類似,同時(shí)遵循ERNIE的學(xué)習(xí)衰減率.
TCM-ERNIE微調(diào)方法采用的3個(gè)步驟如圖2所示.第1步與ERNIE預(yù)訓(xùn)練相同:使用百度最新發(fā)布的ERNIE2.0模型作為結(jié)果.第2步,使用46205條記錄中的實(shí)例句子來構(gòu)建句子對(duì).如果第1句和第2句是相鄰的,則NSP標(biāo)簽為正的.如果把句子2的50%部分,隨機(jī)用另一條臨床記錄中的句子替換掉,則NSP標(biāo)簽為負(fù)的.Mask LM任務(wù)與預(yù)訓(xùn)練ERNIE模型的相同.第3步,將臨床文本中的整條記錄作為ERNIE的單個(gè)句子輸入.步驟2采用步驟1的預(yù)訓(xùn)練權(quán)重作為初始化,步驟3使用步驟2的微調(diào)權(quán)重作為初始化.
標(biāo)準(zhǔn)ERNIE和TCM-ERNIE的主要區(qū)別是在步驟2中進(jìn)行中醫(yī)臨床領(lǐng)域建模的微調(diào).LM:語言建模,NSP:下一句預(yù)測.在Mask LM任務(wù),保留一部分輸入令牌用作預(yù)測.在NSP任務(wù),ERNIE預(yù)測兩個(gè)輸入句子是不是相鄰的.
與標(biāo)準(zhǔn)ERNIE一樣,TCM-ERNIE模型三個(gè)步驟中的每個(gè)步驟的輸入,可以是單個(gè)句子或者是句子對(duì).“句子”可以是步驟1和步驟3中任意的相鄰文本,不必是實(shí)際語言意義的句子.輸入的第一個(gè)標(biāo)記始終是某個(gè)特殊分類的標(biāo)記[CLS],句子對(duì)被打包成由特殊標(biāo)記[SEP]分隔的單個(gè)輸入序列,每個(gè)輸入令牌i都有一個(gè)嵌入標(biāo)記Ei.對(duì)應(yīng)于[CLS]和第i個(gè)輸入令牌相對(duì)應(yīng)的H維最終隱藏狀態(tài),C∈RH和Ti∈RH,用于分類任務(wù)的總序列指示和令牌指示.
圖2 TCM-ERNIE精煉方法的三個(gè)步驟
將本文的TCM-ERNIE模型與之前表現(xiàn)最好的、具有代表性的深度學(xué)習(xí)模型進(jìn)行了比較,具體如表1所示.
表1 具有代表性的深度學(xué)習(xí)模型
根據(jù)Devlin等的觀點(diǎn)[10],筆者為文本分類器設(shè)置了以下參數(shù),以便對(duì)TCM-ERNIE和ERNIE進(jìn)行微調(diào),步驟1:訓(xùn)練批次大小為32,學(xué)習(xí)周期為3,學(xué)習(xí)率為2e-5.對(duì)于TCM-ERNIE的步驟2,訓(xùn)練批次大小為32,學(xué)習(xí)周期為3,學(xué)習(xí)率為3e-5.為了獲得Yao等的最佳性能,使用了他們的默認(rèn)參數(shù)設(shè)置[6].對(duì)于CNN模型,使用了以下參數(shù):過濾器的數(shù)量256,內(nèi)核大小5,退出率0.5,學(xué)習(xí)率1e-3,批次大小128.對(duì)于LSTM模型:退出率0.5,學(xué)習(xí)率1e-3,批次大小128.對(duì)于fastText,使用其默認(rèn)設(shè)置.通過對(duì)比發(fā)現(xiàn),參數(shù)的微小改變并沒有使結(jié)果發(fā)生很大的變化.對(duì)于TCM-ERNIE、ERNIE、CNN和Bi-LSTM模型,隨機(jī)抽取10%的訓(xùn)練記錄作為驗(yàn)證集.
本文采用評(píng)估模型的常用的三個(gè)評(píng)價(jià)指標(biāo)即精確率(P)、召回率(R)和F1值.具體公式為:
(1)
式中,TP為模型正確識(shí)別的實(shí)體數(shù),F(xiàn)P為模型識(shí)別錯(cuò)誤的實(shí)體數(shù),F(xiàn)N為模型沒有檢測到的實(shí)體數(shù).
表2列出了不同模型的精確度、MacroF1得分和MicroF1得分.TCM-ERNIE表現(xiàn)最好,在3個(gè)指標(biāo)上明顯優(yōu)于所有基線模型(學(xué)生t檢驗(yàn),p<0.001),這也顯示出本文所用方法的有效性.進(jìn)一步分析,可以注意到PV-DBOW比詞袋模型表現(xiàn)更好,這意味著由文檔嵌入捕獲的本地詞共現(xiàn)信息,比文檔中的詞出現(xiàn)更有預(yù)測性.之前表現(xiàn)最佳的ESA-PV-DBOW+SVM仍然表現(xiàn)良好,甚至超過了某些深度學(xué)習(xí)模型,比如Word CNN、Bi-LSTM和fastText,這說明中醫(yī)領(lǐng)域知識(shí)中的詞相關(guān)度可以克服其稀疏性,以改善文檔嵌入方法.表2顯示出字袋模型比詞袋模型分?jǐn)?shù)的更低,說明詞的出現(xiàn)比字的出現(xiàn),更具有預(yù)測意義.相反,Word CNN和Word Bi-LSTM明顯比Char CNN和Char Bi-LSTM表現(xiàn)差,深度學(xué)習(xí)模型優(yōu)先考慮局部的詞/字序列連續(xù),而不是詞/字的出現(xiàn),所以它們才表現(xiàn)出不同的學(xué)習(xí)差異.這一結(jié)論也與HUANG的研究成果一致,基于字的深度學(xué)習(xí)模型效果一直優(yōu)于基于詞的模型.基于詞的模型處于劣勢是由于單詞分布的稀疏性(中文里詞比字多得多),這會(huì)導(dǎo)致更多的詞匯缺失和過度擬合.除了前面提到的原因外,古文風(fēng)格的中醫(yī)臨床記錄,因?yàn)楣盼男形姆浅:喚?,僅字符也可以代表足夠的語義.CNN模型比LSTM表現(xiàn)要好得多,因?yàn)镃NN可以學(xué)習(xí)更多的詞/字n-gram特征,以區(qū)別標(biāo)簽分類.例如,“鼻衄屢發(fā)”和“發(fā)瘍焮腫”與外科分類關(guān)聯(lián)度比較高.LSTM模型能夠以順序模式學(xué)習(xí)文本,可是文檔太長時(shí)就可能效果表現(xiàn)不佳.當(dāng)引入了注意機(jī)制,由于選擇了最具預(yù)測性的字符,char Bi-LSTM的性能得到了極大的改善.fastText模型也顯示出不錯(cuò)的效果,因?yàn)樗芤员O(jiān)督的方式學(xué)習(xí)文檔嵌入.ERNIE模型的效果明顯優(yōu)于前面的幾種方法,得益于ERNIE模型的Transformer可以學(xué)習(xí)n-gram特征,并通過注意力機(jī)制同時(shí)選中大部分預(yù)測性字符,而且在百度百科上精煉的ERNIE編碼還可以進(jìn)一步擴(kuò)充通用領(lǐng)域知識(shí).本文提出的TCM-ERNIE模型,從未標(biāo)注的臨床語料庫中提取的中醫(yī)領(lǐng)域知識(shí),進(jìn)一步提高了分類性能,這證明了專業(yè)領(lǐng)域知識(shí)在未標(biāo)記語料庫的有效性.在步驟2,將通用知識(shí)和中醫(yī)領(lǐng)域知識(shí)編碼到微調(diào)語言模型的參數(shù)中,如果提供更多的臨床文本和領(lǐng)域知識(shí),分類效果還可以進(jìn)一步提高.
表2 不同方法的測試結(jié)果
對(duì)于在文檔嵌入和學(xué)習(xí)過程中具有隨機(jī)性的深度學(xué)習(xí)模型,本文將所有模型運(yùn)行10次,并報(bào)告平均值±標(biāo)準(zhǔn)差.粗體數(shù)字是表現(xiàn)最好的結(jié)果.根據(jù)學(xué)生t檢驗(yàn),TCM-ERNIE的表現(xiàn)明顯優(yōu)于其他方法(p<0.001).
表3顯示了幾個(gè)表現(xiàn)最好的模型,在每個(gè)類別中取得的F1分?jǐn)?shù).可以看到,TCM-ERNIE在各個(gè)類別中都取得了最高分.與其他類別相比,訓(xùn)練記錄較少的類別(如耳鼻喉科-口腔科)改進(jìn)得更為明顯,因?yàn)槲礃?biāo)注語料庫中的中醫(yī)領(lǐng)域知識(shí)可以克服這些類別的稀疏性.就類別而言,可以看出婦科記錄的參考價(jià)值最大,因?yàn)樗鼈儼S多只針對(duì)女性患者的字/詞,而且表3中的4個(gè)模型在預(yù)測婦科類別時(shí)都表現(xiàn)良好,記錄較少的類別則更難分類.還應(yīng)注意到,許多方法如ESA-PV-DBOW+SVM方法,對(duì)兒科記錄不能達(dá)到滿意的F1分?jǐn)?shù),因?yàn)閮和瘚雰号c成人有許多共同的疾病和癥狀.ERNIE和Char CNN這樣的深度學(xué)習(xí)模型表現(xiàn)得更好,意味著注意力機(jī)制和對(duì)n-grams的最大池化可以提煉出兒科的特征,如年齡描述.
表3 每個(gè)類別的F1分?jǐn)?shù)以及模型
圖3 TCM-ERNIE中注意力模式的可視化
圖3顯示了TCM-ERNIE中的注意力機(jī)制,本文使用BertViz工具箱對(duì)第11層進(jìn)行可視化顯示.可以看到,記錄中的指示性癥狀特征,如“鼻衄”和“發(fā)瘍”,與標(biāo)簽“[CLS]”具有較高的注意力權(quán)重.該示例很好解釋了ERNIE如何才能取得更好的效果.學(xué)習(xí)到的注意力可以通過在交互系統(tǒng)中突顯出關(guān)鍵癥狀,提醒醫(yī)生關(guān)注,可以減輕醫(yī)生的閱讀負(fù)擔(dān).
用圖1的示例記錄作為輸入,圖3中顯示了[CLS]與第11層Transformer模型中的字符的注意力權(quán)重.線條的粗細(xì)和顏色反映了注意力的權(quán)重值.指示性字符具有較高的注意力權(quán)重.
本文研究了用于中醫(yī)臨床文本分類的多個(gè)深度學(xué)習(xí)模型,利用7037份名老中醫(yī)醫(yī)案和46205份臨床記錄,構(gòu)建中醫(yī)臨床記錄的特定領(lǐng)域語料庫,采用二次微調(diào)的方法重新優(yōu)化了ERNIE模型,在沒有任何預(yù)處理或特征提取的前提下取得比傳統(tǒng)方法更好的結(jié)果,而且還可以通過在未標(biāo)注的臨床語料庫上進(jìn)行微調(diào)來進(jìn)一步提高性能.最后,本文結(jié)合中醫(yī)特定領(lǐng)域的語料庫,重新優(yōu)化了ERNIE的最新雙向編碼器,構(gòu)建了專門用于中醫(yī)臨床分類的TCM-ERNIE模型.只需將臨床記錄的原始文字作為輸入,不再需要任何預(yù)處理和特征工程,例如中文分詞和停用詞/稀有詞的刪除,該方法在發(fā)現(xiàn)分類標(biāo)簽進(jìn)行自動(dòng)文本標(biāo)注方面取得了令人滿意的結(jié)果.未來研究方向可以通過增加更多的未標(biāo)注中醫(yī)臨床數(shù)據(jù)語料庫,進(jìn)行微調(diào)以提高TCM-ERNIE模型的分類效果,也可以通過知識(shí)圖譜進(jìn)行知識(shí)蒸餾來強(qiáng)化預(yù)訓(xùn)練過程.