姚 蕾,蔣明峰,方 賢,魏 波,李 楊
(浙江理工大學計算機科學與技術學院,浙江 杭州 310018)
近年來,隨著網絡技術和信息系統的不斷發展和完善,醫療系統產生的醫療數據將急劇增加。電子病歷是指醫務人員在開展醫療活動的過程中,使用信息系統生成的數字化資料,一般包括文字、圖表、數據、符號、圖形和影像[1]。電子病歷中涉及大量的文字信息,中文電子病歷命名實體識別作為重要的中文電子醫療數據信息抽取任務,普遍受到研究人員的重視。
命名實體識別是指從非結構化或半結構化的文本數據中提取實體,并將檢測到的實體歸類至預先定義好的一類中。其中,電子病歷命名實體識別的主要目的是識別與分類醫療記錄中的臨床術語,包括實驗室檢驗、手術和藥物等。例如,某份電子病歷中的“患者緣于2 小時前無明顯誘因出現左腹部疼痛……”,其中“左腹部”屬于身體部位實體,“疼痛”屬于癥狀和體征實體,“門診經泌尿系超聲”中的“泌尿系超聲”為檢查實體。命名實體識別研究成果能夠為構建醫學知識庫、繪制信息抽取和知識圖譜等后續的臨床研究提供支撐。然而,手動抽取實體信息會消耗較大的時間和人力成本,因此很多研究者采用自然語言處理技術解決以上問題。
目前,國外關于命名實體識別的絕大部分研究均基于英文[2],而國內對于中文電子病歷命名識別的研究尚處于初期階段,沒有建設全面的體系結構。主要原因是中文電子病歷命名實體識別的規范和標準無法達成統一,中文電子病歷文本中實體沒有自然的分隔符,而且醫療實體的組成較為復雜。因此,本文將利用部首信息和術語字典開展命名實體識別研究任務。
針對中文電子病歷命名實體識別任務,本文使用BERT獲得輸入的信息向量表示,結合部首級特征表示,以此作為Transformer模塊的輸入。Transformer模塊對上下文長距離的位置依賴特征進行提取,并在CRF模塊中對上下文標注進行約束,最終輸出序列標注結果。本文提出的方法在CCKS2017和CCKS2021數據集上廣泛評估了其可用性和實用性。
本文提出一種基于BERT-Transformer-CRF(BTC)的中文電子病歷命名實體識別方法;其主要工作原理歸納如下:(1)鑒于句子中的實體間存在依賴關系,本文使用Transformer獲得更好的上下文特征表示,從而捕捉字符之間的長距離依賴關系。其中,多頭注意力機制可以直接捕捉角色之間的依賴關系,解決了一般深度模型隨著實體間距離增加長期依賴能力下降的問題。(2)本文通過添加部首特征,并將部首信息和深度學習模型相結合,解決了移植一般深度學習模型導致的醫療實體識別性能差的問題。(3)本文在真實的電子病歷語料上驗證模型的效果,實驗結果表明,BTC模型在CCKS2017和CCKS2021數據集上具有良好的性能優勢。
命名實體識別是從大規模非結構化文本數據中提取具有實際意義的實體[3],主要分為基于詞典和規則、基于統計和基于神經網絡的命名實體識別方法。
基于規則的方法依賴于一個龐大且全面的領域字典,需要領域專家手動構建規則和模板[4],無法在不同領域間復用。在統計的經典機器學習方法中,隱馬爾科夫模型(Hidden Marko Model,HMM)[5]、支持向量機(Support Vector Machine,SVM)[6]、條件隨機場(Conditional Random Field,CRF)[7]得到廣泛應用。例如,扈應等[8]提出一種結合CRF的邊界組合命名實體識別方法,有效地利用了生物醫學實體特征。統計的機器學習方法需要設計特征模板提取特征,實體識別效果易受到構建的特征集合的影響。
近年來,基于神經網絡的深度學習方法廣泛運用于自然語言處理領域。WU等[9]在雙向長短期記憶(Bidirectional Long Short-Term Memory,BiLSTM)網絡后引入自注意力機制,并提出一種新的細粒度字符級表示方法用于獲取更多的漢字語義信息。LI等[10]提出BERT-BiLSTM-CRF模型,在未標記的中文臨床記錄上預訓練BERT模型增強語義信息,利用BiLSTM和CRF等不同層次提取文本特征和解碼預測標簽。YIN等[11]使用自注意力捕捉字符間的相關性,在CCKS2017和TP_CNER數據集中的F1評分分別達到93.00%和86.34%。KONG等[12]通過構建多層次卷積神經網絡(CNN)融合長短期信息,設計一種注意力機制獲取全局上下文信息。YA等[13]提出XLNET-BiLSTM-CRF模型,利用預訓練的XLNET提取句子特征。QIU等[14]提出帶有條件隨機場的RD-CNN-CRF模型解決通過時間傳播的隱形激活矢量導致訓練時間過長的問題,殘差卷積神經網絡用來捕捉相鄰標簽間的依賴關系。然而,長短期記憶網絡(Long Short-Term Memory,LSTM)和CNN捕捉字符長期依賴關系的能力將隨著實體間距離的增加而下降。這些模型沒有充分考慮醫學領域數據信息的特點,在醫學實體識別方面的效果不佳。
相較于傳統的Word2vec、Glove、ELMO詞向量方法[15],BERT能獲得更好的字符嵌入表示。除了單詞嵌入,其他一些特征對于提升命名實體識別效果也有幫助。電子病歷文本中有海量的醫學專業術語,高質量的醫學術語詞典對于提取醫療領域知識的特征非常有用。因此,本文將部首特征和術語字典特征與深度學習模型相融合。
本文提出的BERT-Transformer-CRF模型架構主要由BERT、Transformer、CRF三個模塊組成,模型架構如圖1所示,其基本思想是通過微調的BERT模型進行預訓練提取輸入的信息特征,將字向量表示序列和部首特征嵌入連接起來,加入字典特征,通過Transformer層獲得長距離的文本依賴,在CRF模塊中對上下文標注約束進行解碼,最終輸出序列結果。

