鞏敦衛(wèi),張永凱,郭一楠?,王 斌,樊寬魯,火 焱
1) 中國礦業(yè)大學信息與控制工程學院,徐州 221116 2) 中國礦業(yè)大學人工智能研究院智慧醫(yī)療研究中心,徐州 221116 3) 徐州醫(yī)科大學第二附屬醫(yī)院內(nèi)分泌科,徐州 221000 4) 中國礦業(yè)大學附屬醫(yī)院內(nèi)分泌科,徐州 221116
電子病歷主要用來記錄患者過往病史、所患疾病及癥狀表現(xiàn)、體征檢查數(shù)據(jù)、診療意見及治療效果等一系列與患者健康狀況相關(guān)的重要信息[1].隨著醫(yī)療行業(yè)的信息化建設(shè)推進,用于記錄患者臨床治療信息的電子病歷也逐步完善. 基于電子病歷的智能診療、患者畫像構(gòu)建及其病程追蹤也逐漸成為智慧醫(yī)療領(lǐng)域的熱點問題[2?3]. 為充分挖掘患者診療數(shù)據(jù)中的隱含特征和病癥關(guān)聯(lián)關(guān)系,高效準確的命名實體識別(Named entity recognition,NER)是電子病歷文本信息抽取的關(guān)鍵. 雖然電子病歷的命名實體識別已有較豐富的研究成果,但是面向中文電子病歷的相關(guān)研究相對較少. 特別是,復(fù)雜的中文語言結(jié)構(gòu)使中文電子病歷文本存在專用詞匯多、語言結(jié)構(gòu)不規(guī)范、實體嵌套嚴重、中文詞語邊界模糊等特點,傳統(tǒng)的命名實體識別模型難于獲得滿意的分類效果[4].
針對生物醫(yī)學文本,研究人員先后提出詞典與規(guī)則的統(tǒng)計學方法,基于Transformer編碼的命名實體識別模型[5]、長短期記憶網(wǎng)絡(luò)模型條件隨機 場[6](Bidirectional long short-term memory with conditional random field,BiLSTM-CRF)和用于解決疾病名稱和實體標記不一致問題的Dic-Att-BiLSTMCRF模型[7]等. 然而,上述方法沒有充分考慮中文電子病歷的文本特性. 為進一步提高中文電子病歷文本的命名實體識別準確性,本文提出一種融合多特征嵌入與注意力機制的中文電子病歷命名實 體 識 別 模 型 (Multi-feature embedding-BiLSTMAttention-CRF,MFBAC). 該模型針對中文電子病歷的文本特點,首先將單詞特征引入NER模型的輸入表示層,以充分利用眾多的專用醫(yī)學詞匯;其次,針對中文電子病歷的稀疏標注數(shù)據(jù)和弱句子邏輯,采用Glove預(yù)訓練與詞典匹配,通過字詞Lattice結(jié)構(gòu)實現(xiàn)字詞聯(lián)合嵌入,從而解決傳統(tǒng)字符向量表達中文電子病歷文本時存在的局限性;再次,結(jié)合漢字字形的語義信息,通過卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural networks,CNN)提取字形局部特征,與上述字詞特征充分融合,最終實現(xiàn)輸入表示層的多特征嵌入;最后,在中間編碼層,通過BiLSTM實現(xiàn)字符在句子中的語義特征提取,并采用注意力機制實現(xiàn)不同隱含層的權(quán)重分配,使語義特征提取聚焦在與實體詞匯相關(guān)的特征上;進而,通過CRF解碼,獲得全局序列最優(yōu)標簽.
命名實體識別用于抽取序列文本中具有特定意義的實體,比如:人名、地名、時間等,并將其歸類到預(yù)定義的類別中[8],已被廣泛應(yīng)用于金融、互聯(lián)網(wǎng)搜索、智慧醫(yī)療等領(lǐng)域[9?10]. 目前,命名實體識別方法主要有:
(1)基于詞典匹配的方法:該類方法需要先構(gòu)建領(lǐng)域詞典,再通過匹配算法,完成命名實體識別,從而有效提升實體識別率[11]. 面向電子病歷所適用的專病詞庫,通常從搜狗詞庫和維基百科詞條中獲得,再通過添加同義詞、縮寫詞加以擴充.為強化醫(yī)學詞典的個性化信息,可以對電子病歷文本、醫(yī)學文獻先進行分詞處理,再提取具有較大詞頻?逆向文件頻率的若干詞加入到領(lǐng)域詞典中.雖然基于詞典匹配的方法對詞識別率較高,但是由于中文醫(yī)療實體數(shù)量眾多、個性化詞匯豐富、難以完整的詞典,所以容易導致對新詞的錯誤識別[12].
(2)基于規(guī)則的方法:根據(jù)生成的大量規(guī)則,利用實體的上/下文信息,完成命名實體識別. 但是,規(guī)則依賴于領(lǐng)域?qū)<医?jīng)驗,且不同領(lǐng)域之間的規(guī)則可移植性差. Kraus等[12]通過構(gòu)建大量的正則表達式,用于識別臨床記錄中的藥品、劑量等醫(yī)療實體.
(3)基于統(tǒng)計機器學習的方法:常見的統(tǒng)計機器學習方法有支持向量機、最大熵、隱馬爾可夫模型、條件隨機場 (Conditional random fields,CRF)等. 這些方法不需要過多的人工干預(yù),但依賴于大規(guī)模的標注數(shù)據(jù)集[13]和選擇的特征.
(4)基于深度學習的方法:該方法采用端到端的模型訓練與自動特征提取,不需要對數(shù)據(jù)進行人工處理. 針對電子病歷文本,研究人員先后提出一類Transformer編碼模型[5]、雙向長短期記憶網(wǎng)絡(luò)卷積條件隨機場模型[14]、基于字符與字典匹配實體聯(lián)合編碼的Lattice-LSTM-CRF模型[15]、谷歌公司開源的BERT模型[16]等,也有不少學者將遷移學習、半監(jiān)督學習引入NER任務(wù)中.
(5)混合方法:Jiang等[17]將啟發(fā)式規(guī)則與基于機器學習的實體識別模型相融合,設(shè)計了一種臨床實體的混合識別系統(tǒng). Wei等[18]則針對單一疾病的醫(yī)療實體識別,在條件隨機場模型中引入規(guī)則. 龔樂君和張知菲[19]提出基于領(lǐng)域詞典與CRF雙層標注的電子病歷實體識別方法,調(diào)和平均值(F1 Score,F(xiàn)1值)達到 97.2%. Hu 等[20]在2017年全國知識圖譜與語義計算大會的臨床命名實體識別競賽中,通過構(gòu)建醫(yī)療實體規(guī)則,獲得了較好的醫(yī)療實體識別效果. 通過合理集成詞典、規(guī)則、統(tǒng)計學習、深度學習等方法,提升NER模型性能和實體識別效果.
在構(gòu)建NER模型時,通常采用詞嵌入的方法,將詞表示為向量,實現(xiàn)對中文電子病歷文本的編碼. 詞嵌入應(yīng)該能充分挖掘詞在上下文的語義特征. 傳統(tǒng)的獨熱表示方法,不僅具有高稀疏性,而且無法刻畫詞的語義信息. 基于此,研究人員分別提出基于全局矩陣分解和局部上下文窗口的詞嵌入方法[21]. 全局矩陣分解方法雖然利用了全局語料特征,但是求解的計算規(guī)模較大. 相比而言,基于局部上下文窗口的連續(xù)詞袋模型(Continuous bag of words, CBOW)和跳讀模型(Skip-Gram)等方法僅利用局部文本數(shù)據(jù)進行訓練,不能有效反映詞匯的全局統(tǒng)計信息. 為了克服全局矩陣分解和局部上下文窗口方法的局限性,Pennington等[22]基于全局文本信息,提出一種融合全局矩陣分解和Word2Vec的Glove方法,顯著提升了詞嵌入效果.
MFBAC算法在輸入表示層引入字符、字形、單詞三個粒度的特征,并在BiLSTM-CRF中融入注意力機制,兼顧局部特征,彌補了BiLSTM的不足,提升了命名實體識別效果. 如圖1所示,輸入文本序列經(jīng) Glove預(yù)訓練,實現(xiàn)字符與單詞嵌入,并通過查表操作,依次將序列文本轉(zhuǎn)換為對應(yīng)向量;通過詞典匹配,基于字詞Lattice結(jié)構(gòu),實現(xiàn)字詞聯(lián)合嵌入;采用CNN提取字形的部首局部特征向量;通過雙向長短期記憶網(wǎng)絡(luò)(Long short term memory,LSTM),對拼接后的特征向量實現(xiàn)特征提??;基于注意力機制實現(xiàn)不同隱含層權(quán)重的重新分配;經(jīng)CRF解碼,獲得全局序列最優(yōu)標簽. 由此可見,多特征嵌入層、雙向LSTM、注意力機制層、條件隨機場是MFBAC算法的關(guān)鍵技術(shù).
圖1 MFBAC 算法框架Fig.1 MFBAC framework
考慮到中文電子病歷中存在的句間邏輯關(guān)系弱、實體嵌套嚴重、標簽數(shù)據(jù)缺乏等特點,為有效提升NER模型性能,在輸入表示層引入更多有效特征. 傳統(tǒng)的字典匹配方法雖然可以有效解決中文電子病歷文本中短句和弱邏輯關(guān)系問題,但是單一的詞嵌入容易因詞典中關(guān)鍵詞的缺乏而產(chǎn)生識別誤差. 以字符表征為主,采用Lattice結(jié)構(gòu)的字詞聯(lián)合編碼可以在字符特征中加入單詞信息,從而避免分詞誤差. 基于此,本文將字符向量與領(lǐng)域詞典匹配后的單詞,通過Lattice結(jié)構(gòu)實現(xiàn)字詞混合編碼,得到表征向量;再與字形特征向量拼接,得到序列文本的多特征嵌入.
為兼顧字符嵌入的計算代價和多特征嵌入的有效性,本文采用Glove實現(xiàn)字與詞嵌入,為后續(xù)的字詞聯(lián)合嵌入提供基礎(chǔ). 基于維基百科、醫(yī)療論壇、醫(yī)療典籍上獲取的大規(guī)模醫(yī)療文本,采用Glove模型,將包含n個字符的醫(yī)療文本序列轉(zhuǎn)換為100維的字符向量. 同理,對分詞處理的文本序列,通過Glove訓練,得到100維的詞向量. 進而,采用Lattice結(jié)構(gòu),將字詞特征向量求均值后,得到100維 的 字 詞 向 量 序 列 V ={v1,v2,···,vn}. 采 用CNN提取漢字字形的局部特征[20],為輸入表示層引入更多有效的語義特征. 對于每個字符,采用CNN計算字形表示,再通過CNN對所有字符進行卷積與合并,獲得字形級特征向量的序列W={w1,w2,···,wn}. 進而,將與上述字詞特征向量進行拼接,得到多特征嵌入表征.
LSTM本質(zhì)上是一種前向傳播學習算法. 為更加充分的利用上下文信息,將反向LSTM與之組合,構(gòu)成雙向LSTM,將同一輸入變量的兩個反向隱含層狀態(tài)向量進行拼接,更高效的表示字符在上下文中的含義. 記特征為分是正反向特征向量,是拼接符號. 基于此,獲得雙向LSTM輸出的狀態(tài)轉(zhuǎn)移矩陣,記為.
傳統(tǒng)的嵌入表示方法沒有考慮字符之間的相關(guān)性,導致輸入序列中的信息不能充分利用. 為此,引入注意力機制,深層提取詞匯特征和語義信息,從而對中文電子病歷文本中與實體相關(guān)的字符加以自動關(guān)注,忽略無用信息,兼顧長文本序列的局部特征.
注意力機制源于對人類視覺的研究,已在機器翻譯、機器視覺等領(lǐng)域得到應(yīng)用廣泛[24]. 考慮到中文電子病歷的短句式和句間弱邏輯特性,在中間隱含層引入注意力機制,使不符合注意力模型的內(nèi)容被弱化或者遺忘[25]. 針對每個字符,注意力機制使所提模型聚焦于輸入序列的其他信息,通過獲取更多線索,更好地對該字符進行編碼. 注意力機制對不同字符的隱含層狀態(tài)賦予不同的關(guān)注權(quán)重,從而使語義特征可以集中在與醫(yī)療實體相關(guān)的字符上[26].
對ei進行歸一化處理結(jié)果,記為
由此,基于動態(tài)尺度計算注意力權(quán)重為
采用注意力權(quán)重分配方法來改變雙向LSTM輸出的概率矩陣,可以兼顧更多局部特征,也就能改善CRF層的序列標注結(jié)果.
為有效驗證所提算法的有效性,本文以CCKS2017開源數(shù)據(jù)集和自建糖尿病中文電子病歷集作為實驗數(shù)據(jù)來源,通過與主流模型的多組對比實驗,深入分析所提命名實體識別方法性能. 所有實驗是在 intel Xeon Silver 4210@2.20 GHz 處理器、256 GB內(nèi)存、Nvidia Quadro P5000計算條件下進行,模型搭建采用開源框架TensorFlow 1.14實現(xiàn).
自建糖尿病中文電子病歷集共500份,參考CCKS2017開源數(shù)據(jù)集,采用BIO標注體系統(tǒng)一進行標注. BIO標注體系中,B代表實體的開始位置,I代表實體的內(nèi)部,O代表非實體部分. 相應(yīng)的命名實體包含疾病、癥狀、身體部位、藥品、檢查操作五種類別,如表1所示.
表1 命名實體類別Table 1 Types of named entities
從CCKS2017開源數(shù)據(jù)集和自建數(shù)據(jù)集中,隨機選取800份糖尿病中文電子病歷構(gòu)成數(shù)據(jù)集,其中,80%作為訓練集,20%作為測試集. 訓練集和測試集中各類實體分布,如表2所示.
表2 訓練集與測試集醫(yī)療實體分布Table 2 Distribution of training and test datasets for medical entities
為實現(xiàn)多特征嵌入,從維基百科與醫(yī)療論壇上爬取1000萬條句子作為訓練語料,詞向量和字符維度設(shè)置為100,窗口尺寸設(shè)為8;用于字形局部特征提取的CNN采用13層,選用TrueType字體將每個漢字渲染為48×48的8位灰度位圖;卷積核設(shè)為3×3,通道數(shù)選取64、128、256和512;BiLSTMAtt-CRF的隱含層節(jié)點數(shù)選取300,dropout層參數(shù)設(shè)置為0.5, Adam優(yōu)化算法的學習率為0.001,batch size設(shè)為 64,epoch選取 80. 采用準確率P、召回率R和F1作為NER模型評價指標[25].
實驗一:基于相同的BiLSTM-CRF結(jié)構(gòu),在輸入表示層分別采用字符嵌入(Char embedding)、字形嵌入(Font embedding)、字詞聯(lián)合嵌入(CW Embedding)、字詞形嵌入 (CWF embedding),對比分析所提算法中多特征嵌入的合理性與必要性. 不同特征嵌入下的命名實體識別性能均值如表3所示. 可見,單獨使用字符嵌入優(yōu)于單獨字形嵌入;將字符與單詞特征通過Lattice結(jié)構(gòu)聯(lián)合嵌入,其效果優(yōu)于單純使用字符嵌入或詞嵌入,表明單詞特征可以顯著表達中文電子病歷文本中的實體關(guān)系. 相比而言,所提字詞形多特征嵌入比字詞聯(lián)合嵌入具有更優(yōu)識別性能,并且隨著引入特征的增加,命名實體識別性能顯著改善,表明引入的多類特征符合中文電子病歷特點,可以有效增強模型性能.
表3 不同特征嵌入下的命名實體識別性能Table 3 Performance of NER embedding different features
實驗二:基于實驗一的五種輸入表示層嵌入方式,在BiLSTM-CRF結(jié)構(gòu)中引入注意力機制,構(gòu)成BiLSTM-Att-CRF,其識別性能如表4所示. 通過與實驗一的命名實體識別性能對比,表明引入注意力機制可以顯著提升NER模型性能. 這是因為,注意力機制通過重新計算各個隱含層的權(quán)重分布,彌補了雙向LSTM對多特征嵌入信息的提取不足,通過更加合理的編碼層特征提取,有效改善模型的實體識別性能.
表4 注意力機制對不同特征嵌入的影響Table 4 Performance of NER with attention
實驗三:為充分驗證所提模型的合理性,將其與其他主流算法進行性能對比. 其他主流算法的輸入表示層均采用字符嵌入. 由表5所示的不同算法識別效果可知,本文所提MFBAC方法的識別性能均優(yōu)于其他主流算法,表明引入多特征嵌入和注意力機制對識別語言結(jié)構(gòu)特殊的中文電子病歷實體是有效且必要的. 此外,通過對比圖2所示的變換器條件隨機場(Transformer-CRF)、BiLSTMCRF、MFBAC算法的F1值可知,本文所提算法對5類醫(yī)療實體的識別率均取得最好性能. 字符和單詞的聯(lián)合編碼可以為與身體部位相關(guān)的實體提供豐富信息,確保該類實體的識別性能;對于存在較多嵌套的檢查和操作類實體,其他算法不能提取足夠有效的特征,而MFBAC算法通過引入注意力機制解決了該問題. 為進一步分析所提算法的識別效率,統(tǒng)計不同識別算法的平均加載時間和平均測試時間,如表5所示. 可見,本文所提算法的模型加載速度和測試時間雖稍劣于基于注意力機制的雙向記憶神經(jīng)網(wǎng)絡(luò)與條件隨機場(Attention-BiLSTM-CRF)、雙向門控循環(huán)神經(jīng)網(wǎng)絡(luò)與條件隨機場(BiGRU-CRF)和BiLSTM-CRF,但是其識別性能卻顯著優(yōu)于后者.
圖2 不同算法的 F1值Fig.2 Comparison on the F1 values of different NER models
表5 不同算法的性能對比Table 5 Comparison of the performance of different NER models
針對中文電子病歷文本,提出一種融合多特征嵌入與注意力機制的命名實體識別算法. 該算法根據(jù)中文電子病歷的特點,在輸入表示層集成了字詞和字符形狀等多種特征嵌入,并通過引入注意力機制,對雙向LSTM各個隱含層的編碼信息進行權(quán)值分配. 針對中文電子病歷文本的5類實體,基于開源和自建糖尿病數(shù)據(jù)集,通過三組實驗的對比分析,表明輸入表示層引入多種特征是必要的,在雙向LSTM與CRF層中間引入注意力機制,能有效兼顧序列文本的局部特征,顯著提升所提NER算法性能,同時不顯著增加計算代價.基于該思想,在未來工作中將深入挖掘不同特征的重要性,并引入半監(jiān)督學習和遷移學習方法,解決中文電子病歷中標簽樣本少等問題.