梁文桐,朱艷輝,詹 飛,冀相冰
(1.湖南工業大學 計算機學院,湖南 株洲 412007;2.湖南工業大學 智能信息感知及處理技術湖南省重點實驗室,湖南 株洲 412007)
在自然語言處理(natural language processing,NLP)的任務中,命名實體識別(named entity recognition,NER)是具有挑戰的基礎性工作[1]。從狹義上來說,一般的命名實體識別任務的目的,是從文本中識別出3種類型的實體提及,包括人名、地名和機構名。在醫學領域中,醫務工作人員通過醫療機構信息系統將病人的臨床診斷信息存儲在計算機中,得到電子病歷(electronic medical records,EMR)。電子病歷命名實體識別是命名實體識別在電子病歷文本分析研究中的重要應用和擴展,其目的是自動地識別并且分類電子病歷中的醫療命名實體。這些命名實體對象能夠被用于后續醫療電子病歷信息的分析和研究中,比如構建臨床信息決策系統、構建醫療領域的知識圖譜等。
早期的電子病歷命名實體識別方面的研究主要運用基于詞典和規則的方法,僅僅依賴于現有的詞典和手工編輯的規則來識別醫療命名實體[2]。后來,基于統計機器學習的方法被運用到電子病歷命名實體識別中。如于楠等[3]采用基于多特征融合的CRF (conditional random fields)模型進行了中文電子病歷NER的研究。A.Kulkarni[4]從生物醫學文本中完成DNA、RNA和蛋白質等生物醫學術語的識別,該任務使用CRF 統計模型完成。許源等[5]基于CRF 以及RUTA(rule-based text annotation)規則,建立了一個醫學命名實體識別模型,該模型在識別腦卒中患者入院記錄的醫學命名實體時取得了良好的效果。王潤奇等[6]利用半監督學習方法,將Tri-Training 算法進行了改進,使得中文電子病歷實體識別模型的效果得到了提升。
近年來,隨著硬件計算能力的大幅度提高,基于深度神經網絡的方法已經被成功地應用到電子病歷命名實體識別中,該方法是一種端到端的方法,不需要特殊的領域資源(如詞典)或者構建本體,可以從大規模的標注數據中自動地學習和抽取文本特征。在電子病歷NER 任務中,楊紅梅等[7]利用一種基于BiLSTM(bidirectional long short-term memory)與CRF的實體識別模型,抽取了入院記錄和出院小結中的醫學命名實體。萬里等[8]提出了一種基于字詞聯合訓練的BiLSTM模型,能夠有效識別中文電子病歷中疾病、癥狀等相關實體。Wang Q.等[9]將詞典特征加入深度神經網絡中,提出了5種不同特征的表示方式和基于BiLSTM 兩種不同的神經網絡結構。S.Chowdhury 等[10]提出了一種新型的、多任務的雙向循環神經網絡(recurrent neural network,RNN)模型,該模型可以從中文的電子病歷中抽取出醫療實體。楊文明等[11]使用BiLSTM-CRF和IndRNN-CRF 等模型,抽取了在線醫療問答文本中疾病、治療、檢查和癥狀4類醫療實體。與此同時,也有很多學者利用卷積神經網絡(convolutional neural network,CNN)的方法,將其應用到醫療電子病歷NER 任務中。如Gao M.等[12]利用一種結合詞序和局部上下文特征的基于注意力的IDCNN(iterated dilated convolution neural networks)-CRF模型,完成了對臨床電子病歷中醫學實體術語的抽取。
但是,以上基于深度神經網絡的NER 方法,都存在無法準確表示字符或者詞語多義性的問題。例如,“張三和李四的身高差得很遠”和“小明的學習成績很差”,兩個句子中的“差”字在各自的語境中是兩個完全不同的含義,但是在上下文無關的詞嵌入表示方法(如Word2Vec)中,兩個“差”字映射成完全相同的向量,因此這種向量無法考慮到句子的上下文語義。近年來,學術界提出了許多與上下文有關的詞嵌入表示方法,比如EMLo(embeddings from language models)方法和OpenAI-GPT(generative pre-training)方法[13]。但是,上述兩種語言模型的語言表示都是單向的,無法同時獲取前后兩個方向電子病歷文本的語義信息。
當前,醫療電子病歷的命名實體識別面臨著訓練語料不足和標注質量不高的問題,由于醫療領域的專業性,導致其缺少高質量的標注語料[14]。此外,醫療電子病歷中的命名實體有著特殊和嚴謹的語言結構,使得該領域命名實體識別具有一定的挑戰性。
為了解決上述問題,本研究擬將可以表示雙向豐富語義的BERT(bidirectional encoder representations from transformers)預訓練語言模型引入電子病歷NER 任務中,提出了BERT-IDCNN-MHA(multi-head attention)-CRF命名實體識別模型。并利用該模型對醫療電子病歷中預定義的疾病和診斷、影像檢查、實驗室檢驗、手術、藥物以及解剖部位6類實體進行命名實體識別,并且將該6類實體正確歸類到預定義類別中。
BERT-IDCNN-MHA-CRF命名實體識別模型的整體結構如圖1所示。