圖1 BERT-Transformer-CRF+radical 模型架構圖Fig.1 Model architecture diagram of BERTTransformer-CRF+radical
BERT模型的主要創新點在于使用掩碼語言模型(Mask Language Model,MLM)獲取字符級特征表示和下一句預測進行預訓練[16],學習到的先驗語義知識通過微調被應用到下游任務中。這樣得到的向量不僅包含隱含的上下文信息,還能夠更徹底地捕捉句子中的雙向關系。谷歌官方發布的BERTbase及其中文版本并沒有在中文臨床領域進行預訓練。北京大學國際數學研究中心發布了基于中文臨床語料庫的預訓練模型[10],本研究使用臨床文本生成的PyTorch版本的預訓練BERT模型,該模型從網絡上爬取1.05 G臨床文本,從現有的BERT檢查點開始,在BERT的原始詞匯表增加46 個字符并在特定域上進行預訓練。本文模型從預訓練好的BERT模型獲得字符級的增強語義信息,結合部首信息輸入Transformer層中。
近些年,部首特征被廣泛運用于命名實體識別任務中[17]。漢字是象形文字和方塊字,它們有更深次的語義隱含在漢字內部。偏旁部首“月”通常與身體部位有關[18],比如“肺”“肝”“腦”是用來代表人體器官的?!梆凇蓖ǔEc疾病和診斷有關,“口”通常出現在癥狀實體中。然而,目前主流的命名實體識別方法不能將預先訓練好的模型與中文部首信息相結合。本研究從在線新華字典獲取漢字的偏旁部首組成,它以“字符-偏旁部首”的形式生成一個鍵值對字典。部首信息編碼與BERT獲得字向量編碼疊加融合到深度學習網絡中。
本文引入字典信息提升命名實體識別的效果。針對藥物、手術等術語字典,利用雙向最大匹配算法[19]在文本中找到對應實體。具體來說,利用雙向最大匹配算法分割文本和標注出現在字典中的實體,如果文本可以通過該算法被標注為第j個標簽,則通過向該元素添加常數修改線性層的輸出,以此提高識別效果。
Transformer是一種全聯接的多頭自注意力神經網絡模型。面向機器翻譯等任務的Transformer[20]由編碼組件、解碼組件及它們中間的連接組成。本文提出的模型僅使用其中的編碼器進行醫療文本序列的長距離位置依賴關系特征建模。
Transformer的編碼器由多頭注意力和前饋神經網絡組成。如圖2所示,BERT獲得的字符嵌入與部首嵌入進行結合,輸出信息進入Transformer層,與位置嵌入進行拼接得到Xembedding,作為多頭注意力機制的輸入。多頭注意力由多個自注意力拼接組成。多頭注意力結構由中心塊的若干線性變換和點積注意力組成。Attention的工作原理如下:給定輸入的Xembedding向量,然后讀入輸入向量通過矩陣進行線性變換得到Query向量Key向量,以及Value向量


