趙 奎,杜昕娉,高延軍,馬慧敏
1(中國科學(xué)院 沈陽計算技術(shù)研究所,沈陽 110168)
2(中國科學(xué)院大學(xué),北京 100049)
3(中國醫(yī)科大學(xué)附屬第四醫(yī)院,沈陽 110032)
4(東軟集團股份有限公司 醫(yī)療解決方案事業(yè)本部,沈陽 110003)
醫(yī)療電子病歷[1]現(xiàn)今在臨床診斷中被廣泛應(yīng)用,近幾年伴隨著機器學(xué)習(xí)、深度學(xué)習(xí)的快速發(fā)展,結(jié)構(gòu)化電子病歷得到了大眾的關(guān)注.由于難以將醫(yī)生對病癥的描述進行統(tǒng)一,使得結(jié)構(gòu)化醫(yī)療術(shù)語無法建立.具體來說,對于同一種疾病,不同的醫(yī)生在表達方式、中文的繁簡體,英文字母的大小寫上的區(qū)別,導(dǎo)致在醫(yī)療領(lǐng)域難以形成規(guī)范化的標(biāo)準(zhǔn).
命名實體識別(NER)是自然語言處理(NLP)中信息抽取任務(wù)的一種,在NLP 的基礎(chǔ)建設(shè)中有著較為廣泛的應(yīng)用.結(jié)構(gòu)化的電子病歷需要實體的準(zhǔn)確描述,不能存在歧義或表述不明.中文由于沒有明確的分隔符,使得實體識別的難度大大增加.就模型訓(xùn)練而言,使用詞作為最小粒度還是字作為最小粒度會隨著不同的應(yīng)用場景有不同的效果,難以確定使用哪種方式最好.
就提高命名實體識別的準(zhǔn)確率方面,孟捷[2]使用條件隨機場CRF 先對文本進行分詞,之后對分詞結(jié)果進行屬性標(biāo)注,并在詞典中引入ICD-10 標(biāo)準(zhǔn),使得實體識別取得了較好的效果.江濤[3]提出了一種兼顧字詞并通過自注意力機制延長實體聯(lián)系距離的WCLSTM 模型,使用Word2Vec 訓(xùn)練的100 維詞向量嵌入模型,并與Bi-LSTM 和Lattice-LSTM 模型進行對比.沈宙鋒等人[4]基于XLNet-BiLSTM 模型,通過對電子病歷的序列化表示,使得一詞多義的問題得到了更好的解決.王若佳等人[5]在使用無監(jiān)督學(xué)習(xí)的AC 自動機上對中文電子病歷進行分詞,結(jié)合條件隨機場和不同的實體類別,得到了較好的識別模板.Zhang 等人[6]為解決中文實體的邊界問題,提出了一種基于單詞方法和基于字符方法進行識別的方式,在研究中,為解決字符缺乏詞級別信息和詞邊界信息,使用了一種融合自匹配詞特征的神經(jīng)實體識別模型,并在訓(xùn)練集上取得了不錯的效果.Ji 等人[7]提出一種句子級的基于多神經(jīng)網(wǎng)絡(luò)模型的協(xié)同協(xié)作方法來進行實體識別,通過Word2Vec、GloVe、ELMo 對特定漢字嵌入預(yù)訓(xùn)練,在BiLSTM-CRF 和CNN 模型上進行了模型測試.李丹等人[8]提出了一種部首感知的識別方法,該方法將部首信息編碼到字向量中,利用BiLSTM-CRF 結(jié)合Bert 模型,使實體識別有一定的提高.
在過去的研究中,大部分研究人員著重在于對文字進行處理,而對標(biāo)簽在文本的上下文中的作用以及文本的預(yù)處理結(jié)果是否符合規(guī)范缺少關(guān)注.查閱資料中考慮到,如果可以在研究文字的同時挖掘電子病歷標(biāo)簽中的隱含信息,對于命名實體識別工作會有幫助.例如,病歷中常用“宮頸癌”作為疾病術(shù)語,那么在宮頸一詞中被預(yù)測為疾病的實體,應(yīng)該以3 個字的可能性較大,不會出現(xiàn)諸如“宮頸的癌”或“宮頸的癌變”這樣的實體,從而提高實體識別的準(zhǔn)確性,且多頭注意力機制使得模型在訓(xùn)練過程中關(guān)注模型感興趣的部分,對于模型的訓(xùn)練有益.基于以上描述,本文以建立結(jié)構(gòu)化電子病歷為目的,從電子病歷的實體識別開始研究,提出WT-MHA-BiLSTM-CRF 模型,該模型同時考慮文字和標(biāo)簽中的信息.為保證模型的可信性,將實驗結(jié)果與BiLSTM-CRF[9],BiGRU-CRF,MHA-BiLSTM-CRF 模型進行了對比.
人工將實體分類分為以下6 個方面: 病癥,身體部位,手術(shù),藥物,化驗檢驗,影像檢驗.在測試中發(fā)現(xiàn),如果直接以中文作為類別標(biāo)簽,會導(dǎo)致訓(xùn)練結(jié)果較差,因此本文將上述6 個類別使用英文簡寫代替,病癥的標(biāo)簽為DISEASE,身體部位的標(biāo)簽為BODY,手術(shù)的標(biāo)簽為OPERATION,藥物的標(biāo)簽為MEDICINE,化驗檢驗的標(biāo)簽為LAB-CHECK,影像檢驗的標(biāo)簽為IMGCHECK.實驗期望得到的實體識別效果如圖1 所示.
圖1 電子病歷實體對應(yīng)關(guān)系圖
數(shù)據(jù)清洗的過程主要利用Python 程序?qū)⒃嘉谋局械目崭?首尾標(biāo)點符號以及一些錯誤符號進行刪除,并檢查人工標(biāo)記的起始位置和終點位置的實體是否標(biāo)記有誤,例如起始位置開始過早或者終點位置結(jié)束過晚等情況.為了防止標(biāo)點符號的使用不一致情況,本文將原始文本中的標(biāo)點全部使用英文標(biāo)點表示.實驗發(fā)現(xiàn),沒有進行過數(shù)據(jù)清洗的數(shù)據(jù)會比進行過數(shù)據(jù)清洗的數(shù)據(jù)在訓(xùn)練結(jié)果上產(chǎn)生的誤差在10%左右,說明對于原始數(shù)據(jù)進行清洗在模型訓(xùn)練中存在一定的作用.
本文提出的一種融合文字與標(biāo)簽的WT-MHABiLSTM-CRF 模型結(jié)構(gòu)如圖2 所示.在模型中,輸入層獲取電子病歷的每個文字及文字對應(yīng)的標(biāo)簽,將文字和標(biāo)簽分別建立字典,得到每個字和標(biāo)簽對應(yīng)在字典中的序號,即向量化表示后的結(jié)果,將兩者進行結(jié)合,輸入到multi-head attention[10]中,attention 機制會使得模型在句子中捕捉到更多的上下文信息,其輸出結(jié)果是在3 個維度上的加權(quán)整合,并映射到模型設(shè)定的矩陣維度上.該輸出的結(jié)果作為BiLSTM 模型的輸入,BiLSTM 模型根據(jù)上下文信息,計算每個字符在每一個類別中的概率值大小.基于BiLSTM-CRF 模型拋棄了Softmax 層并使用CRF 進行代替,CRF 層在訓(xùn)練過程中可以自主學(xué)習(xí)到一些約束規(guī)則,這些約束可以保證預(yù)測標(biāo)簽的合理性,CRF 層將BiLSTM 層的輸出結(jié)果作為輸入,進一步約束,得到更加準(zhǔn)確的輸出結(jié)果,整體模型將CRF 的輸出作為最后的預(yù)測結(jié)果,并與標(biāo)準(zhǔn)結(jié)果進行比對,計算預(yù)測的誤差.
圖2 WT-MHA-BiLSTM-CRF 模型結(jié)構(gòu)圖
本文提出的模型相對于傳統(tǒng)的命名實體識別模型來說,同時關(guān)注文字和標(biāo)簽中的信息,使得輸入信息更加充分,發(fā)現(xiàn)標(biāo)簽中的隱含信息對模型結(jié)果帶來的價值.
雙向長短期神經(jīng)網(wǎng)絡(luò)(BiLSTM)[11]是一種為解決循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)中梯度消失或者梯度爆炸問題而提出的模型,它較好地解決了RNN 在長依賴訓(xùn)練過程中的缺陷.長短期神經(jīng)網(wǎng)絡(luò)(LSTM)是一種單向網(wǎng)絡(luò),主要使用門機制[12]來解決RNN 中的長期依賴問題,其模型結(jié)構(gòu)如圖3 (圖中sig 代表Sigmoid 函數(shù))所示.
圖3 LSTM 模型結(jié)構(gòu)圖
LSTM[13]在隱藏單元中提出了3 種門的概念: 輸入門,輸出門,遺忘門.式(1)和式(2)體現(xiàn)了輸入門與單元狀態(tài)更新的計算公式:
輸入門用來確定當(dāng)前輸入中被保存狀態(tài)的個數(shù),其中,it為輸入門,W、b分別表示權(quán)重矩陣和偏置向量,σ(·)代表Sigmoid 激活函數(shù),tanh(·)代表tanh 激活函數(shù),其表達式分別為式(3)和式(4)所示.
輸出門將會決定傳輸多少個單元狀態(tài)作為 LSTM的當(dāng)前輸出值,通過計算隱藏節(jié)點ht來計算預(yù)測值和下一個時刻的輸入,式中ot代表輸出值.
遺忘門負責(zé)上一個時刻的單元狀態(tài)保存多少到當(dāng)前時刻,表現(xiàn)為Ct-1中哪些特征將被用于計算Ct,遺忘門ft中的每個值位于[0,1]中,計算公式見式(8).
單元狀態(tài)作為LSTM 中的核心部分,始終貫穿整個計算,其計算表達式為:
本文使用的BiLSTM 模型相對于LSTM 模型來說,能夠在未來上下文的預(yù)測中有較好的表現(xiàn),使得訓(xùn)練不僅能夠接受前文的序列也可以得到后續(xù)序列,在進行命名實體識別的過程中會有更好的效果.
門控循環(huán)單元(GRU)也是為了解決循環(huán)神經(jīng)網(wǎng)絡(luò)存在的長期依賴問題而提出的,模型中使用了更新門和重置門兩種門機制,使得模型在訓(xùn)練效果不變的同時,計算更加簡單,其計算過程如式(10)-式(13)所示.
其中,σ(·)、tanh(·)同上述描述,代表哈達馬乘積,用于計算兩個階相同矩陣的對應(yīng)位置,并將它們相乘得到一個新矩陣,zt代表更新門,其作用是決定多少信息從之前狀態(tài)ht-1保存到當(dāng)前狀態(tài)ht,以及在候選狀態(tài)h~t中得到多少信息.rt代表重置門,決定了候選狀態(tài)h~t的計算是否依賴于之前狀態(tài)ht-1.
由于單層的attention 所包含的信息可能不夠支持眾多的下游任務(wù),因此2017年谷歌推出的Transformer將其堆疊成multi-head attention (MHA),其本質(zhì)是多次的self-attention[14]計算.Attention 機制[15]會使網(wǎng)絡(luò)在訓(xùn)練過程中更多的注意到輸入包含的相關(guān)信息,而對無關(guān)信息進行簡略,從而提高訓(xùn)練的準(zhǔn)確性.
Self-attention 對輸入的每個詞向量創(chuàng)建3 個新向量:Query、Key、Value,這3 個向量分別是詞向量和Q,K,V三個矩陣乘積得到的,Q,K,V三個矩陣是一個需要學(xué)習(xí)的參數(shù),其定義如下所示:
圖4 Multi-head attention 計算過程圖
MHA 定義如式(15)所示:
其中,WiQ,WiK,WiV是需要訓(xùn)練的參數(shù)權(quán)重,Wo屬于Rdmodel×hdV,dmodel代表了模型中Q,K,V的維度,Concat()代表拼接函數(shù),用于將多層的Q,K,V函數(shù)拼接起來.
條件隨機場(CRF)[16]是一種較為經(jīng)典的條件概率分布模型,通過觀測序列X=(x1,x2,···,xn)來計算狀態(tài)序列Y=(y1,y2,···,yn)的條件概率值p(y|x),CRF 的簡化定義公式如下:
其中,w代表權(quán)值向量,F(y,x)表示全局特征函數(shù).CRF 模型可以自主的學(xué)習(xí)到文本中的約束,例如在命名實體識別[17]中,I-標(biāo)簽的后面不會出現(xiàn)B-標(biāo)簽,O 標(biāo)簽的后面不會出現(xiàn)I-標(biāo)簽等,這些約束會幫助訓(xùn)練結(jié)果更加合理.
CRF 模型通過式(17)得到評估分?jǐn)?shù),式中Emit代表BiLSTM 輸出的概率,Trans代表對應(yīng)的轉(zhuǎn)移概率.
最后模型使用最大似然法來進行訓(xùn)練,相應(yīng)的損失函數(shù)為:
由于Z(x)無法直接計算,因此使用前向算法進行推導(dǎo),在深度學(xué)習(xí)框架中可以對損失函數(shù)進行求導(dǎo)或者梯度下降的方法來優(yōu)化,使用Viterbi 算法進行解碼,從而找到最優(yōu)結(jié)果.
實驗過程中比較了4 種模型的訓(xùn)練情況,使用人工標(biāo)注過的1 000 份數(shù)據(jù)集,按照6:2:2 的比例將數(shù)據(jù)劃分為訓(xùn)練集、驗證集、測試集.在實體識別中常用的實體標(biāo)注方式[18]包括BIO、BIOE、BIOES 等,本實驗使用BIO 標(biāo)注方式,具體的標(biāo)注情況與實體數(shù)量見表1 和圖5 所示.根據(jù)第2.2 節(jié)中所述,數(shù)據(jù)集的準(zhǔn)確性對模型最終結(jié)果存在影響,因此實驗對原始數(shù)據(jù)進行預(yù)處理,主要包括中英文統(tǒng)一,利用程序檢查原始數(shù)據(jù)集中是否有啟始位置錯誤信息,并針對錯誤信息進行修改.
圖5 實體數(shù)量圖
表1 數(shù)據(jù)標(biāo)注表
實驗使用精確率(結(jié)果中的P值)、召回率(結(jié)果中的R值)和F1 值作為模型評價指標(biāo),其中精確率代表在所有預(yù)測結(jié)果中為正確的個數(shù)在實際正確分類所占的比例; 召回率代表所有預(yù)測正確的結(jié)果在實際正確中的占比;F1 值使用加權(quán)和平均來保證兩者在結(jié)果中的作用,由于綜合考慮了精確率和召回率的結(jié)果,因此F1 的值往往作為實驗結(jié)果的最有力的證明,其值越高說明實驗的效果越好,三者的計算過程見式(19)-式(21).
其中,Tp表示在測試集中正例被正確分類的個數(shù),Fp代表負例被錯誤分類為正例的個數(shù),FN表示正例被錯誤分類為負例的個數(shù).
本文中命名實體識別模型基于PyTorch 框架,詳細實驗環(huán)境設(shè)置見表2 所示.
表2 訓(xùn)練環(huán)境表
訓(xùn)練中模型的詳細參數(shù)為: 每次訓(xùn)練選取的樣本數(shù)batch_size 值為64,學(xué)習(xí)率lr 設(shè)定為1E-4,訓(xùn)練輪數(shù)epoch 設(shè)置為30,時序模型的網(wǎng)絡(luò)層數(shù)設(shè)置為1,詞向量維數(shù)為128,使用Adam 優(yōu)化器,丟失率dropout 值為0.5.
本文對4 種模型進行了測試來增強模型結(jié)果的說服力,4 種模型定義如下.
(1)BiLSTM-CRF: 使用單層的BiLSTM 網(wǎng)絡(luò),并將模型的輸出結(jié)果直接作為條件隨機場的輸入計算最終結(jié)果.
(2)BiGRU-CRF: 使用單層的BiGRU 模型,將輸出結(jié)果投入CRF 計算.
(3)MHA-BiLSTM-CRF: 對字向量做Embedding后先進入mutli-head attention 模型中,模型輸出的結(jié)果作為BiLSTM 模型的輸入,其結(jié)果作為CRF 層輸入.
(4)WT-MHA-BiLSTM-CRF: 同時對字、標(biāo)簽做Embedding,將兩者結(jié)合,作為mutli-head attention 的輸入,之后進入BiLSTM 模型訓(xùn)練,最終進入CRF 層進行訓(xùn)練.
表3 展示了4 種模型在各個實體上的精確率、召回率和F1 值,從結(jié)果來看,WT-MHA-BiLSTM-CRF 在大多數(shù)的實體分類結(jié)果上均有一定的提高,與BiLSTMCRF 模型的比較中,在病癥方面F1 值提高了3%,身體部位提高了6%,手術(shù)提高了4%,化驗檢驗提高了7%,影像檢驗提高了11%.但是在藥物的類別方面,WT-MHA-BiLSTM-CRF 的結(jié)果與其他模型相比有些下降,初步分析原因是,由于本文提出的模型是針對字和標(biāo)簽同時作為模型的輸入來進行訓(xùn)練,并且經(jīng)過attention 機制的處理,在實驗過程中,可能過度的對某些字、標(biāo)簽產(chǎn)生了過度的關(guān)注,而使得分類結(jié)果產(chǎn)生了誤差,因而導(dǎo)致分類效果的下降,在以后的研究中會針對這一方面進行深入研究.最后,圖6 展示了WTMHA-BiLSTM-CRF 模型在各個實體中的預(yù)測結(jié)果.
圖6 WT-MHA-BiLSTM-CRF 模型各類別結(jié)果圖
表3 實驗結(jié)果表(%)
本文提出了一種結(jié)合字與標(biāo)簽同時訓(xùn)練的WTMHA-BiLSTM-CRF 模型,用于解決結(jié)構(gòu)化電子病歷中命名實體識別的問題.傳統(tǒng)的BiLSTM-CRF 模型更多的注重字在模型中訓(xùn)練產(chǎn)生的結(jié)果,忽略了標(biāo)簽中可能隱含的信息,因此在訓(xùn)練輸入之前,將字和標(biāo)簽同時做Embedding 處理.并使用mutli-head attention 使模型更多的注意力放在關(guān)鍵的字和標(biāo)簽上,BiLSTM 結(jié)合上下文得到每個字的類別概率,模型的最后使用CRF對分類結(jié)果進行處理,使得模型的預(yù)測輸出更有說服力.從實驗結(jié)果中可以看出,該模型在大部分的類別識別中均有提升.對于個別類別來說,考慮到模型的結(jié)果中可能有部分信息被過度關(guān)注,導(dǎo)致訓(xùn)練結(jié)果上有些許問題,在以后的研究中也會針對這個問題著重來處理.