圖1 BERT-IDCNN-MHA-CRF命名實體識別模型結構圖Fig.1 BERT-IDCNN-MHA-CRF NER model structure diagram
整個識別模型由4個部分組成:首先,輸入電子病歷中的每一個字,經過Embedding層即BERT模型,得到與每個字的上下文相關的向量表示。其次,經過IDCNN層,將上層輸入的每個字的向量進行膨脹卷積編碼來提取局部特征,再將獲取到的特征向量輸入到多頭注意力層,多次計算每個字和所有字的注意力概率來獲取電子病歷句子的長距離特征,得到新的特征向量。因為多頭注意力層無法考慮標簽之間的依賴關系,比如“I-ANA”標簽不能緊接在“B-DIS”標簽的后面,所以最后經過CRF層約束預測標簽之間的依賴關系,對標簽序列進行建模,從而獲取全局最優序列。為了提高該模型的泛化能力,在Embedding層與IDCNN層之間加入了dropout層。
本研究通過上述命名實體識別模型識別電子病歷中的醫療命名實體,具體步驟如下:
1)預處理原始電子病歷文本數據集。將電子病歷文本集合D={d1,d2,…,dN}及其對應的預定義類別C={c1,c2,…,cM}按照字符級別進行分割并進行標注,標注時字符和預定義類別用空格隔開。
2)構建電子病歷文本訓練數據集。按照比例,將分割并標注好的電子病歷訓練數據分為訓練集、驗證集和測試集。
3)訓練生成命名實體識別模型。基于深度學習技術,訓練BERT-IDCNN-MHA-CRF命名實體識別模型。4)識別電子病歷文本測試數據集,計算識別率。以電子病歷測試文本集合Dtest={d1,d2,…,dN}為輸入,文本中醫療實體提及和所屬預定義類別的集合其中,mi是出現在文檔di中的實體提及,表示所屬的預定義類別)為輸出,再根據精確率、召回率和F1值來計算其識別率。
BERT模型是一個深度雙向編碼的包含字符級、詞語級和句子級特征的預訓練語言模型[15]。針對醫療電子病歷的NER 任務,只需要調用該預訓練模型的相應接口,就能夠得到電子病歷中每個字的嵌入表示,且能更準確地表示電子病歷中與上下文相關的語義信息。本文構建BERT預訓練語言模型的網絡結構如圖2所示。