圖2 多頭注意力結構Fig.2 Multi-head attention structure
接著利用得到的Q和K,使用點積法計算輸入序列的相關性得分。對相關性得分進行歸一化,使得訓練時梯度穩定。經過Softmax函數將得分向量轉化為[0,1]之間的概率分布并與V進行點積。如式(4)所示,令輸出矩陣,則:


F(X)與L再次進行殘差連接和歸一化,構造出一個編碼器,疊加多個編碼器,最終得到Transformer層的輸出。
CRF是自然語言處理的基礎模型,廣泛運用于序列標注模型,對上下文標注進行約束使得正確的輸出標簽最大化。在中文電子病例命名實體識別任務中,輸出標注之間存在強相關性,相鄰的標簽之間有依賴關系,例如標簽“B-疾病和診斷”不能跟在“I-疾病和診斷”之后。Transformer輸出的向量只考慮了上下文之間的長距離依賴關系,沒有考慮標簽之間的順序,而CRF層自動學習句子的約束條件,所以引入條件隨機場解決這一問題。對于給定的輸入CRF通過Softmax函數運用隨機條件概率預測輸出向量標簽序列Y的得分:


維特比算法可以通過動態規劃算法獲得最優路徑。
實驗采用Python 3.8語言開發,軟件模型基于PyTorch深度學習框架,采用Adam作為優化器,學習率為2e-5,批處理大小為8,epochs迭代次數為15 次,max_seq_length=480,hidden_size為768,dropout為0.1,部首特征向量維度為20。硬件采用2 塊NVIDIA GeForce RTX 3090顯卡訓練。
本研究的數據集源自2017 年全國知識圖譜與語義計算大會(CCKS2017)和2021年全國知識圖譜與語義計算大會(CCKS2021)。數據集包含實際的電子病歷數據,由專業醫學領域團隊手工進行注釋。首先對數據進行預處理,采用NER領域的標準標注策略BIO,“B”表示醫療實體的起始位置,“I”表示醫療實體的中間部分,“O”表示與醫療實體無關的部分。
在CCKS2017數據集中,有四種類型的電子病歷,包括一般項目、病史特點、診療經過及出院記錄,共有五類命名實體:DISEASE(疾病和診斷)、SIGNS(癥狀和體征)、CHECK(檢查和檢驗)、BODY(身體部位)及TREATMENT(治療)。由于本文的研究人員沒有參加比賽,所以獲得的數據集不完整。訓練集有960 條臨床記錄,測試集包含120 條臨床記錄。表1列出了不同類別實體的統計數據;各實體分布比例如圖3所示。

圖3 CCKS2017各類別實體分布Fig.3 Distribution of various entities on CCKS2017 dataset

表1 CCKS2017不同類別醫療實體統計Tab.1 Statistics of different types of medical entities on CCKS2017 dataset
在CCKS2021數據集中,有1,150 條臨床記錄,按8∶2的比例劃分訓練集和測試集,共有實驗室檢驗、藥物、影像檢查、解剖部位、疾病和診斷及手術6 類命名實體。表2列出了不同類別實體的統計數據;圖4顯示各實體分布比例。

表2 CCKS2021不同類別醫療實體統計Tab.2 Statistics of different types of medical entities on CCKS2021 dataset

圖4 CCKS2021各類別實體分布Fig.4 Distribution of various entities on CCKS2021 dataset
本實驗采用命名實體識別通用的評價指標正確率P(Precision)、召回率R(Recall)、F1值(F-measure)對電子病例命名實體識別結果進行性能衡量,其計算公式分別如下:

