梁文桐 朱艷輝 詹 飛 冀相冰 張 旭
(湖南工業(yè)大學(xué)計算機學(xué)院 湖南 株洲 412008)(湖南省智能信息感知及處理技術(shù)重點實驗室 湖南 株洲 412008)
醫(yī)療命名實體識別(Medical Named Entity Recognition, MNER)是指從電子病歷(Electronic Medical Records, EMR)等醫(yī)療文本中抽取特定的實體術(shù)語作為醫(yī)療知識,如疾病和解剖部位等,是后續(xù)計算機輔助診斷、醫(yī)療知識圖譜的構(gòu)建和應(yīng)用等任務(wù)的基礎(chǔ)。
早期MNER方法包括基于規(guī)則和基于統(tǒng)計機器學(xué)習(xí)。其中,基于規(guī)則的方法往往需要醫(yī)療專家利用專業(yè)領(lǐng)域知識來編輯大量的規(guī)則,隨著醫(yī)療數(shù)據(jù)不斷增加,該類方法需要耗費大量的時間;基于統(tǒng)計機器學(xué)習(xí)的方法需要構(gòu)建大量的特征,如詞性特征、字符特征和詞典特征等,需要較高的特征工程成本而且很難獲取隱含特征信息。近年來,基于深度學(xué)習(xí)的方法成為醫(yī)療命名實體識別的主流方法。雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)結(jié)構(gòu)經(jīng)常在MNER任務(wù)中被使用,Xu等[1]使用混合語義的雙向LSTM和CRF模型針對疾病名進(jìn)行實體識別,Chowdhury等[2]提出一種多任務(wù)的雙向RNN模型,通過使用詞性標(biāo)注任務(wù)中獲得的知識更好地從中文電子病歷中抽取醫(yī)療實體。但是,RNN是一種序列結(jié)構(gòu),后一狀態(tài)的輸入依賴于前一狀態(tài)的輸出,無法很好地進(jìn)行并行計算,需要較多的訓(xùn)練時間。因此,Strubell等[3]提出了IDCNN模型以進(jìn)行NER任務(wù),在保持較高的識別精度的同時可以有效地進(jìn)行并行計算。Gao等[4]提出了基于IDCNN的醫(yī)療電子病歷實體識別方法,該方法在嵌入層加入位置嵌入信息,同時使用注意力機制[5](Attention Mechanism)對不同的字符分配不同的權(quán)重,在兩種測試數(shù)據(jù)集上都取得了較好的效果。Wu等[6]在BiLSTM-CRF模型的基礎(chǔ)上加入自注意力機制完成中文MNER任務(wù)。2018年10月,谷歌提出了BERT預(yù)訓(xùn)練語言模型,在多項自然語言處理任務(wù)中都有最好的表現(xiàn)[7]。Gong等[8]將BERT中文預(yù)訓(xùn)練嵌入運用到NER任務(wù)中,在中文數(shù)據(jù)集中取得了良好的效果。為了充分利用詞語邊界和語義信息,Zhang等[9]提出了用于中文NER任務(wù)的Lattice LSTM模型,該模型能夠很好地將潛在詞信息整合到基于字符的LSTM-CRF模型中。近期,圖卷積網(wǎng)絡(luò)[10](Graph Convolutional Networks, GCN)被運用到NER任務(wù)中,該類方法能夠很好地捕獲不同的語義和邊界信息,Cetoli等[11]使用GCN構(gòu)建依賴關(guān)系樹來完成英文NER任務(wù)。Gui等[12]引入具有全局語義的基于詞典的圖卷積網(wǎng)絡(luò),從而緩解基于RNN的模型容易受到單詞歧義影響的問題。GAT[13]在GCN的基礎(chǔ)上加入自注意力機制來分配給每個節(jié)點的鄰接節(jié)點不同的權(quán)重。
現(xiàn)有的MNER方法大多是使用單一神經(jīng)網(wǎng)絡(luò)模型進(jìn)行命名實體識別,識別時容易造成醫(yī)療實體邊界和類別識別錯誤,獲取文本語義特征不足,導(dǎo)致最終識別的效果較差。為了解決上述問題,本文提出一種基于深度學(xué)習(xí)多模型融合的醫(yī)療命名實體識別方法:首先使用BERT-MNER、IDCNN-MNER和GAT-MNER模型分別自動識別醫(yī)療實體,BERT預(yù)訓(xùn)練語言模型可以得到電子病歷上下文相關(guān)的語義表示,IDCNN保證了后續(xù)模型融合時子模型的多樣性和結(jié)構(gòu)差異性,可以取得更好的融合結(jié)果,GAT通過構(gòu)建三種字詞圖可以充分利用詞語的邊界和語義信息;然后采用基于變異系數(shù)的加權(quán)投票算法將三種模型的識別結(jié)果進(jìn)行融合處理;最后構(gòu)建基于歷史信息的實體糾錯算法優(yōu)化融合結(jié)果。
電子病歷通常由專業(yè)的醫(yī)務(wù)人員編寫,包含大量的醫(yī)療知識,醫(yī)療命名實體識別能夠?qū)㈦娮硬v中疾病名稱、解剖部位和藥品名稱等醫(yī)療實體識別出來。與通用領(lǐng)域?qū)嶓w識別相比,醫(yī)療實體識別存在實體數(shù)量眾多,實體長度不定,實體界限模糊,存在大量的別名、嵌套和縮略詞等特點,識別難度更大,單一模型很難達(dá)到較好的識別效果。
本文構(gòu)建的融合模型整體框架如圖1所示,基于深度學(xué)習(xí)融合模型的醫(yī)療命名實體識別整體算法如下:
Step1預(yù)處理醫(yī)療電子病歷數(shù)據(jù)集。將電子病歷集合按照字符進(jìn)行標(biāo)注,標(biāo)注時字符和預(yù)定義類別使用空格隔開。
Step2訓(xùn)練BERT-MNER、IDCNN-MNER和GAT-MNER模型?;谏疃葘W(xué)習(xí)訓(xùn)練上述三種醫(yī)療命名實體識別模型。
Step3識別電子病歷文本測試數(shù)據(jù)集。通過訓(xùn)練好的模型對測試集的電子病歷文本進(jìn)行預(yù)測。
Step4構(gòu)建融合模型。采用基于變異系數(shù)的加權(quán)投票算法對BERT-MNER、IDCNN-MNER和GAT-MNER的識別結(jié)果進(jìn)行融合處理。
Step5優(yōu)化融合模型結(jié)果。設(shè)計基于歷史信息的實體糾錯算法對融合結(jié)果進(jìn)一步優(yōu)化,得到最終醫(yī)療命名實體識別結(jié)果。
BERT-MNER模型結(jié)合BERT預(yù)訓(xùn)練語言模型和BiLSTM-CRF模型對電子病歷中的醫(yī)療實體進(jìn)行識別。傳統(tǒng)的BiLSTM-CRF模型使用在中文維基百科語料上訓(xùn)練的字向量來進(jìn)行字的嵌入表示,該嵌入表示是上下文無關(guān)的,而BERT-MNER模型使用BERT預(yù)訓(xùn)練語言模型可以得到電子病歷句子中每個字的上下文相關(guān)的字嵌入表示。
該模型主要分為BERT層、BiLSTM層和CRF層。BERT層主要獲取電子病歷句子中每個字的上下文相關(guān)的字嵌入表示,BiLSTM層將字嵌入進(jìn)行編碼自動抽取上下文特征,CRF層使用維特比算法解碼,從而得到全局最優(yōu)的標(biāo)簽序列。圖2為該模型的整體結(jié)構(gòu)。
預(yù)訓(xùn)練語言模型能夠表示字符或詞語的多義性,在自然語言處理的各項任務(wù)中有著廣泛的應(yīng)用。BERT預(yù)訓(xùn)練語言模型的結(jié)構(gòu)如圖3所示,使用Transformer作為編碼器,總特征向量由字向量、句子切分向量和位置向量相加得到,位置向量的計算公式如式(1)和式(2)所示,其中使用正弦和余弦函數(shù)編碼,pos表示的是電子病歷中的字符,i表示第幾維,dmodel是編碼后向量的維度。
(1)
PE(pos,2i+1)=cos(pos/10 0002i/dmodel)
(2)
LSTM是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,可以有效地解決由長期依賴問題帶來的梯度消失和梯度爆炸。CRF層的作用是約束電子病歷中每個字的預(yù)測標(biāo)簽的依賴關(guān)系,進(jìn)而獲得全局最優(yōu)序列。
IDCNN-MNER模型的整體結(jié)構(gòu)如圖4所示。該模型主要分為字嵌入層、IDCNN層和CRF層。字嵌入層將詞表中的字映射成低維稠密的實值向量,把序列中每個字對應(yīng)的字向量送入IDCNN層自動進(jìn)行特征提取。IDCNN層是將結(jié)構(gòu)相同的膨脹卷積塊堆疊,每次迭代將前一次的結(jié)果作為輸入,這種參數(shù)共享可以有效地防止模型過擬合,每個膨脹卷積塊有膨脹寬度分別為1-1-2 的三層膨脹卷積。最后,通過CRF層約束預(yù)測標(biāo)簽的依賴關(guān)系,獲取全局最優(yōu)序列。
IDCNN[14]在進(jìn)行卷積運算時增加了膨脹寬度,同時取消了池化操作,在增加感受域的同時減少了信息損失,能夠更快速和準(zhǔn)確地獲取較長的序列信息依賴。IDCNN-MNER模型的整體結(jié)構(gòu)與BiLSTM-CRF模型相似,其中IDCNN是一種特殊的CNN,該模型保證了后續(xù)模型融合時子模型的多樣性和結(jié)構(gòu)差異性,可以取得更好的融合結(jié)果。
GAT-MNER模型的整體框架如圖5所示,該模型包括Embedding層、Graph層、Fusion層和CRF層。其中Embedding層包括電子病歷句子中的每個字符和該句子在詞向量中匹配到的詞語即潛在詞詞典信息,使用雙向門控循環(huán)單元(BiGRU)自動提取字符級別的特征,將獲取的字符和詞語特征輸入到Graph層,該層包括字詞包含圖(C-graph)、字詞轉(zhuǎn)移圖(T-graph)和字詞網(wǎng)格圖(L-graph),使用圖注意力網(wǎng)絡(luò)(GAT)對三種圖進(jìn)行建模,然后通過Fusion層進(jìn)行融合,最后使用CRF層進(jìn)行解碼,獲得最優(yōu)預(yù)測序列。
因為單個醫(yī)療命名實體識別模型很容易導(dǎo)致預(yù)測結(jié)果的假陰性和假陽性,從而影響最終的識別準(zhǔn)確率。所以本文在一般的加權(quán)投票算法基礎(chǔ)上,引入變異系數(shù)這一統(tǒng)計量,提出一種基于變異系數(shù)的加權(quán)投票算法對BERT-MNER、IDCNN-MNER和GAT-MNER三種模型的結(jié)果進(jìn)行融合處理。
每個子模型可以看成一個二分類器,即分類正確和分類錯誤。對于二分類問題,假設(shè)存在n個分類器且相互獨立,第n個分類器分類正確的概率是P,錯誤的概率是1-P。H(n)表示n次分類中正確的概率,則n個分類器中有k個分類器分類正確的概率如式(3)所示。若錯誤率是δ,f(x)表示正確分類,則每個分類器h(x)分類錯誤的概率如式(4)所示。
(3)
P(h(x)≠f(x))=δ
(4)
對于一個醫(yī)療實體,假設(shè)超過半數(shù)的分類器識別出這個實體,那么最終認(rèn)為該實體識別正確。由霍夫丁不等式[15]可得,對于ε>0,k=(p-ε)n時,霍夫丁上界將按照指數(shù)級變化,有公式:
P(H(n)≤(p-ε)n)≤e-2ε2n
(5)
(6)
可以看出,當(dāng)融合模型的數(shù)量n逐漸增大時,其錯誤率呈指數(shù)下降。該結(jié)論說明,通過將BERT-MNER、IDCNN-MNER和GAT-MNER三個模型進(jìn)行融合,能夠提升醫(yī)療命名實體識別的精度。
在評價指標(biāo)中,變異系數(shù)在數(shù)值上等于標(biāo)準(zhǔn)差與平均數(shù)的比率,是衡量各觀測值的一個統(tǒng)計量,是刻畫離中趨勢的重要指標(biāo),反映了取值的差異和波動。如果評價指標(biāo)中某因素取值差異大,那么該因素是反映所評價對象的關(guān)鍵因素,因此要賦予更高權(quán)重。一般的加權(quán)投票算法往往選取評價指標(biāo)中的F1值作為賦予權(quán)重的依據(jù),但是這種算法不能全面地反映評價指標(biāo)中各因素的差異和波動。因此,本文將評價指標(biāo)中的精確率、召回率和F1值看作反映所評價對象的因素。因素的取值差異越大,該因素被賦予的權(quán)重越高。本文提出的基于變異系數(shù)的加權(quán)投票算法過程如下。首先,計算第i個分類器的精確率、召回率和F1值這三個因素的變異系數(shù)CVMi1、CVMi2和CVMi3:
(7)
式中:σMik、μMik分別是第i個分類器的第k個因素的標(biāo)準(zhǔn)差和平均數(shù)。
其次,計算各分類器的權(quán)重公式如下:
(8)
式中:weighti表示第i個分類器的權(quán)重;Mik表示第i個分類器的k個因素的值;CVMik是第i個分類器第k個因素的變異系數(shù);n是分類器的個數(shù)。將第i個分類器所有k個因素的變異系數(shù)和該因素占所有因素的比例對應(yīng)相乘求和后,即可得到各分類器的權(quán)重大小。確定完各分類器的權(quán)重后,計算第j個預(yù)測實體的投票綜合得分sum-scorej:
(9)
(10)
由于數(shù)據(jù)的標(biāo)注不一致,實體識別模型會不可避免地產(chǎn)生一些實體邊界預(yù)測錯誤的問題,為了解決該問題,本文提出基于歷史信息的實體糾錯算法,如算法1所示。該算法糾錯的處理準(zhǔn)則是如果預(yù)測的實體邊界與構(gòu)建的醫(yī)療實體歷史信息庫中存在的實體邊界不一致,那么將該實體邊界更新為庫中實體的邊界。
算法1基于歷史信息的實體糾錯算法
輸入:實體信息字典(Entity Dictionary,ED),電子病歷語句集(EMR Sentences,ES),電子病歷語句中識別出的實體列表(Recognized Entities List,REL)。
輸出:完成糾錯的實體列表(Complete Error Correction Entities List,CECEL)。
Step:
2.foreachsentence in ESdo
3. if string match with EDT
5.endfor
6.foreachrecognized entity in RELdo
7. if matching entity in MEL and recognized entity are overlap in position
8. if len(recognized entity) 9. update recognized entity position; 11.endfor 12.returnCECEL 該算法能夠利用訓(xùn)練集和驗證集中的醫(yī)療實體歷史信息構(gòu)建醫(yī)療實體歷史信息庫來糾正預(yù)測錯誤的實體。算法的輸入是實體信息字典ED、電子病歷語句集ES和電子病歷語句中識別出的實體列表REL,輸出是完成糾錯的實體列表CECEL。其中,實體信息字典是根據(jù)電子病歷訓(xùn)練集和驗證集的標(biāo)注實體信息構(gòu)建的,字典中的鍵為實體的名稱,值為實體的預(yù)定義類別。首先,使用Trie樹結(jié)構(gòu)將實體信息字典ED存儲為實體信息詞典樹EDT;其次,依次輸入電子病歷測試集的語句ES,查找該語句與實體信息詞典樹EDT中所有匹配的醫(yī)療實體,將其存儲為匹配實體列表(Matching Entities List, MEL);然后,對于電子病歷中的每一個語句,如果該語句中識別出的實體列表REL中的實體與匹配實體列表MEL中實體的位置存在重疊,且REL中該實體的長度小于MEL中實體的長度,那么就更新REL中的該實體的位置,將該實體添加至完成糾錯的實體列表CECEL;最后,返回完成糾錯的實體列表CECEL。 本文使用的實驗數(shù)據(jù)集源自CCKS2019評測任務(wù)一的子任務(wù)“面向中文電子病歷的醫(yī)療實體識別”。該數(shù)據(jù)集包括訓(xùn)練集和測試集,各包含7 717個句子和379個句子,每個句子標(biāo)注了醫(yī)療實體的名稱、開始位置、結(jié)束位置和預(yù)定義類別信息。共有六類預(yù)定義醫(yī)療實體,分別為解剖部位、疾病和診斷、手術(shù)、藥物、實驗室檢驗和影像檢查。采用BIO標(biāo)注方法,共有13種標(biāo)簽,如“B-ANA”“I-ANA” “B-DIS”“I-DIS”等。在數(shù)據(jù)集預(yù)處理的過程中,針對預(yù)定義實體邊界標(biāo)注錯誤和標(biāo)注前后不一致等問題,使用人工糾錯的方式將標(biāo)注錯誤的實體糾正。 醫(yī)療命名實體識別任務(wù)使用精確率(P)、召回率(Recall)以及F1值作為評價指標(biāo),具體公式如式(11)-式(13)所示。其中,正確識別的醫(yī)療實體個數(shù)是TP,識別到不相關(guān)的醫(yī)療實體個數(shù)是FP,未識別出的醫(yī)療實體個數(shù)是FN。P值是正確識別的醫(yī)療實體個數(shù)占識別出的所有醫(yī)療實體的比率,R值是正確識別的醫(yī)療實體個數(shù)占標(biāo)注的所有醫(yī)療實體的比率,F(xiàn)1值是P值和R值的調(diào)和平均值。 (11) (12) (13) 本文實驗基于PyTorch框架,具體實驗環(huán)境如表1所示。 表1 實驗環(huán)境 BERT-MNER、IDCNN-MNER和GAT-MNER三種深度學(xué)習(xí)識別模型的超參數(shù)設(shè)置相同,具體信息如表2所示,其他參數(shù)設(shè)置信息如表3所示。 表2 三種模型的超參數(shù)表 表3 三種模型的參數(shù)表 2.4.1不同模型對比實驗與分析 將本文提出的融合模型(CV-Weighted-Fusion)與BERT-MNER、IDCNN-MNER和GAT-MNER三個單一模型進(jìn)行對比實驗,實驗結(jié)果如圖6所示,本文方法的P值和F1值相比單個模型有顯著提升,分別達(dá)到88.72%和85.11%。P值相比三種模型分別提升5.95百分點、5.66百分點和5.73百分點,F(xiàn)1值相比三種模型分別提升1.83百分點、2.38百分點和1.99百分點。實驗結(jié)果表明,本文提出的融合模型獲得了較好的實體識別效果。 為了更直觀地對比本文提出的融合模型與其他單一模型的實驗效果,表4列舉了一段電子病歷語料和其中包含的預(yù)定義醫(yī)療實體及類別。同時,對比了不同模型識別結(jié)果,如表5所示。 表4 電子病歷語料示例 表5 不同模型識別結(jié)果示例 由表5可看出,本文提出的融合模型識別的醫(yī)療實體更加精確。BERT-MNER模型錯誤識別“腫塊”實體,IDCNN-MNER模型和GAT-MNER模型錯誤識別“髂嵴水平上腹部L5腰椎”實體的邊界,而本文提出的基于變異系數(shù)的加權(quán)投票算法的融合模型則正確識別出“CT,影像檢查”和“髂嵴水平上腹部L5腰椎,解剖部位”兩個電子病歷語料示例中預(yù)定義的醫(yī)療實體及類別。 2.4.2投票算法對比實驗與分析 將本文提出的基于變異系數(shù)的加權(quán)投票算法(CV-Weighted-Fusion)與常用的多數(shù)投票算法(Fusion)、加權(quán)投票算法(Weighted-Fusion)進(jìn)行對比實驗,結(jié)果如表6所示。 表6 投票算法實驗結(jié)果(%) 可以看出,使用基于變異系數(shù)的加權(quán)投票算法進(jìn)行模型融合后,R值雖然降低1.68百分點,但是P值提升較多,達(dá)2.40百分點,F(xiàn)1值亦有提升。實驗結(jié)果表明,基于變異系數(shù)的加權(quán)投票算法相比多數(shù)投票算法和加權(quán)投票算法進(jìn)行模型融合,能較大幅度提升實體識別的準(zhǔn)確率。 2.4.3基于歷史信息的實體糾錯算法實驗與分析 表7是基于歷史信息的實體糾錯算法(Algorithm)在融合模型上的實驗結(jié)果。如表7所示,使用該算法對單個模型和融合模型進(jìn)行優(yōu)化后,P值、R值和F1值均有提升。將基于變異系數(shù)的加權(quán)投票算法得到的融合結(jié)果進(jìn)行優(yōu)化后,P值、R值和F1值分別提升0.84百分點、0.98百分點和0.92百分點。同時,CV-Weighted-Fusion+Algorithm的方法與所有模型相比F1值最高。該實驗表明,基于歷史信息的實體糾錯算法能夠優(yōu)化模型融合的結(jié)果,在醫(yī)療命名實體識別任務(wù)中取得很好的效果。 表7 基于歷史信息的實體糾錯算法實驗結(jié)果(%) 本文提出一種基于深度學(xué)習(xí)多模型融合的醫(yī)療命名實體識別方法:首先,分別使用BERT-MNER、IDCNN-MNER和GAT-MNER模型識別醫(yī)療實體,其中BERT預(yù)訓(xùn)練語言模型能夠更加精確地表示電子病歷文本中的上下文相關(guān)語義,IDCNN保證了后續(xù)模型融合時子模型的多樣性和結(jié)構(gòu)差異性,GAT通過構(gòu)建三種字詞圖可以充分利用詞語的邊界和語義信息;然后,使用基于變異系數(shù)的加權(quán)投票算法對三種模型的識別結(jié)果進(jìn)行融合;最后,使用基于歷史信息的實體糾錯算法優(yōu)化融合結(jié)果。實驗表明,與基于單一深度學(xué)習(xí)網(wǎng)絡(luò)的命名實體模型相比,該方法能夠更好地識別電子病歷中的醫(yī)療實體。下一步工作是在融合時,嘗試增加NER模型的個數(shù),同時將更多更新的模型運用其中,從而達(dá)到更好的識別性能。2 實驗與結(jié)果分析
2.1 實驗數(shù)據(jù)集
2.2 評價指標(biāo)
2.3 實驗環(huán)境與參數(shù)設(shè)置
2.4 結(jié)果分析
3 結(jié) 語