圖2 BERT預訓練語言模型的網絡結構圖Fig.2 Network structure diagram of BERT pre-training language model
BERT模型使用“Masked語言模型”來預訓練該語言模型,以獲取字詞級別的上下文相關語義表示?!癕asked語言模型”的核心思想來自于完形填空。傳統的語言模型以句子中某個給定詞語的下一個詞語來預測該詞語,而“Marked語言模型”則是把句子中隨機選擇的15%的詞語蓋住,通過上下文的內容預測被蓋住的詞語,但是這一方法會導致微調時模型無法準確地預測某些100%被蓋住的詞語。為解決這一問題,本研究在BERT預訓練實驗中采取了如下策略:
1)80%的時間,用“[MASK]”標記來替換被蓋住的詞語。
2)10%的時間,用一個任意的詞語來替換被蓋住的詞語。
3)剩余10%的時間,保持被蓋住的詞語不變。
同時,BERT模型的預訓練利用“下一個句子預測”任務來獲取句子級別的上下文相關語義表示。該任務的目標,是判斷句子N是否是句子M的下一句。傳統的語言模型不能直接反映兩個句子之間的關系,在NLP 領域的許多任務中,都需要在理解兩個句子之間關系的基礎上進行,如問答和自然語言推理等,因此無法直接使用傳統的語言模型。兩個句子之間的關系通過BERT預訓練一個模型學習得到,訓練的輸入是句子M和N兩個句子,然后利用模型來預測句子N是否是M的下一句。
BERT預訓練語言模型的輸入是電子病歷文本中的每一個字,輸出是該字的總特征向量,總特征向量由字(詞)向量、句子切分向量和位置向量3種不同的特征向量相加得到,位置向量的計算公式如式 (1)和(2)所示。其中,編碼使用的是正弦函數和余弦函數,pos代表的是電子病歷文本中第幾個字,i代表第幾維,編碼后的向量維度是dmodel。

BERT模型輸入示例如圖3所示,第一個標記的標簽是一種特殊嵌入[CLS],代表電子病歷文本的開始位置;其后的特殊嵌入[SEP],代表電子病歷文本的結束位置。

圖3 BERT模型輸入示例Fig.3 Samples of BERT model input
相關研究結果表明,相對于BiLSTM的長距離依賴關系編碼,IDCNN 對局部實體的卷積編碼可以達到更好的醫療實體識別效果,同時其訓練速度和預測的效率都有所提高[12]。因此,本研究采用IDCNN模型對電子病歷文本的特征進行提取。一般的CNN濾波器,都是通過在輸入矩陣的區域上不斷地滑動來做卷積運算,且這種區域通常是連續的。而DCNN(deep convolutional neural networks)則是因在濾波器上添加了膨脹寬度,導致此時輸入矩陣的區域不再連續,每次做卷積運算時都會跳過所有膨脹寬度中間的輸入數據。在膨脹卷積運算過程中,輸入矩陣上更多的數據被濾波器獲取,但是濾波器本身的大小并沒有發生變化,反而擴大了其感受域,看上去像是“膨脹”了一般,因此稱作膨脹卷積神經網絡。與一般的CNN 相比,DCNN 沒有通過池化操作也可以獲得較大的感受域,而且減少了信息損失。DCNN的膨脹示意圖如圖4所示。

圖4 DCNN的膨脹示意圖Fig.4 Dilated schematic diagram of DCNN
圖4中,圖中心點的1×1 區域是開始的感受域,卷積核的大小為3,從感受域的中心點出發,以步長為1 向外部擴散,得到圖a中大小為3×3的新感受域;再從新感受域的中心點出發,以步長為2 向外部擴散,得到圖b中大小為7×7的新感受域;接下來從這一新感受域的中心點出發,以步長為4 向外擴散,得到圖c中大小為15×15的新感受域。膨脹卷積的感受域計算公式見式(3),式中i代表步長。

在逐步擴大感受域、層數不斷增加的過程中,神經網絡參數呈線性增加,而感受域呈指數級增加。如圖4所示,僅經過3 步膨脹變化后,感受域就已擴散至輸入矩陣中的全部數據。這種膨脹卷積神經網絡結構,每層的參數都是相互獨立且數量相同的,可有效減少訓練時的參數,從而可加快訓練速度。
IDCNN模型則是將4個結構相同的膨脹卷積塊進行堆疊,相當于進行了4次迭代,每次迭代將前一次的結果作為輸入,這種參數共享可有效防止模型過擬合,每個膨脹卷積塊有膨脹寬度分別為1,1,2的3層膨脹卷積。通過IDCNN模型,將電子病歷中的每個字進行膨脹卷積編碼,自動提取文本中特征,輸出為對應的特征向量。雖然IDCNN可使感受域變大,但提取的特征僅是局部的,因此還需經多頭注意力層進行電子病歷文本的長距離特征提取。
注意力機制(attention mechanism)首先被應用在數字圖像處理領域,后來逐漸被應用于NLP 領域的多種任務中??梢詫⒆⒁饬瘮悼醋饕粋€查詢(Q)到一系列鍵(K)-值(V)對的映射。在NLP 領域的多種任務中,K和V通常取相等值。在計算自注意力時,通常取Q=K=V,可以計算輸入句子中每個字符和所有字符的注意力概率。本研究利用注意力機制中的多頭注意力,從電子病歷文本的內部結構中得到字符之間的長距離依賴關系。多頭注意力模型的結構如圖5所示,其中,拼接k次自注意力計算結果,將拼接結果進行線性變換后,即可以得到本次注意力計算結果。

