沈宙鋒,蘇前敏,郭晶磊
(1 上海工程技術(shù)大學 電子電氣工程學院,上海 201620;2 上海中醫(yī)藥大學 基礎(chǔ)醫(yī)學院,上海 201203)
電子病歷(EMR,Electronic Medical Record)是計算機信息系統(tǒng)存儲、管理和傳輸?shù)尼t(yī)療記錄,包含醫(yī)務(wù)人員在為患者診療過程中記錄的關(guān)于患者病史、臨床表現(xiàn)、治療方法等數(shù)字化信息[1]。由于電子病歷大多是半結(jié)構(gòu)化和非結(jié)構(gòu)化的狀態(tài),對其進行分析處理和數(shù)據(jù)挖掘受到嚴重制約。命名實體識別(named entity recognition,NER)是發(fā)現(xiàn)和識別自然文本中的專有名詞和有意義的詞語,并將其歸類到預定義的類別中,是自然語言處理(natural language processing,NLP)任務(wù)中的一項重要分支[2]。運用命名實體識別技術(shù)對電子病歷文本進行分析研究,目的是自動地識別并且分類電子病歷中的醫(yī)療命名實體。
傳統(tǒng)的電子病歷命名實體識別研究主要分為基于規(guī)則和基于機器學習兩種方法,基于規(guī)則的方法主要依靠領(lǐng)域?qū)<覙?gòu)建的領(lǐng)域詞典進行識別,對于詞典中沒有出現(xiàn)的實體通過手工編輯的規(guī)則來識別醫(yī)療命名實體[3]。由于詞典構(gòu)建和規(guī)則制定對領(lǐng)域?qū)<业囊蕾囆裕跈C器學習電子病歷命名實體識別的方法被廣泛運用。近年來深度學習在語音識別、圖像識別和視頻分析等多個領(lǐng)域取得了重大進展,大量研究人員將深度學習運用到電子病歷實體識別領(lǐng)域,通過在大規(guī)模的標注數(shù)據(jù)中訓練與學習,可以更好地抽取上下文語義特征進行表示[4]。
基于深度神經(jīng)網(wǎng)絡(luò)的命名實體識別方法,都需要通過詞嵌入方法將文本信息轉(zhuǎn)換成序列化向量,目前比較流行的詞嵌入方法是2013 年由Mikolov 等提出的Word2Vec,將傳統(tǒng)的詞的one-h(huán)ot 表示轉(zhuǎn)換為低緯、稠密的向量,每個詞都由數(shù)十或數(shù)百個維度的實值向量表示[5]。但是Word2vec 訓練的詞向量是靜態(tài)的,即同樣的字在不同的語句中向量表示都是不變的,也就無法獲取相同詞匯的多種含義,且不能在訓練過程隨上下文來消除詞義的歧義[6]。電子病歷中通常存在一詞多義現(xiàn)象,如“疾”這個字在不同的詞語中意義不同,既可以是名詞疾病,也可以是形容詞劇烈;近年來,針對以上問題,學術(shù)界提出了許多與上下文有關(guān)的詞嵌入表示方法,比如ELMO(embeddings from language models)方法和OpenAI-GPT(generative pre-training)方法[7]。但是,上述兩種語言模型的語言表示都是單向的,無法同時獲取前后兩個方向電子病歷文本的語義信息。
為了解決上述問題,本研究擬采用雙向自回歸預訓練語言模型XLNet 引入電子病歷NER 任務(wù)中,提出了XLNet-BiLSTM-MHA-CRF 命名實體識別模型,并利用該模型對醫(yī)療電子病歷中預定義的疾病、癥狀、治療、檢查、身體部位5 類實體進行命名實體識別。實驗證明,使用預訓練語言模型構(gòu)建詞嵌入,并在BiLSTM-CRF 中加入多頭注意力機制,多角度的提取文本特征,有效提高了命名實體識別的效果。本文所述算法在ccks2017 命名實體識別任務(wù)中取得F1 值為91.74%。
XLNet-BiLSTM-MHA-CRF 命名實體識別模型的整體結(jié)構(gòu)如圖1 所示。模型第一層為XLNet 詞嵌入層,通過XLNet 預訓練語言模型,運用低維的字向量對病歷中的每一個字進行表示,得到序列化文本輸入;第二層是BiLSTM 層,利用雙向長短時記憶神經(jīng)網(wǎng)絡(luò)自動提取句子的前向特征和后向特征進行拼接輸入下一層;第三層是MHA 層,通過計算多角度的注意力概率獲得句子的長距離依賴特征,得到新的特征向量;第四層是CRF 層,通過計算對輸入的文本特征進行序列標注,輸出最優(yōu)標簽。
XLNet 模型是CMU 與谷歌團隊在2019 年提出的一個基于Bert 優(yōu)缺點的廣義自回歸預訓練方法,在傳統(tǒng)的自回歸語言模型上實現(xiàn)了雙向預測[8]。通過在transformer 模塊內(nèi)部使用attention mask 方法得到輸入文本不同的排列組合,讓模型充分提取上下文信息進行訓練,克服了Bert 模型在Mask 機制下的有效信息缺失。XLNet 的掩碼機制示例如圖2所示,當模型輸入句子為[糖,尿,病,患,者],隨機生成的一組序列為[病,糖,患,者,尿],那么在計算重排列后的“糖”字來說就可以利用到“病”字的信息,所以在第一行只保留了第三個位置的信息(用實心表示),其他的位置的信息被遮掉(用空心表示)。再比如重排后的“尿”字位于最后一個位置,其余四字的信息都可以利用,即第二行除第二個位置外全部以實心表示。
圖2 XLNet 模型掩碼機制示例圖Fig.2 XLNet model mask mechanism example diagram
現(xiàn)有的預訓練語言模型大多數(shù)采用transformer架構(gòu),但是在捕捉長距離依賴關(guān)系上還存在不足[9]。為了解決這樣的問題,XLNet 采用引入循環(huán)機制(RNN)和相對位置編碼的transformer-xl 架構(gòu)。通過RNN 提取上一片段隱狀態(tài)長距離依賴信息,存儲在片段之間的memory 單元,供下一片段的預測使用,充分捕捉長距離文本特征。片段之間的信息傳遞方式如圖3 所示,虛線框中表示前一片段提取的記憶信息,通過memory 單元傳遞給下一片段,實現(xiàn)了信息的傳遞。
圖3 XLNet 循環(huán)機制片段信息傳遞圖Fig.3 XLNet cycle mechanism fragment information transfer diagram
在位置編碼方面,采用相對位置編碼替代絕對位置編碼,解決詞的多義性問題,增強文本特征提取的完整性,加入相對位置編碼后的self-attention 公式(1)如下:
其中,Exi,Exj分別表示i,j的文本向量;W代表權(quán)重矩陣;Ri-j代表i,j的相對位置;uT,vT是需要學習的參數(shù);Wk,E,Wk,R分別為學習到基于內(nèi)容的key向量和基于位置的key向量。
基于transformer-xl 的XLNet 預訓練語言模型,通過attention mask、循環(huán)機制和相對位置的編碼,克服了自回歸語言模型單項傳遞信息的不足,充分利用上下文的語義信息提取潛在的內(nèi)部關(guān)系,訓練出特征更加完整的詞向量表示。
針對傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)在處理序列標注問題時出現(xiàn)梯度消失和梯度爆炸的現(xiàn)象,Hochreiter 和Schmidhuber 在1997 年提出長短時記憶網(wǎng)絡(luò)(long short term memory,LSTM)[10],該網(wǎng)絡(luò)是在RNN 的基礎(chǔ)上的改進,其單元結(jié)構(gòu)如圖4 所示。通過設(shè)置遺忘門、輸入門和輸出門3 種門限機制看,選擇性的處理信息的遺忘和傳遞,以此來捕獲文本序列長距離依賴信息,有效解決了梯度消失的問題[11]。
圖4 LSTM 單元結(jié)構(gòu)圖Fig.4 LSTM unit structure diagram
LSTM 網(wǎng)絡(luò)一個單元的隱藏層運算過程如式(2)~式(7)所示:
其中,ft、it、ot和Ct分別表示t時刻的遺忘門、輸入門、輸出門和記憶細胞;σ是sigmoid激活函數(shù),tanh是雙曲正切激活函數(shù);W、b分別表示連接兩層的權(quán)重矩陣和偏置向量;xt為輸入向量,ht-1為t-1時刻的輸出;ht則為t時刻的輸出;表示中間狀態(tài)。
由于LSTM 只能處理當前單元之前的信息而無法獲得之后的信息,于是提出雙向長短時記憶網(wǎng)絡(luò),就是采用兩層LSTM,分別獲取文本序列的前向信息和后向信息進行拼接得到最終的隱藏層特征表示,充分捕捉上下文語義信息,有效提高命名實體識別的效果。
2017 年谷歌機器翻譯團隊將多個自注意力進行結(jié)合創(chuàng)造性提出多頭注意力模型(multi-h(huán)ead attention model)[12],具體結(jié)構(gòu)模型如圖5 所示。將文本序列X =(X1,X2…,Xn)輸入BiLSTM 層,輸出的矩陣Y =(Y1,Y2,…,Yn)作為Q、K、V 的輸入,放縮點積注意力(scaled dot-product attention)單元共有h層,每一層的注意力計算如式(8)所示;將h個單頭注意力輸出進行拼接,同時做一個線性變換如式(9),得到的MHA為第t個字的h頭注意力權(quán)重輸出。多頭注意力模型在NER 任務(wù)中可以充分捕捉句子的長時序依賴關(guān)系,獲取全局特征。
圖5 多頭注意力模型Fig.5 The model of Multi-h(huán)ead attention
Lafferty 在2001 年提出線性條件隨機場(CRF)模型,計算給定隨機變量序列X =(X1,X2…,Xn)的條件下,隨機變量序列Y =(Y1,Y2,…Yn)的條件概率分布P(Y |X)[13]。模型假設(shè)隨機變量序列滿足馬爾可夫性,式(10):
式中,X表示輸入觀測序列,Y表示對應的狀態(tài)序列。
在電子病歷命名實體識別任務(wù)中,每個字的標簽與其相鄰的標簽都存在制約關(guān)系,例如O 標簽后面不會是I 標簽,I-DIS 不會跟B-BOD 后面。CRF能夠根據(jù)前一層網(wǎng)絡(luò)的輸出結(jié)果,結(jié)合上下文語義標簽信息得到每個字對應的標簽序列出現(xiàn)的最優(yōu)概率。
設(shè)MHA 模型的輸出序列為X,其中一個預測序列為Y,則可以得出評估分數(shù)S(X,Y),式(11):
式中:Myi,yi+1表示從yi標簽到y(tǒng)i+1標簽的轉(zhuǎn)移概率;Pi,yi表示第i個字被標記為yi的概率;n為序列長度。
最后采用極大似然法求解最大后驗概率P(y |x),獲得模型的損失函數(shù)值,式(12):
本次實驗選取的是ccks-2017 任務(wù)二中400 份醫(yī)療標注數(shù)據(jù)作為數(shù)據(jù)集,并按照7 ∶2 ∶1 的方式分為訓練集、測試集、預測集。該數(shù)據(jù)集共包括39 539個實體,分為癥狀、疾病、治療、檢查、身體部位5 類,共7 183句話。本文采用BIOE 的標注方式,即B 代表實體首字;I 代表實體中間部分;E 代表實體尾字;O 代表該字不屬于規(guī)定的實體類別。各類別實體符號及數(shù)量見表1。
表1 醫(yī)療實體標注符號Tab.1 Medical entity notation
實體識別和關(guān)系抽取實驗通常采用準確率、召回率和F1 值指標評價模型的優(yōu)劣:
其中:TP表示測試集中的正例被正確預測為正例的個數(shù);FP表示測試集中的負例被誤分類為正例的個數(shù);FN表示測試集中的正例被誤分類為負例的個數(shù)。
本文實驗的命名實體識別模型基于TensorFlow框架,具體實驗環(huán)境設(shè)置見表2。
表2 實驗環(huán)境Tab.2 Experimental environment
實驗參數(shù)具體設(shè)置:BiLSTM 模型的隱藏層大小為128,網(wǎng)絡(luò)層數(shù)為1,選取Relu 作為模型的激活函數(shù)。在訓練階段將Dropout 的比例設(shè)置為0.1,批次大小設(shè)置為16,最大序列長度為128,學習率設(shè)置為1e-5,丟失率為0.1,使用Adam 優(yōu)化器進行訓練。
為了驗證本文提出XLNet-BiLSTM-MHA-CRF模型的性能,將其和以下3 組模型進行對比:
(1)BiLSTM-CRF 模型;
(2)Bert-BiLSTM-CRF 模型;
(3)XLNet-BiLSTM-CRF 模型。
不同模型的實驗對比結(jié)果見表3,可以看出XLNet-BiLSTM-MHA-CRF 模型的精確率、召回率和F1 值在癥狀、疾病、治療、檢查、身體部位5 類醫(yī)療實體上都是最高的,相比于BiLSTM 基線模型分別提高了3.46%、1.14%、2.31%。
表3 各模型實驗對比結(jié)果Tab.3 The results of each model experiment were compared
在所有模型中,癥狀、檢查和身體部位3 個醫(yī)療實體的F1 值普遍較高,而疾病和治療的實體識別F1 值恰恰相反。通過分析發(fā)現(xiàn)這兩個類別的訓練數(shù)據(jù)量明顯過少,導致在模型訓練過程中出現(xiàn)嚴重的過擬合現(xiàn)象;另外,疾病實體和治療實體多為長詞結(jié)構(gòu),例如“左眼眶軟組織裂傷”、“左橈骨遠端骨折切開復位內(nèi)固定術(shù)”等,而癥狀、檢查和身體部位的實體結(jié)構(gòu)簡單且訓練數(shù)據(jù)量大,模型可以充分學習該類實體的文本特征。因此,在后期對電子病歷的實體識別中可以通過增加語料庫來提高模型的精度,同時可以進一步研究長詞實體的結(jié)構(gòu),挖掘更深層次的語義信息,例如引入詞典信息來增加語義特征,提高模型的泛化能力。
各模型實驗結(jié)果對比如圖6 所示。明顯可以看出,基于預訓練語言模型XLNet 和Bert 的模型的表現(xiàn)均比BiLSTM-CRF 模型的效果要好,主要是因為后者使用的是傳統(tǒng)的Word2vec 獲取的詞向量,無法解決一詞多義和同一詞的問題,同時也證明了預訓練語言模型構(gòu)造的動態(tài)詞向量可以提高文本內(nèi)在語義信息的表達能力;通過對比發(fā)現(xiàn)XLNet-BiLSTMCRF 模型比基于Bert 的模型表現(xiàn)高0.5%~2%,主要是因為XLNet 通過attention mask 和transformerxl 模塊彌補了Bert 的不足,導致識別效果的提升。本文提出的模型相比XLNet-BiLSTM-CRF 模型在精確率、召回率和F1 上面均有小幅提升,說明加入多頭注意力機制可以使文本信息表示更加完整。
圖6 各模型實驗結(jié)果對比圖Fig.6 Comparison of experimental results of each model
本文提出XLNet-BiLSTM-MHA-CRF 的醫(yī)療電子病歷命名實體識別模型,使用預訓練語言模型向量,在大規(guī)模語料中訓練得到的動態(tài)詞替代傳統(tǒng)的靜態(tài)詞向量,對電子病歷進行序列化表示,有效解決一詞多義等問題,讓上下文的語義表示更加準確;使用廣義自回歸預測模型XLNet 可以有效彌補Bert模型的不足;加入MHA 機制可以捕獲電子病歷文本中的長距離依賴特征。在ccks2017任務(wù)二數(shù)據(jù)集中實驗結(jié)果表明,基于XLNet-BiLSTM-MHACRF 模型F1 值為91.64%,相較于其他模型達到較好的識別效果,能夠較好地完成醫(yī)療電子病歷的命名實體識別任務(wù),對醫(yī)學領(lǐng)域的實體識別研究具有一定參考價值。由于本實驗數(shù)據(jù)僅有400 份電子病歷數(shù)據(jù),實體種類較少且實體數(shù)量不平衡,因此后期需要獲取更多的電子病歷數(shù)據(jù)來豐富模型的識別種類,為挖掘中文電子病歷中隱藏的醫(yī)療信息做準備。