賈楊春, 朱定局
(華南師范大學(xué) 計算機學(xué)院, 廣州 510631)
隨著現(xiàn)代化醫(yī)療系統(tǒng)的普及, 如今已產(chǎn)生了海量的醫(yī)療數(shù)據(jù), 如診斷報告、臨床研究數(shù)據(jù)、藥品說明以及電子病歷等. 醫(yī)療數(shù)據(jù)的有效利用對醫(yī)學(xué)研究、醫(yī)療診斷和公共防疫等方面起著至關(guān)重要的作用, 比如, 統(tǒng)計研究醫(yī)學(xué)臨床數(shù)據(jù)可為醫(yī)務(wù)人員診療決策提供信息支撐; 又比如, 精準醫(yī)療通過對患者的基因大數(shù)據(jù)進行挖掘與分析, 可為其提供有針對性的診療方案;還有, 對于疫情防控, 跨省市的醫(yī)療大數(shù)據(jù)的合理利用可協(xié)助專家及時、全面地提出防控建議, 實現(xiàn)對醫(yī)療資源的合理配置. 然而, 醫(yī)療數(shù)據(jù)一般是半結(jié)構(gòu)化或非結(jié)構(gòu)化的文本, 對后續(xù)的研究帶來了一定難度. 因此,對海量的非結(jié)構(gòu)化醫(yī)療文本通過數(shù)據(jù)分析與挖掘的方式來獲取有價值的醫(yī)學(xué)數(shù)據(jù)已成為一個研究熱點.
命名實體識別(named entity recognition, NER)[1]指從自然語言文本中發(fā)現(xiàn)特定的目標實體, 對文本信息結(jié)構(gòu)化起著十分重要的作用. 醫(yī)療命名實體識別指從醫(yī)療文本中識別醫(yī)療實體的邊界并判斷醫(yī)療實體的類別,常見的醫(yī)療實體類別包括疾病名稱、身體部位、藥品信息、檢查或檢驗項目以及癥狀等. 醫(yī)療命名實體識別的準確性影響著事件抽取、關(guān)系抽取等任務(wù)的效果,是醫(yī)療文本數(shù)據(jù)挖掘的關(guān)鍵任務(wù), 為構(gòu)建健康醫(yī)療系統(tǒng)、智能醫(yī)療問答系統(tǒng)、醫(yī)療知識圖譜提供了關(guān)鍵基礎(chǔ).
如今, 命名實體識別技術(shù)在學(xué)術(shù)界已經(jīng)較為成熟,但還無法較好的應(yīng)用到工業(yè)界中. 主要是因為不同領(lǐng)域,有不同的語言風格以及規(guī)則, 命名實體模型的泛化能力差, 無法找到一個統(tǒng)一高效的模型. 如何將命名實體識別任務(wù)部署在醫(yī)療領(lǐng)域, 首先需要分析該領(lǐng)域的特點, 進而總結(jié)出需要解決的難點. 現(xiàn)有的BiLSTM-CRF模型是該任務(wù)的主要模型, 為了提升模型效果, 需要在傳統(tǒng)模型的基準上加以優(yōu)化改進. 本文按照本思路, 在第1節(jié)總結(jié)了命名實體識別在醫(yī)療領(lǐng)域面臨的難點, 第2節(jié)和第3節(jié)總結(jié)了傳統(tǒng)的方法以及基于深度學(xué)習(xí)的方法, 在第4節(jié)介紹了集中主流的改進方法, 包括針對特征向量、數(shù)據(jù)匱乏、復(fù)雜命名實體識別等問題的改進.
分析研究醫(yī)療命名實體識別的特有難點, 對提高實體識別效果具有一定的指導(dǎo)意義. 對于醫(yī)療命名實體識別的難點, 一方面是醫(yī)療文本特有的語言特點給實體識別任務(wù)帶來的困難, 另一方面是復(fù)雜的命名實體難以準確地被識別, 還有就是命名實體識別應(yīng)用到醫(yī)療領(lǐng)域所面臨的數(shù)據(jù)匱乏、可遷移性差、可解釋性弱等問題.
中文醫(yī)療文本的特點主要集中在中文的語言特點以及醫(yī)療文本的語言特點兩個方面.與英文不同, 中文命名實體識別的難度更大, 主要因為中文文本沒有顯著的大小寫特征以及單詞特征, 相關(guān)實體邊界難以確定. 容易造成以下問題: (1)中文分詞錯誤. 若采用基于詞的命名實體識別, 會因不正確的中文分詞導(dǎo)致命名實體識別錯誤, 如“痛風性關(guān)節(jié)炎”會被錯誤識別為“痛風”和“關(guān)節(jié)炎”兩個實體. (2)語義信息無法完整提取.若采用基于字的方法, 可避免分詞錯誤, 但沒有考慮文本中詞和詞邊界信息, 而這些詞義信息可能對識別效果有潛在的提升效果. (3)字、詞多義問題. 無論是基于字還是基于詞的命名實體識別都無法避免由于同一個字、詞在不同上下文中的含義不同所造成的歧義問題.
醫(yī)療文本中存在著大量的專業(yè)術(shù)語、英文縮寫等特殊表達, 以及很多如嵌套、略寫等不規(guī)范的表達, 這給醫(yī)療命名實體識別帶來了一定的難度, 主要表現(xiàn)在以下幾個方面: (1)專業(yè)性強是醫(yī)療領(lǐng)域的一大特點. 醫(yī)療文本中存在著大量的醫(yī)學(xué)名詞和專業(yè)術(shù)語, 沒有醫(yī)學(xué)背景的非專業(yè)人士對其很難理解, 無法對其準確標注.(2)醫(yī)療文本中存在很多英文縮寫. 醫(yī)務(wù)人員為了簡便以及提高通用性與可讀性, 通常使用英文縮寫代替復(fù)雜的中文名稱, 但命名實體識別模型很難對其辨別. 如“HR”是“心率”的英文縮寫, “BP”是“血壓”的英文縮寫.(3)大量的醫(yī)學(xué)名詞都是由外文音譯而來, 同一個英文醫(yī)學(xué)名詞可能對應(yīng)著不同的音譯而來中文名詞, 給命名實體識別引入了噪聲. 如“克雷伯桿菌”和“克雷白桿菌”“艾樂替尼”和“阿來替尼”. (4)醫(yī)療文本中存在句子成分缺失、表達不完整現(xiàn)象.如縮略表達“畏寒(經(jīng)常怕冷感)”“律齊(心跳正常)”. (5)醫(yī)療實體名詞種類繁多, 數(shù)量龐大, 并且, 隨著現(xiàn)代化醫(yī)療技術(shù)的發(fā)展, 未登陸詞不斷涌現(xiàn), 難以構(gòu)建一個系統(tǒng)全面的醫(yī)學(xué)詞典.
對于醫(yī)療命名實體識別而言, 復(fù)雜命名實體通常難以被準確地識別. 主要包括嵌套醫(yī)療命名實體、類別易混淆命名實體, 非連續(xù)表達醫(yī)療命名實體. 實例如圖1所示, 其中嵌套命名實體是指一個命名實體中存在多個其他的命名實體, 如“胰腺癌”指一個疾病實體, 而“胰腺癌”中的“胰腺”指的是身體部位實體; 非連續(xù)命名實體指由于表達不完整造成歧義現(xiàn)象, 如“未見胸悶憋氣、惡心嘔吐、乏力”, 應(yīng)指“未見胸悶憋氣, 未見惡心嘔吐,未見乏力”; 類型易混淆命名實體指的某些醫(yī)療命名實體所屬多個類別, 無法準確判斷當前實體屬于哪一類別,如“發(fā)熱”一般是指一種疾病, 但有時也可作為癥狀.
圖1 復(fù)雜命名實體實例
近些年來, 隨著深度學(xué)習(xí)技術(shù)的發(fā)展,命名實體識別在學(xué)術(shù)界已獲得了很多不錯的成果, 但在工業(yè)界還面臨著很多挑戰(zhàn), 針對本文所研究的醫(yī)療領(lǐng)域, 主要存在以下問題: (1)數(shù)據(jù)匱乏. 醫(yī)療實體標注是一個較為復(fù)雜的任務(wù), 對專業(yè)知識以及標注規(guī)范的要求較高, 標注成本高昂, 現(xiàn)存的醫(yī)療數(shù)據(jù)集很稀缺, 這對實體識別任務(wù)帶來了很大的挑戰(zhàn). 除此之外, 在數(shù)據(jù)層面醫(yī)療命名實體識別任務(wù)還面臨著冷啟動、噪聲、數(shù)據(jù)不平衡等問題. (2)可遷性差. 不同的醫(yī)療系統(tǒng), 不同的醫(yī)院,不同的醫(yī)藥廠商對醫(yī)療文本的描述不同, 并且具有不同的規(guī)范, 這會導(dǎo)致醫(yī)療命名實體識別技術(shù)的可遷移性差. (3)可解釋性弱. 深度學(xué)習(xí)端到端的過程會導(dǎo)致模型的可解釋性弱, 而醫(yī)療領(lǐng)域是一個極度嚴謹?shù)念I(lǐng)域, 使用完全的黑箱算法是不可取的.
基于規(guī)則的醫(yī)療命名實體識別方法依賴于手工制定的規(guī)則, 即利用領(lǐng)域?qū)<抑贫ㄒ?guī)則模板結(jié)合醫(yī)學(xué)詞典通過模式匹配的方法識別出醫(yī)療實體. 規(guī)則一般包括句法、語法以及醫(yī)療領(lǐng)域知識. 例如, “胰腺癌多發(fā)于成年女性, 癥狀通常為腹部疼痛”, 現(xiàn)有規(guī)則: (1) [身體部位+癌/炎/瘤/…]代表一種疾病. (2) [身體部位+疼/痛/疼痛]代表癥狀, 通過模式匹配能夠識別出疾病實體“胰腺癌”和癥狀實體“腹部疼痛”. 早期, 有學(xué)者研究如何設(shè)計處理醫(yī)療文本信息的系統(tǒng)以實現(xiàn)信息提取、構(gòu)建知識庫、信息編碼等功能, 這些系統(tǒng)一般是基于模式匹配結(jié)合領(lǐng)域知識來設(shè)計的. Canfield等人[2]通過分析臨床報告中的語義和句法結(jié)構(gòu), 結(jié)合醫(yī)學(xué)詞典構(gòu)建醫(yī)療信息處理模型. Sager等人[3]設(shè)計了一種文本信息提取系統(tǒng)并將其運用在醫(yī)療領(lǐng)用, 該系統(tǒng)通過分析醫(yī)學(xué)文本特有的結(jié)構(gòu)以及語法規(guī)則, 可提取醫(yī)學(xué)報告、臨床記錄中的關(guān)鍵信息. Friedman等人[4]提出了一個通用的醫(yī)療文本信息提取系統(tǒng)MEDLEE, 利用領(lǐng)域知識庫和專家總結(jié)的規(guī)則實現(xiàn)其功能, 具有很好兼容性.Zingmond等人[5]通過分析統(tǒng)計醫(yī)學(xué)語料中的規(guī)則結(jié)合語言處理工具構(gòu)建了一個文本處理器, 用于處理醫(yī)學(xué)文本報告. 這些早期的醫(yī)療文本信息處理系統(tǒng)為基于規(guī)則的醫(yī)療命名實體識別提供了基礎(chǔ). 特定的領(lǐng)域具有特有的語言規(guī)則和詞典, 當專家能夠較為完備地總結(jié)出目標領(lǐng)域的規(guī)則時, 基于規(guī)則方法在領(lǐng)域命名實體識別將會有很好的表現(xiàn). 李楠等人[6]通過分析化學(xué)文獻中化學(xué)物質(zhì)命名的構(gòu)詞規(guī)律, 總結(jié)化學(xué)領(lǐng)域的啟發(fā)式規(guī)則, 有效提高了該領(lǐng)域?qū)嶓w識別的準確率.
對于基于機器學(xué)習(xí)的方法, 命名實體識別可被形式化為實體標簽分類任務(wù)或文本序列標注任務(wù). 專家應(yīng)用醫(yī)學(xué)領(lǐng)域知識與特征工程對樣本數(shù)據(jù)進行表征,利用大量標注好的醫(yī)療數(shù)據(jù)作為訓(xùn)練樣本, 然后應(yīng)用機器學(xué)習(xí)算法訓(xùn)練模型使其對數(shù)據(jù)的模式進行學(xué)習(xí),即可使用訓(xùn)練好的模型實現(xiàn)標簽分類或序列標注任務(wù):對于實體標簽分類任務(wù), 常用的模型有支持向量機(support vector machine, SVM)[7]、決策樹(decision tree)[8]等, 將醫(yī)療語料中每個字符的標簽當做一個類別進行文本分類; 條件隨機場(condition random gield,CRF)[9]、隱馬爾可夫模型(hidden Markov models,HMM)[10]等模型是文本序列標注任務(wù)常用的模型, 通常將命名實體識別任務(wù)理解為一個最大概率序列問題,即根據(jù)觀測序列(一般指字符)預(yù)測隱藏序列(一般指字符的標簽). Li等人[11]使用基于隱馬爾可夫模型的方法訓(xùn)練醫(yī)療臨床筆記, 識別臨床筆記中的各個模塊, 該方法的準確率到達了93%, 明顯優(yōu)于基線. Zhou等人[12]為了高效挖掘醫(yī)學(xué)文本中的信息, 提出了一個識別生物醫(yī)學(xué)實體的系統(tǒng), 該系統(tǒng)通過基于HMM的命名實體識別器集成如構(gòu)詞模式、詞性、語義觸發(fā)等針對生物醫(yī)學(xué)領(lǐng)域的特征, 評價顯示, 該系統(tǒng)能夠有效處理實體嵌套問題, 在GENIA語料庫中的F1值可到達90%.Lee等人[13]使用基于SVM的將方法命名實體識別分為識別和語義分類兩個子任務(wù), 可以解決實體類別過多并且分布不均勻?qū)ψR別效果造成的影響. Settles 等人[14]使用條件隨機場(CRF)結(jié)合豐富的特征集實現(xiàn)在生物醫(yī)學(xué)領(lǐng)域的命名實體識別. 在中文領(lǐng)域, 葉楓等人[15]提出使用基于CRF的方法識別電子病歷的實體,通過構(gòu)建醫(yī)學(xué)數(shù)據(jù)的特征模板用小規(guī)模的語料庫訓(xùn)練模型, 獲得了較為理想的F1值. 燕楊等人[16]提出了一種基于級聯(lián)條件隨機場模型, 識別電子病歷中的復(fù)雜疾病和臨床癥狀的嵌套實體, 與傳統(tǒng)的CRF相比,F1值提高了7%.
在領(lǐng)域詞典足夠完善的情況下, 當制定的規(guī)則能夠?qū)δ繕祟I(lǐng)域文本的特征精準描述時, 基于規(guī)則的方法將會有比其他方法更好的表現(xiàn). 但是, 制定領(lǐng)域規(guī)則模板和維護領(lǐng)域詞典耗時耗力, 并且對專業(yè)知識的要求很高, 不同的領(lǐng)域具有不同的規(guī)則與詞典, 導(dǎo)致該方法的可遷移性較差. 基于機器學(xué)習(xí)的方法取得了很大的進展, 在一定程度上改善了上述問題, 降低了對醫(yī)學(xué)領(lǐng)域知識的要求, 但基于機器學(xué)習(xí)的方法需要大量人工標記的數(shù)據(jù)集對模型參數(shù)進行訓(xùn)練, 而現(xiàn)有可用的大規(guī)模醫(yī)療數(shù)據(jù)集比較稀缺. 并且, 基于機器學(xué)習(xí)的方法需要專家手動選擇對命名實體識別任務(wù)有影響的各種特征, 但特征提取通常是困難且昂貴的.
深度學(xué)習(xí)[17]運用深層非線性的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)能夠?qū)W習(xí)得到更復(fù)雜、抽象的特征, 以實現(xiàn)對數(shù)據(jù)更本質(zhì)地表征. 與傳統(tǒng)的機器學(xué)習(xí)不同, 深度學(xué)習(xí)不依靠人工識別特征, 可以自動提取特征. 基于深度學(xué)習(xí)的方法在命名實體識別任務(wù)上取得了不錯的效果, 受到了研究人員的廣泛關(guān)注.
基于深度學(xué)習(xí)的命名實體識別任務(wù)的網(wǎng)絡(luò)構(gòu)架一般分為3類: 卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks, CNN)[18], 循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural networks, RNN)[19]以及基于自注意機制的Transformer[20].曹依依等人[21]提出用基于CNNs的模型處理醫(yī)療領(lǐng)域的NER, 作者采用迭代擴張卷積作為編碼器提取特征,降低了模型訓(xùn)練難度并實現(xiàn)了并行運算. Liu等人[22]采用循環(huán)神經(jīng)網(wǎng)絡(luò)的變體LSTM建模, 用基于BiLSTMCRF的模型識別醫(yī)學(xué)文本中的健康信息和臨床實體,該方法避免了繁瑣的特征工程, 在i2b2數(shù)據(jù)集上提取醫(yī)學(xué)實體, F1值達到了94.37%, 證明了該模型的有效性. 李博等人[23]考慮使用基于Transformer的模型在自建數(shù)據(jù)集上識別醫(yī)療實體, 有效提高了識別準確率和改善了對較長語句的處理性能. 表1總結(jié)了部分比較有代表性的基于深度學(xué)習(xí)方法的論文.
表1 基于深度學(xué)習(xí)方法的典型論文
構(gòu)建命名實體識別模型時, 需要把不可計算的自然語言文本進行向量化表示. 傳統(tǒng)的獨熱碼編碼根據(jù)每個字或詞在詞匯表中的位置信息, 為其分配一個長度為詞匯表大小的向量, 實現(xiàn)文本編碼. 獨熱碼編碼方法簡單、便于實現(xiàn), 但存在一些本質(zhì)的缺點: (1)將各個字或詞都視為是獨立的, 無法體現(xiàn)某些字詞之間存在的潛在聯(lián)系, 比如“肺”和“肝”都為身體器官, 但用獨熱碼編碼方法會忽略它們之間的相似性. (2)向量維度為字典大小, 且只有一位是有意義的, 具有離散稀疏性.(3)無法考慮詞序信息. (4)有些詞不在詞匯表中, 無法對其編碼. 詞嵌入方法在一定程度上改善了以上問題,它將詞用一個定長的低維實數(shù)向量表示以實現(xiàn)文本向量化, 預(yù)訓(xùn)練詞向量模型是實現(xiàn)詞嵌入較為主流的方法. Word2Vec[33]是一種預(yù)訓(xùn)練詞向量的工具, 對詞之間的相似性能夠較好地“刻畫”. 一個詞的上下文信息能夠很大程度地決定該詞的語義信息, Word2Vec能夠捕獲目標詞的上下文信息并融入該詞的詞向量中, 包括通過上下文中的詞預(yù)測中心詞的(continuous bag-ofwords model, CBOW)[34]和通過中心詞預(yù)測上下文中的詞的跳字模型(continuous skip-gram model, Skipgram)兩種語言模型. GloVe[35]是對Word2Vec詞嵌入方法的擴展, 采用指定大小的窗口構(gòu)建自然語言文本中詞的共現(xiàn)矩陣, 把全局詞頻統(tǒng)計與Word2Vec的基于上下文的學(xué)習(xí)結(jié)合起來, 以實現(xiàn)將全局語義信息考慮到詞向量中. BERT[36]自提出后就受到了廣泛的關(guān)注, 該模型基于深層雙向Transformer結(jié)構(gòu)能動態(tài)地生成詞向量, 并且使詞向量中蘊含了更多的語義、語法知識, 有效解決了一詞多義問題, 在眾多自然語言處理任務(wù)上都取得了令人驚嘆的效果.
基于深度學(xué)習(xí)的醫(yī)療命名實體識別模型如圖2所示, 包括輸入層、嵌入層、編碼層、解碼層和輸出層.嵌入層的語言模型可從輸入的醫(yī)療文本中學(xué)習(xí)到語義、語法知識并將其向量化表示, 主要有基于詞的表示、基于字的表示以及基于字信息和詞信息的混合表示; 編碼層使用CNN、RNN、Transformer等特征提取器對嵌入層傳入的信息進行特征提取并編碼; 解碼層利用解碼器對編碼層的輸出結(jié)果進行標簽預(yù)測, 最終輸出最佳標簽序列. 有不少研究基于3種特征提取器,加以改進, 實現(xiàn)更高的識別性能.
圖2 命名實體識別模型框架
標注命名實體識別的數(shù)據(jù)集需要標注出實體邊界和類別, 常用方案有: (1) BIO. 該方法用符號B和I標記實體邊界, B表示一個命名實體的開始位置, I代表處于命名實體內(nèi)部的位置, 用符號O標記非實體或非目標類別的實體. (2) BIOES. 相較于前一種方法, 該方法對實體邊界的描述更詳加細, 用符號E指一個命名實體的結(jié)束邊界, 符號S用來表示僅包含一個字的實體名稱. 對于NER任務(wù), 有基于字級別和基于詞級別兩種標注粒度, 圖3是一個基于字符的BIO標注示例,通常用[B/I/O-實體類別]格式對一個字標注.
圖3 BIO標注示例
基于CNNs的醫(yī)療命名實體識別模型的一般結(jié)構(gòu)如圖4所示, 嵌入層將輸入的一維文本序列轉(zhuǎn)化為二維向量并將其傳遞給卷積層, 通過指定數(shù)量的卷積核在輸入的向量矩陣上進行窗口移動來提取文本中的特征, 得到的特征向量通過池化層的平均池化或極大池化操作后被傳遞給CRF層, 最后輸出對應(yīng)的標簽序列.Collobert等人[24]開創(chuàng)性地使用基于CNNs的模型解決NER問題. 在此基礎(chǔ)上, Gui等人[26]將詞典信息融合到基于CNNs的模型, 處理中文NER任務(wù), 該模型實現(xiàn)了并行處理, 并且應(yīng)用新穎的反饋機制來解決詞之間的歧義問題, 表現(xiàn)出較好的性能. 陶源等人[25]則運用門控卷積過濾卷積層的輸出, 有效解決了長距離依賴問題.
圖4 基于CNNs的命名實體識別模型結(jié)構(gòu)
然而, 基于CNN的模型會存在以下問題: (1)對于傳統(tǒng)的CNN而言, 由于受到感受野的限制, 卷積后得到的只是局部特征, 無法捕獲遠距離的特征, 對于較長的醫(yī)療文本序列來說效果不佳. 越深的卷積層可捕獲越遠距離的特征, 通過增加CNN的神經(jīng)網(wǎng)絡(luò)層數(shù)可在一定程度上解決上述問題, 但這會給訓(xùn)練模型帶來很大的難度. Strubell等人[37]提出用膨脹卷積增加序列覆蓋距離以得到更多的上下文信息, 該方法在命名實體識別任務(wù)中能兼顧運算速度和長序列的特征提取. 主要原理為: 卷積核窗口在輸入序列的矩陣上以指定大小的間隔跳躍滑動, 以相同大小的卷積核獲得比傳統(tǒng)卷積核更大的感受野. 作者還提出重復(fù)應(yīng)用相同的卷積塊實現(xiàn)參數(shù)共享, 這一迭代過程可以防止過擬合現(xiàn)象. (2)經(jīng)過池化操作后得到的特征向量會丟失位置信息, 但位置信息對文本序列的命名實體識別來說卻很關(guān)鍵.
RNN能夠?qū)W習(xí)到序列數(shù)據(jù)中的上下文語義與時序信息, 通常用來處理線性序列數(shù)據(jù). 圖5展示了循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu), 循環(huán)節(jié)點共享權(quán)重矩陣W并按時序鏈式連接, 某個時刻的節(jié)點輸出依賴于當前時刻的輸入(即當前節(jié)點輸入的詞向量 xt)和上一時刻的輸出(即上一節(jié)點的隱藏狀態(tài)向量ht-1). RNN的結(jié)構(gòu)使其能夠處理不同長度的序列文本, 但序列過長會因梯度彌散使模型的輸出被近距離的信息主導(dǎo), 難以學(xué)習(xí)到遠距離的依賴關(guān)系. 而長短期記憶網(wǎng)絡(luò)(long short-term memory, LSTM)[38]可以選擇性地“記憶”過去的關(guān)鍵信息以實現(xiàn)長期記憶, 有效改善梯度彌散現(xiàn)象, 使命名實體識別任務(wù)的效果顯著提升. Huang等人[27]開創(chuàng)性地使用BiLSTM-CRF模型. 模型解決NER問題, 在此基礎(chǔ)上, Dong等人[28]采用CNN捕獲更細粒度的字符級特征, 提高了對特殊字符的識別準確率; Li等人[29]在基礎(chǔ)模型上引入一個雙向LSTM子分類模型, 在一定程度上解決了醫(yī)學(xué)實體嵌套的問題; 下文將詳細介紹BiLSTM-CRF模型.
圖5 循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
LSTM的一個循環(huán)單元的模型結(jié)構(gòu)如圖6所示,包含4個相互作用神經(jīng)網(wǎng)絡(luò)層, 主要通過門控機制對單元狀態(tài)C 中的信息更新以達到控制信息傳遞、避免長距離依賴問題的目的. 其中, 遺忘門利用門控函數(shù)判斷上一節(jié)點的單元狀態(tài) ct-1對當前單元狀態(tài)ct的重要性, 對ct-1中 的信息部分“忘記”并將其融入ct狀態(tài)向量中; 輸入門對當前輸入信息 xt進行選擇性“記憶”并將其選擇性地加ct中; 輸出門決定當前節(jié)點的單元狀態(tài)信息ct要輸出多少給當前隱藏狀態(tài)ht. LSTM用當前輸入xt和上一時刻的隱藏狀態(tài)ht-1作為輸入訓(xùn)練各個“門”的控制信號, 對隱藏狀態(tài) ht更新并得到當前輸出yt, 其計算公式如式(1)-式(3), 其中, W和b為需要學(xué)習(xí)的參數(shù):
圖6 LSTM循環(huán)單元
條件隨機場是在給定一組輸入隨機變量的條件下得到另一組輸出隨機變量的條件概率分布模型, 常用于處理序列標注任務(wù). 對于命名實體識別, CRF可向編碼層輸出的標簽序列中添加一些約束以條件保證輸出結(jié)果的合理性, 例如: (1)用B表示一個實體名稱的開始邊界, “左下肢”中“左”的標簽應(yīng)該是“B-body”而不能是“I-body”. (2)同一個實體對應(yīng)標簽的類別是相同的,“左下肢”的標簽為“B-body I-body I-body”, 類別都是“body”, 而不能是“B-body I-symptom I-body”或其他.
CRF通過學(xué)習(xí)到的特征來表征各標簽之間的約束關(guān)系, 使用狀態(tài)特征函數(shù)和轉(zhuǎn)移特征函數(shù)對標簽序列進行評估. 假設(shè)給定輸入序列:
X=(x1,x2,···,xn)
對應(yīng)的輸出序列為:
Y=(y1,y2,···,yn)
定義得分函數(shù)為:
其中, F (X,Y) 表示輸入文本序列X 對應(yīng)的實體標簽序列為 Y的概率分數(shù), Mi,yi代表第i個字符被標記為標簽yi的概率, 指由當前文本自身特征所對應(yīng)的標簽的得分;N是轉(zhuǎn)移矩陣, Nyi,yi+1表 示標簽yi的下一個標簽是yi+1的概率, 即上下文、外部字典及規(guī)則等特征對當前實體標簽的影響. 求出最大的概率分數(shù), 即可得到當前最佳的輸出標簽序列.
醫(yī)療文本含有大量的專業(yè)術(shù)語和專有名詞等特殊實體, 需要依賴上下文信息才能準確提取這些實體,LSTM網(wǎng)絡(luò)能夠充分考慮上下文語義信息以及長距離依賴問題. 為了增強循環(huán)神經(jīng)網(wǎng)絡(luò)對下文信息的提取,可以考慮添加一層從序列末尾開始處理的逆序LSTM.條件隨機場作為序列標注算法, 能有保證輸出序列的具有一定的有效性. BiLSTM-CRF模型其結(jié)構(gòu)如圖7所示, 該模型通過兩層LSTM對嵌入層中的序列信息進行編碼, 并將這兩層的編碼結(jié)果連接在一起輸入CRF層, 解碼輸出對應(yīng)的最佳標簽序列.
圖7 BiLSTM-CRF命名實體識別模型
Transformer[20]是一種基于注意力機制, 旨在解決序列到序列的網(wǎng)絡(luò)結(jié)構(gòu). 由前文可知, 傳統(tǒng)的基于CNNs的模型受感受野的限制無法捕獲遠距離的特征; 基于RNNs的模型雖然能較好地解決長期依賴的問題, 但模型結(jié)構(gòu)使其無法實現(xiàn)并行運算, 運行速率較慢. Transformer可以避免以上模型的缺點, 該網(wǎng)絡(luò)結(jié)構(gòu)沒有循環(huán)結(jié)構(gòu), 能夠?qū)π蛄兄械膯卧~或字符并行處理, 借助注意力機制對序列中所有字或詞之間的關(guān)系進行建模,可以解決長期依賴的問題. 基于Transformer的模型在醫(yī)療命名實體任務(wù)上獲得了不錯的效果, 其模型如圖8所示, 將預(yù)訓(xùn)練的字向量結(jié)合位置編碼作為Transformer的輸入, 提取文本序列的特征信息, 然后通過CRF預(yù)測出最佳標簽序列并輸出.
圖8 基于Transformer的命名實體識別模型結(jié)構(gòu)
雖然Transformer在命名實體識別任務(wù)上取得了非常不錯的效果, 但是該模型也有一定的局限性: (1)簡單地拋棄RNN和CNN使Transformer無法捕獲文本序列的局部特征. (2)位置編碼并不能改變Transformer無法捕獲位置信息這一固有的結(jié)構(gòu)缺陷.
近年來, 提升命名實體識別模型的性能引起了廣泛關(guān)注, 具有一定的現(xiàn)實意義. 本小節(jié)總結(jié)了醫(yī)療領(lǐng)域命名實體識別模型較為流行的改進方法, 主要有: 針對嵌入層特征向量的改進, 融合詞典信息, 拼音、偏旁特征以豐富嵌入層的特征向量; 為解決數(shù)據(jù)匱乏問題, 引入遷移學(xué)習(xí)的方法; 通過引入注意力機制可以提高模型的計算能力并且能有效解決長距離依賴問題; 針對復(fù)雜命名實體難以被識別的問題, 從不同角度對模型進行改進.
通常, 精心構(gòu)造的底層特征向量可以顯著提升模型的識別效果. 如引入詞典信息, 可以有效避免分詞錯誤. 再如, 通過融合拼音特征、偏旁特征來豐富嵌入層的詞向量, 能夠提高對“多義詞”“象形字”的識別準確率. 對嵌入層的特征向量進行改進, 引入豐富的特征,是一個提升模型效果的可行方法.
在特征向量中融合詞信息可以避免中文分詞錯誤,命名實體識別通常采用基于字符的方法, 但這種方法忽略了文本序列中很多與詞相關(guān)的語義信息, 容易帶來歧義. 因此, 很多NER模型將詞典特征融合到輸入的字符序列中, 既可避免分詞錯帶來的影響, 還可把潛在的詞信息融入到特征向量中, 從而提高對實體邊界識別的準確性. Zhang等人[39]首次提出使用晶格結(jié)構(gòu)(lattice)獲取文本序列中潛在的詞信息, 有效利用序列中與詞相關(guān)的語義信息還避免了分詞錯誤. 在醫(yī)療領(lǐng)域, 張笑天[40]提出了一種基于Lattice-LSTM的醫(yī)療文本命名實體識別模型, 并在嵌入層使用大量醫(yī)學(xué)字典訓(xùn)練詞向量模型, 整體提升了命名實體識別效果.
醫(yī)療文本中有許多外文音譯而來的醫(yī)學(xué)名詞, 一詞多“譯”給醫(yī)療命名實體識別帶來了一定的難度, 同音異字是音譯名詞的常見現(xiàn)象; 大部分漢字的偏旁含有一定的語義信息, 如“腳”“腿”中的“月”字旁代表身體部位, “痛”“瘤”中的“疒”字旁代表與疾病相關(guān)的癥狀.根據(jù)這些中文醫(yī)療文本的特點, 可對醫(yī)療命名實體識別的詞嵌入模型加以改進: 第一, 增加拼音特征, 便于對音譯詞的識別; 第二, 增加偏旁特征, 從而增強漢字本身的語義. Dong等人[28]將來自字典的偏旁級特征結(jié)合到字符級向量中, 采用基于LSTM的模型處理中文領(lǐng)域的NER任務(wù), 在MSRA數(shù)據(jù)集上, F1值取得了90.95%優(yōu)秀表現(xiàn). Sun等人[41]提出一種的名為Chinese-BERT模型, 該模型能夠利用上下文特征和漢字本身的語義特征, 不僅將基于漢字字形的特征融入到特征向量中, 還考慮了基于漢字拼音的特征, 通過對比實驗,該模型表現(xiàn)出其明顯的性能優(yōu)勢. 在醫(yī)療領(lǐng)域, Yin等人[42]使用CNN來提取漢字的偏旁特征, 結(jié)合字符級嵌入的模型識別醫(yī)療文本中的實體名稱, 有效利用了醫(yī)療文本中漢字本身隱含的語義信息. 圖9展示一種構(gòu)建在字符向量中融合拼音、部首特征的方法, 新的特征向量由字符向量C與特征向量W的加和構(gòu)成.
圖9 融合多特征的特征向量
醫(yī)療文本數(shù)據(jù)中較長語句較多, 當處理的文本序列過長時, 傳統(tǒng)的基于CNNs的模型受感受野的限制無法捕獲遠距離的特征; 而基于RNNs的模型雖然能較好地解決長期依賴的問題, 但模型結(jié)構(gòu)使其無法實現(xiàn)并行運算, 運行速率較慢. 通過引入注意力機制可以挺高模型的計算能力并且能有效解決長距離依賴問題.
注意力機制(attention mechanism)[43]是一種模擬人類視覺的信號處理機制, 能夠?qū)⒂邢薜淖⒁饬x擇性地分配給需要關(guān)注的部分. 在命名實體識別任務(wù)中,融入注意力機制能夠使NER模型捕獲到更為關(guān)鍵的句法和高層語義特征. 醫(yī)療文本中有很多超長語句, 合理利用上下文信息對正確識別出目標實體具有很大的意義, 雖然基于RNNs模型可以有效利用上下文信息,但它無法體現(xiàn)上下文信息與當前信息的相關(guān)程度. 引入注意力機制根據(jù)各個字詞對正在識別的目標實體的重要程度, 分配相應(yīng)大小的關(guān)注程度, 從而優(yōu)化資源配置, 提高識別效果. 例如“門診以口唇皰疹、低燒收入我科, 考慮手足口”“門診、收入我科”等對識別出疾病實體“手足口”作用不大, 而“口唇皰疹”“低燒”對識別出實體“手足口”卻起著很大的作用, 因此注意力機制會把更多的注意力資源分配給“口唇皰疹”和“發(fā)燒”.
Luo等人[44]在命名實體識別模型中引入注意力機制, 用于生物醫(yī)學(xué)領(lǐng)域的實體識別, 該模型以很少的特征工程獲得了比其他最先進的方法更好的表現(xiàn), 在CHEMDNER和CDR語料庫上的F1值達到91.14%和92.57%. 單義棟等人[45]從軍事領(lǐng)域的文本中識別實體, 通過引入注意力機制和融合詞向量的方法提供對實體識別任務(wù)更為關(guān)鍵的特征, 整體提升了模型的性能. 融合注意力機制在命名實體識別任務(wù)中獲得了不錯的效果, 成為了開放領(lǐng)域命名實體識別最好的模型之一[46-49].
醫(yī)療命名實體識別離不開醫(yī)療數(shù)據(jù)集的支撐, 標注好的大規(guī)模數(shù)據(jù)集十分稀缺, 并且由于醫(yī)療領(lǐng)域的特殊性, 很多醫(yī)療領(lǐng)域的數(shù)據(jù)都涉及隱私問題. 數(shù)據(jù)匱乏使得命名實體模型無法對特征進行準確的表達, 識別效果不好, 針對醫(yī)療數(shù)據(jù)匱乏的問題, 融合遷移學(xué)習(xí)的方法被廣泛使用.
遷移學(xué)習(xí)[50]指將從“源”數(shù)據(jù)集中學(xué)到的知識應(yīng)用在“目標”任務(wù)中, 即利用源域中的標注數(shù)據(jù)或知識結(jié)構(gòu), 通過微調(diào)模型等方法, 完成或改進目標任務(wù)的學(xué)習(xí)效果. 訓(xùn)練醫(yī)療領(lǐng)域的NER模型需要大規(guī)模標注好的醫(yī)療數(shù)據(jù)集, 但醫(yī)療數(shù)據(jù)具有一定的特殊性, 并且需要有一定專業(yè)背景的人來標注, 導(dǎo)致現(xiàn)有的可訓(xùn)練數(shù)據(jù)集很少, 融合遷移學(xué)習(xí)可有效解決醫(yī)療命名實體識別中數(shù)據(jù)匱乏的問題[51]. Giorgi等人[52]使用SSC語料庫(大規(guī)模數(shù)據(jù)集, 含有噪聲)代替GSC語料庫(手工標記的數(shù)據(jù)集, 高度可靠)訓(xùn)練生物醫(yī)學(xué)領(lǐng)域的NER模型, 通過SSC到GSC的遷移, 既可以利用大規(guī)模SSC數(shù)據(jù)集訓(xùn)練模型, 又可以利用GSC數(shù)據(jù)集對模型進行優(yōu)化以減少噪聲. Wang等人[53]提出一種融合遷移學(xué)習(xí)的NER模型, 該模型引入標簽感知機制, 實現(xiàn)了醫(yī)療NER模型的特征和參數(shù)在不同專業(yè)間遷移.
由于醫(yī)療文本中醫(yī)學(xué)名詞構(gòu)詞復(fù)雜, 復(fù)雜命名實體在醫(yī)療文本中占比很大, 如, 據(jù)統(tǒng)計生物醫(yī)學(xué)數(shù)據(jù)集GENIA中含有嵌套實體的語句占到了30%, 因此對于醫(yī)療命名實體識別而言, 復(fù)雜命名實體識別的問題不可忽視.
嵌套實體. 傳統(tǒng)模型在識別命名實體時, 每個字符對應(yīng)一個標簽, 無法解決嵌套實體一個字符對應(yīng)可能對于多個標簽的問題. 對于嵌套實體而言, 它的構(gòu)成復(fù)雜多變, 無法找到一個統(tǒng)一的規(guī)則對它進行“刻畫”, 一般需對模型加以改進提高識別準確率. 主流的處理方法包括: 多層序列標注法, 增加模型編碼器和解碼器的層數(shù)將多個標簽分配給一個字符, Ju等人[54]提出一種動態(tài)層疊式模型, 通過堆疊多個Flat NER層, 從內(nèi)層到外層識別命名實體, 每當該模型識別出命名實體, 就會在當前基礎(chǔ)上堆疊一個新的Flat NER層以識別更外層的命名實體, 直到?jīng)]有更外層的命名實體被識別出來為止. 但是, 由于該模型識別內(nèi)層實體時無法考慮外層實體信息, 會在一定程度上造成級聯(lián)錯誤; 基于區(qū)域的識別方法, 抽取序列中所有可能存在實體的子序列區(qū)域來識別出所有實體, 該方法可以有效避免上述方法級聯(lián)錯誤. Sohrab等人[55]提出一種基于區(qū)域的方法,將序列中所有可能存在實體的區(qū)域進行編碼, 然后通過一個分類器判斷該區(qū)域是否是一個實體. 然而, 這種方法會判斷大量的非實體區(qū)域, 帶來較高的計算成本.基于邊界感知的方法, 這種方法綜合考慮了上述兩種方法的優(yōu)劣之處, 用序列標注的方法提取到命名實體的位置, 用基于區(qū)域的方法確定實體所屬的類型, 圖10以“甲狀腺癌”為例子概述了這種方法的模型, 首先提取實體邊界, 將“B”和“E”配對并進行實體區(qū)域標記, 然后對標記區(qū)域進行實體類別判斷.
圖10 基于邊界感知的方法
非連續(xù)實體. 醫(yī)療文本序列中有很多非連續(xù)實體的表達, 多個間隔的部分構(gòu)成非連續(xù)實體, 主要包括以下處理方法: 數(shù)據(jù)標注層面[56]. 擴展傳統(tǒng)的BIO標記,添加必要的標簽以滿足非連續(xù)實體的標注需求. 如:BH代表非連續(xù)實體中首個部分的開始, BI代表非連續(xù)實體中首個部分的內(nèi)部, BD代表中間部分的開始,BI代表中間部分的內(nèi)部. 針對語料句子層面[57], 判斷句子由哪些非連續(xù)命名實體的部分構(gòu)成. 使用超圖的方式表達語句中所有非連續(xù)部分的組合, 通過解碼得到所識別到的實體; 基于轉(zhuǎn)移的方法[58]. 預(yù)先設(shè)定好動作, 采用堆棧的技術(shù)對非連續(xù)命名實體的組成部分進行處理.
正確識別出一個醫(yī)療命名實體, 既要正確識別出該實體的邊界, 也要正確識別出其對應(yīng)的類別. 醫(yī)療命名實體識別通常采用精確率(Precision)、召回率(Recall)和F1值(F1-Measure)對模型進行評估. 可通過如表2所示的混淆矩陣來理解, Tp代表模型預(yù)測為命名實體且預(yù)測正確的個數(shù), Fp代表模型將非實體識別為命名實體的個數(shù), Fn代表模型將命名實體識別為非實體的個數(shù), Tn代表模型預(yù)測為非實體且預(yù)測正確的個數(shù).
表2 混淆矩陣
精確率P, 指所有被模型識別為命名實體的樣本中實際為命名實體的概率, 表達式為:
召回率R, 指模型所有預(yù)測正確的結(jié)果中命名實體所占的比例, 表達式為:
當樣本分布不均衡時, 僅考慮精確率或者召回率是不全面的, 由式(5)和式(6)可知它們是相互矛盾的.F1值是命名實體識別的主要指標, 綜合了上述兩個評價指標, 表達式為:
本文對醫(yī)療命名實體識別任務(wù)進行研究, 主要做了以下工作: (1)分析了命名實體識別對醫(yī)學(xué)研究的重要意義以及其特有的難點; (2)綜述了傳統(tǒng)的方法并詳細歸納了基于深度學(xué)習(xí)的模型; (3)介紹了當下較為流行的醫(yī)療命名實體識別模型改進方法; (4)總結(jié)了常用數(shù)據(jù)集和評價指標.
結(jié)合醫(yī)療名實體識別任務(wù)的研究現(xiàn)狀和趨勢, 對今后的研究工作提出以下幾點建議: 一方面, 就醫(yī)療領(lǐng)域的數(shù)據(jù)匱乏現(xiàn)狀, 可對如何采用小規(guī)模的數(shù)據(jù)訓(xùn)練模型這一問題更深入地研究; 另一方面, 探索更有效的命名實體識別模型, 比如將圖神經(jīng)網(wǎng)絡(luò)[59]、遷移學(xué)習(xí)等技術(shù)與現(xiàn)有的命名實體識別模型融合. 最后, 應(yīng)注重命名實體識別在實際應(yīng)用中的泛化能力, “AI+醫(yī)療”是大數(shù)據(jù)時代的一個探索性研究熱點, 醫(yī)療知識圖譜揭示了醫(yī)學(xué)實體之間的邏輯關(guān)聯(lián), 智能問答系統(tǒng)為大眾提供了科普性知識, 臨床決策系統(tǒng)的普及緩解了醫(yī)務(wù)人員的工作壓力, 這些下游應(yīng)用都離不開結(jié)構(gòu)化數(shù)據(jù)的支持, 命名實體識別模型應(yīng)適應(yīng)于不同的應(yīng)用場景,并且能夠與其他技術(shù)模塊高效結(jié)合.