圖5 多頭注意力模型結構圖Fig.5 Multi-Head Attention model structure diagram
與自注意力模型相比,多頭注意力模型實質上是進行多次自注意力計算,每一次算一個頭,可以使模型在不同的表示子空間里學習到相關的信息而且具有優于RNN的并行計算性能。
首先,在電子病歷NER 任務中,對于輸入的一個句子X=(x1,x2,···,xt,···,xn),通過IDCNN層后的輸出是Y=(Y1,Y2,···,Yt,···,Yn),對于句子中的第t個字符的輸出狀態Yt,通過式(4)進行單頭自注意力計算。其中,共進行i次計算,即有i個頭,第i次計算的結果是headi。

softmax( )為歸一化因子。
然后,拼接這i次的計算結果,再進行一次線性變換,即可以得到句子中第t個字符的多頭注意力計算結果,具體的計算公式如式(5)所示,其中W O為權重參數。

CRF模型是一種經典的判別式概率無向圖模型,該模型經常被應用于序列標注任務中,即在給定觀察序列C=(c1,c2,···,cn)的情況下,計算狀態序列Y=(y1,y2,···,yn)的條件概率P(y|c),具體計算公式如式(6)所示,其中,fk為特征函數,wk為特征函數的權重,Z(c)為歸一化項。

在醫療電子病歷NER中,多頭注意力層無法考慮標簽之間的依賴關系,比如“I-ANA”標簽不能緊接在“B-DIS”標簽的后面。CRF層可以有效地約束預測標簽之間的依賴關系,對標簽序列進行建模,從而獲取全局最優序列。多頭注意力層的輸出是電子病歷句子中每個字對應的各個標注符號的分數,記矩陣P為打分矩陣,Pi,j為第i個字符分類到第j個標簽的概率值,Ti,j為第i個到第j個標簽的狀態轉移打分。對于輸入句子X=(x1,x2,···,xn),句子標簽序列y=(y1,y2,···,yn)的打分為

使用最大化對數似然函數對CRF模型進行訓練,通過式(9)和(10)計算在給定句子X的情況下標簽序列y的條件概率,其中yX為給定的句子X全部可能的標簽序列,L為定義的損失函數。

在CRF模型預測過程中,采用維特比(Viterbi)算法來求解全局最優序列,公式如式(11)所示,其中y*為集合中使得分函數取得最大值的序列。

本研究采用的電子病歷醫療實體識別中文數據集由CCKS2019 評測任務一“面向中文電子病歷的醫療實體識別及屬性抽取”提供,所有電子病歷語料由專業的醫學團隊進行人工標注。該標注數據集分為訓練集和測試集,其中訓練集包含1 000份醫療電子病歷,共計7 717個句子;測試集共包含379份醫療電子病歷。表1是各類醫療實體個數統計信息,總共為5 363個文檔。