式(9)—式(11)中,TP為識別正確的實體詞數,FP為實體識別正確但類別或者邊界判定出現錯誤,FN為應該被識別但實際沒有被識別的醫療實體的數量。
4.3.1 實驗結果比較與分析
為了驗證BTC模型在CCKS2017數據集的有效性,與其他的命名實體識別方法進行比較與分析,實驗結果如表3所示。BiLSTM+CRF通過Word2vec訓練單詞嵌入。CRF保證了標簽序列之間的順序,BERT+CRF與BiLSTM+CRF兩個基線模型進行對比,實驗表明BERT能獲得更好的特征表示。為了驗證預訓練BERT的有效性,進行BERT+BiLSTM+CRF和BiLSTM+CRF的對比實驗,結果表明,在CCKS2017數據集中引入在臨床預訓練好的BERT模型后,P、R、F1值分別提高了4.98%、1.8%、3.41%。為了證明Transformer的有效性,進行BTC和BERT+BiLSTM+CRF的對比實驗。在CCKS2017數據集上,P、R、F1值分別提高了4.4%、4.99%、4.69%,這優于其他現有技術方法。充分表明Transformer中多頭注意力機制使其具有較強的長距離依賴關系表征能力,能獲得更好的上下文表示。除此以外,本文將術語字典和部首特征等應用于微調的BERT模型,Transformer能獲得豐富的語義信息,F1提高了0.22%。

表3 CCKS2017模型對比實驗Tab.3 Model comparison experiment on CCKS2017 dataset
除了觀察整個測試數據集的評估指標,本研究仔細觀察了預測的結果。在BTC模型的基礎上,添加部首特征信息并應用字典信息后處理,模型在不同類型和臨床實體上的性能如表4所示。在CCKS2017數據集中,在檢查和檢驗、疾病和診斷、癥狀和體征及治療方面取得了較好的效果,但未能有效識別身體部位特征。檢查結果發現:預測實體遺漏了一些部位,例如正確實體為“頭皮”“咽部”“右側頂骨”“頭顱”“右側上下肢”,模型則預測為“頭”“咽”“右側頂”“頭”“右側上下”,部分部位遺漏;其次,類別標注錯誤,如檢查類實體“查體雙肺呼吸音粗”,模型提取“雙肺部位”,識別類別錯誤。

表4 CCKS2017各類型實體的識別比較Tab.4 Recognition and comparison of different types of entities on CCKS2017
本文還在CCKS2021數據集上做了實驗,實驗結果如表5所示。同樣,選取BiLSTM+CRF與BERT+CRF對比,F1提高了3.52%,表明引入臨床語料上預訓練的BERT模型優于BiLSTM模型。BTC相較于BERT+BiLSTM+CRF在P、R、F1上分別提升1.01%、0.59%、0.81%;結果表明,Transformer能夠獲得長距離依賴關系的能力優于BiLSTM。相較于基線BiLSTM-CRF,本文的F1提高了4.39%。本文引入藥物和手術等詞典,利用字典信息后處理的方法修改線性層的輸出。引入外部部首特征和術語詞典,總體P、R、F1值提升了0.03%、0.6%、0.3%,方法受限于領域詞典的質量,結果不顯著。各實體的P、R、F1值如表6所示。在CCKS2021數據集中,疾病和診斷及實驗室檢驗識別效果較差:第一,預測實體的位置是缺失或者冗余的。比如,預測的實體是“口腔”“子宮”,而正確的實體識別是“口腔潰瘍”“子宮內膜分段診刮”。第二,標注的命名實體識描述過長,預測的命名實體通常較短,比如“宮內孕不全流產”,模型預測的實體為“宮內孕不全”。第三,預測的實體存在錯誤的標注,比如“結腸癌病變”正確類別為疾病和診斷,而模型預測的結果提取“結腸”,該實體識別的類別為解剖部位,識別結果錯誤。

表5 CCKS2021模型對比實驗Tab.5 Model comparison experiment on CCKS2021 dataset