表1 醫療實體類別數據統計Table1 Statistics of medical entity categories
每份電子病歷詳細地標注了醫療實體的名稱、起始位置、結束位置和預定義實體類別,并進行脫敏處理。具體分為疾病和診斷、影像檢查、實驗室檢驗、手術、藥物和解剖部位6類預定義類別,各類預定義類別及其含義信息如下:
1)疾病和診斷。即醫學上定義的疾病和醫生在臨床工作中對病因、病生理、分型分期等所作的判斷,如胃癌、腸胃炎等。
2)影像檢查。包括影像檢查、造影、超聲、心電圖,如CT、MRI(magnetic resonance imaging)等。
3)實驗室檢驗。指在實驗室進行的物理或化學檢查,特指臨床工作中檢驗科進行的化驗,不含免疫組化等廣義實驗室檢查,如血紅蛋白、CA199 等。
4)手術。指醫生在患者身體局部進行的切除、縫合等治療,如腹腔鏡根治性全胃切除術、經腹直腸癌切除術(DIXON)等。
5)藥物。指用于疾病治療的具體化學物質,如伊立替康、格列衛等。
6)解剖部位。指疾病、癥狀和體征發生的人體解剖學部位,如口腔、十二指腸等。
本研究選擇字標注方法完成對數據集的標注,采用BIO(begin,inside,outside)標注體系,其具體格式為B-X、I-X和O。B代表醫療實體開始位置的字符,I代表醫療實體剩余部分的字符,O代表非醫療實體的字符。X代表醫療實體的類別,記為DIS、IMG、LAB、OPE、MED和ANA,分別代表疾病和診斷、影像檢查、實驗室檢驗、手術、藥物和解剖部位6類醫療實體。該任務共有13種不同的標簽,分別為
B-DIS、I-DIS、B-IMG、I-IMG、B-LAB、I-LAB、B-OPE、I-OPE、B-MED、I-MED、B-ANA、I-ANA和O。各類別的實體標注符號及示例如表2所示。

表2 醫療實體類別標注符號及示例Table2 Classification labeling symbols and examples of medical entities
雖然電子病歷語料由專業的醫學團隊進行人工標注,但是不可避免地會出現實體類別或者開始、結束位置的標注錯誤以及標注前后不一致等問題。比如,在一段電子病歷文本“直腸癌術后,擬行第4次化療”中,“直腸癌術后”被人工標注為“疾病和診斷”類別的醫療實體,而在另一段電子病歷文本“食管癌術后、肝癌介入術后”中,“食管癌”被人工標注為“疾病和診斷”,與前一段文本中的標注存在前后不一致的問題,這種標注不一致會導致實體識別過程中錯誤預測實體邊界,從而影響實體識別的效果。本研究針對實體類別或者開始、結束位置的標注錯誤問題,在數據集的預處理中采取人工糾錯的方式,將標注錯誤的實體進行糾正。
醫療電子病歷命名實體識別的評價指標采用精確率(precision)P、召回率(recall)R以及F1-Measure,其中F1-Measure是精確率和召回率的加權調和平均值,具體公式為(12)~(14)。

式(12)~(14)中:TP為正確識別醫療實體的個數;
FP為識別到不相關醫療實體的個數;
FN為未識別到相關醫療實體的個數。
在預測時,判斷醫療實體預測完全正確的標準是實體的邊界和類別同時預測正確。
本文實驗的命名實體識別模型基于TensorFlow框架,具體實驗環境設置如表3所示。

表3 實驗環境設置Table3 Experimental environment settings
BiLSTM-CRF模型參數設置如下:Word2Vec的預訓練字嵌入向量維數為100,窗口大小為3,最小詞頻為10;LSTM(long short-term memory)隱藏層的單元個數為128;學習率為0.000 5,批大?。╞atchsize)為20,dropout為0.5,clip為5,優化算法使用自適應時刻估計法(Adam)。
IDCNN-CRF模型的參數設置如下:IDCNN 隱藏層的濾波器個數為128個;其余參數的設置與BiLSTM-CRF模型保持一致。
BERT-IDCNN-CRF模型的參數設置如下:采用BERT-Base版預訓練語言模型,該模型由Google提供,為12 頭模式,共有12層和110 M個參數,隱藏層為768維;最大序列長度(max_seq_len)為128;學習率為0.000 5,批大?。╞atchsize)為20,dropout為0.5,clip為5,優化算法使用自適應時刻估計法(Adam)。
BERT-IDCNN-MHA-CRF模型的參數設置如下:采用BERT-Base版預訓練語言模型,該模型由Google提供,為12頭模式,共有12層和110 M個參數,隱藏層為768維;多頭注意力層頭數為4;最大序列長度(max_seq_len)為128;其余參數設置與BERTIDCNN-CRF模型保持一致。
本研究將CCKS2019 提供的電子病歷數據,采用交叉驗證的方法,以7:2:1的比例劃分為訓練集、驗證集和測試集。為驗證BERT-IDCNN-MHA-CRF模型的有效性,將該模型和以下模型進行對比:
1)BiLSTM-CRF模型。即基于BiLSTM的特征抽取和CRF 約束的模型,在該模型中,使用100維的Word2Vec預訓練字向量。
2)IDCNN-CRF模型。即基于IDCNN的特征抽取和CRF 約束的模型,IDCNN 能夠更好地抽取句子的局部特征,且有更快的并行計算速度。在該模型中,使用100維的Word2Vec 預訓練字向量。
3)BERT-IDCNN-CRF模型。即在IDCNN-CRF模型的基礎上加入BERT預訓練語言模型。
在該項實驗中,epoch 默認設置為80次,表4是不同模型的實驗結果。對比表4中各模型的實驗結果,可以看出BERT-IDCNN-MHA-CRF模型的精確率、召回率和F1值相比于BiLSTM-CRF 基線模型的分別提高了1.80%,0.41%,1.11%,該模型在疾病和診斷、檢查、手術、藥物和解剖部位5類醫療實體上的F1值是最高的。檢驗實體最高的F1值為87.82%,出現在BiLSTM-CRF模型中。
在所有模型中,“疾病和診斷”類型醫療實體的F1值較低,該類型實體普遍長度較長,而且存在括號等補充說明信息,例如“(直腸)腺癌(中度分化),浸潤潰瘍型”,因此在預測該類實體時存在邊界預測錯誤的問題,從而導致實體識別錯誤。此外,一些“疾病和診斷”醫療實體和“手術”醫療實體在文本結構上相似,這會導致該類型實體被錯誤分類,比如“脾臟切除術后”和“脾臟切除術”,前者屬于“疾病和診斷”實體,而后者屬于“手術”實體,雖然兩個實體僅一字之差,卻是預定義類別不同的兩類實體?!敖馄什课弧鳖愋歪t療實體F1值也較低,該類實體的數量是6類實體中最多的,而且特征眾多,識別時存在較大的難度。
BiLSTM-CRF模型和IDCNN-CRF模型的F1值分別為81.32%和81.44%,說明兩種模型的識別效果相當。但是,IDCNN的并行計算能力比BiLSTM的要強,IDCNN-CRF模型與BiLSTM-CRF模型相比,訓練一輪的時間要少25 s。因此,本文實驗選擇在IDCNN-CRF模型的基礎上加入BERT預訓練語言模型,相比于IDCNN-CRF模型,BERT-IDCNNCRF模型的識別效果有小幅度提升,F1值提高了約0.42%,這說明BERT預訓練語言模型對于電子病歷句子中的上下文語義有更準確的表示,從而可以提高實體識別效果。BERT-IDCNN-MHA-CRF模型是在BERT-IDCNN-CRF模型的基礎上,加入多頭注意力機制,多次計算句子中每個字和所有字的注意力概率,實驗結果表明,該模型的精確率為82.63%,F1值為82.43%,是所有模型中最高的;同時,其召回率為82.23%,相比于BERT-IDCNN-CRF模型的F1值,提高了0.57%。
綜上所述,本研究提出的BERT-IDCNN-MHA- CRF模型的總體性能最好,可以被成功地應用于醫療電子病歷命名實體識別中。

表4 不同模型的實驗結果Table4 Experimental results of different models %
采用基于BERT的醫療電子病歷命名實體識別模型,能夠較好地識別電子病歷中的醫療實體。其中BERT預訓練語言模型可以更準確地表示電子病歷句子中的上下文語義,IDCNN 對局部實體的卷積編碼相對于BiLSTM的長距離依賴關系編碼,可以達到更好的醫療實體識別效果,訓練速度和預測的效率都有所提高。多頭注意力可以獲取電子病歷句子中的長距離依賴特征。實驗結果表明,模型能夠較好地完成醫療電子病歷的命名實體識別任務。接下來將該命名實體識別模型進行改進,再應用到其它領域的命名實體識別研究中。