表6 CCKS2021各類型實體的識別比較Tab.6 Recognition and comparison of different types of entities on CCKS2021
4.3.2 與現有方法比較
CCKS2017數據集其他的測試結果可以在表7中看到,體現了本文最佳模型和最先進的深度模型之間的比較結果。QIN等[21]在中文電子病歷領域提出了一個基于RoBERTa-BiGRUCRF的命名實體識別方法,將其應用于腦血管疾病領域,通過將電子病歷轉化為低維向量輸入BiGRU層捕獲上下文特征,總體F1值達到90.38%。羅熹等[22]提出一種融合領域詞典的字符級表示方法,結合多頭注意力機制和BiLSTM-CRF捕捉字符間的潛在依賴權重、語義和結構特征等多方面特征。WU等[23]利用RoBERTa中的全詞掩碼獲取詞向量表示,同時通過BiLSTM捕捉提取部首信息后捕捉特征的內在關聯性,并拼接RoBERTa生成的特征向量。李丹等[24]設計BiLSTM與CRF的聯合模型并引入BERT模型,預測的時候考慮了上下文特征,同時將部首信息與字向量編碼相結合,利用部首信息在標簽矩陣中加入部首以修改CRF層得分函數,F1分數可以增加到93.81%。張云秋等[25]將RoBERTa-wwm中的各編碼層生成的語義表示進行動態融合,BiLSTM層用來捕獲序列信息,再輸入條件隨機場保證各標簽之間的順序關系。實驗表明,本文模型在CCKS2017數據集上取得了96.22%的精度,相較于其他模型,總體識別精度提高了2.14%—5.84%,優于其他模型。

表7 與CCKS2017現有的深度模型比較Tab.7 Comparison with the existing deep model on CCKS2017 dataset
從表8可以看出,BTC+radical+dictionary模型取得了總體F1值為84.65%的成績;而BiLSTM+CRF、BERT+CRF、BERT+BiLSTM+CRF的總體F1值分別為80.26%、83.78%、83.54%。相較于以上模型,本文的F1值分別提高了4.39%、0.87%、1.11%,充分證明了本文模型的有效性。BERT+CRF與BiLSTM+CRF相比,預訓練BERT獲取字向量特征時具有非常好的并行性質,總體識別的精度為83.78%。將BERT+BiLSTM+CRF與BiLSTM+CRF進行對比發現,F1提高了3.28%,充分說明在臨床語料庫預訓練的BERT模型能獲得更加豐富的語義特征,證明預訓練BERT模型的有效性。BTC相比BERT+BiLSTM+CRF,各實體識別精度均有提升,總體識別精度提升了0.81%,表明Transformer獲得實體間長距離依賴能力優于BiLSTM。引入部首特征和手術、藥物術語詞典,模型的性能進一步提升,但受限于詞典的質量,結果提升不顯著,在解剖部位、藥物、疾病和診斷、實驗室檢驗實體類別中識別的精確度分別提升了0.52%、0.14%、0.24%、1.23%。本文模型在解剖部位、手術、影像檢查三種實體的識別效果均為最好。同時,從表8中可以發現,BiLSTM+CRF模型在疾病和診斷、實驗室檢查中取得了最好的成績,即88.48%、87.91%,這證明了有些模型即使總體F1值并非最高,在特定實體上也能獲得出色的性能。

表8 不同模型在CCKS2021數據集上對每個實體和整體的F1值的預測結果Tab.8 Prediction results of different models on CCKS2021 dataset for F1 value of each entity and the whole
圖5表明本文模型對身體部位類別的識別效果較差。根據圖6的混淆矩陣顯示,本文的模型對影像檢查、手術、解剖部位實體識別效果較好。本文的最佳模型對實體的中間部位識別率較高,起始部位識別有偏差。其中,手術的起始位置可能被劃分為手術的中間位置,比如“小腸切除術”被錯誤劃

圖5 CCKS2017實體類別混淆矩陣Fig.5 Entity category confusion matrix on

圖6 CCKS2021實體類別混淆矩陣Fig.6 Entity category confusion matrix on CCKS2021 dataset
本文提出一種基于微調的BERT-Transformer-CRF實體識別模型。該模型通過在中文臨床語料庫預訓練的BERT獲得字符級的增強語義信息,與部首語義信息融合輸入Transformer。Transformer中的多頭注意力機制和前饋神經網絡能夠更好地捕捉字符間的長距離依賴關系,CRF能保證臨近標簽間的順序關系,有效提升了醫療領域命名實體的識別能力。同時,添加手術、藥物等術語字典特征進一步提升性能。實驗結果表明,該模型能有效識別手術、影像檢查、解剖部位等領域實體,在CCKS2017和CCKS2021數據集中獲得96.22%和84.65%的F1值,優于現有模型的結果。在未來工作中,考慮擴充學習高質量的領域詞典和構建更大規模的語料庫,可以將其應用到醫學命名實體的信息抽取和醫療知識圖譜的構建等后續工作中。