祝錫永,吳 煬,劉 崇
(浙江理工大學 經濟管理學院,杭州 310018)
隨著醫療百科、醫療健康知識問答等平臺的發展以及醫療信息管理系統、電子病歷檔案在醫療單位中的廣泛應用,涌現出大量、多源、冗余并且內容分散的網絡醫療數據.針對這些的海量醫療信息中的數據,如何高效識別、整合其中的知識實體對搭建醫療知識圖譜、提供精準的醫療知識問答和進行醫療知識推理等具有重要的研究意義.由于大部分的醫療數據為非結構化數據,這類數據的組織結構雖然能比較方便地表達一些醫療事件和概念,但在醫療信息統計、知識整合與知識圖譜的構建等方面帶來很大不便,因此挖掘和抽取其中的醫療信息成為一項重要任務.命名實體識別(Name Entity Recognition,NER)是一項從給定的一段文本中抽取出諸如人名、物名、機構名等實體的基礎技術,是挖掘和抽取非結構化數據中信息的首要步驟.
醫療領域的中文命名實體識別不同于開放領域的中文命名實體識別,文本中的實體單元不再是人名、地名等,而是諸如疾病名、臨床癥狀、藥名等實體.例如,“核磁共振結果顯示患者脊柱內有膠質瘤”中“膠質瘤”就是疾病名稱;“患者逐漸肌肉萎縮”中“肌肉萎縮”就是臨床癥狀;“靜脈注射硝苯吡啶控制”中“硝苯吡啶”就是藥品名稱.這些疾病名稱、臨床癥狀以及藥品名稱實體反映了患者的疾病情況以及治療手段.醫療領域的中文命名實體識別最主要的任務就是識別文本中的專業術語,為醫療領域信息的抽取、檢索以及構建問答系統等提供支持.但目前中文醫療標注語料數據缺乏,并且中文中詞與詞間沒有明顯的邊界,相較于英文命名實體識別來說更加困難,為應對該情況,本文提出一種面向醫療領域的高效中文命名實體識別模型:基于協同訓練半監督方法的雙詞向量雙向長短期記憶神經網絡算法(Co-Training Double word embedding conditioned Bi-LSTM,CTD-BLSTM).
早期的命名實體識別主要是針對開放領域,但近年來,越來越多的學者關注到了特定領域,例如醫療領域.與開放領域的命名實體識別一樣,早期醫療實體識別也是通過領域專家和語言學家手工制定規則的方法,比如國外著名的電子病歷命名實體識別系統MedKAT(Medical Knowledge Analysis Tool)和cTAKES (Clinical Text Analysis and Knowledge Extraction System),但該類方法的構建需要掌握大量語言學知識,并且對于不規范語料處理效果也不理想,具有很大的局限性.隨后,由于標注語料的增加,醫療實體識別也漸漸開始運用傳統機器學習和詞典規則相結合方法的方法.Murugeasan等[1]提出的BCC-NER 方法在BioCreative II GM 語料庫中對基因的識別取得了較好的成果;張金龍等[2]則將篩選規則與外部上下文特征結合入CRF 中,使得模型對中文醫療機構實體體現了顯著的識別效率.除此之外,Lei JB 等[3]將中文臨床病歷作為主要研究對象,分別采用了最大熵、CRF、SVM、結構化的SVM 等4 種方法對醫療實體進行識別,其中結構化的SVM 識別效果最佳,使病程記錄和出院小結的F 值達到90%以上.
然而上述方法大多是以機器學習為基礎結合詞典或規則等構建模型,需要完成繁重的規則構建、設定特征與標注語料等預先工作.近年來,隨著深度學習的發展與具有提取自我特征的特性,出現了大量基于神經網絡的模型用于完成命名實體識別任務,神經網絡方法在命名實體識別方面表現出更強的泛化性和更低的特征工程依耐性[4],減少特征提取所需代價,有效地提高了模型對實體識別的效率.Liu 等[5]通過設計多組對照組對I2B2 數據集中英文電子病歷進行實驗,得出LSTM 模型的識別效果優于CRF 模型;Almgren 等[6]提出一種基于字符的深度Bi-LSTM的醫療實體識別模型,其F 值比經典模型高出60%;Xu 等[7]將Bi-LSTM與條件隨機場進行結合用于醫學命名實體識別,實驗結果該BLSTM-CRF 模型優于兩者單一模型.目前大多數實體識別任務均以BLSTM-CRF 模型進行,但醫療領域的中文命名實體任務復雜,醫療領域標注語料不足和中文分詞困難等都會影響模型準確率,如楊紅梅等[8]利用BLSTM-CRF 模型對中文電子病歷實體進行識別,其中出院小結的識別率偏低.
總結上述研究及難點,本文在雙向長短期記憶網絡的基礎上,通過雙詞向量擴展BLSTM 神經網絡結構,并結合協同訓練協同學習方法,最終構建出一種基于協同訓練半監督方法的雙詞向量雙向長短期記憶神經網絡算法(CTD-BLSTM),用以提高中文醫療命名實體的識別效率.
自然語言處理(NLP)中的命名實體識別是典型的文本序列標準問題,而循環神經網絡(RNN)能有效地解決序列標注任務,但處理長序列數據時可能會發生梯度消失或梯度爆炸等現象,為此在長短期記憶網絡(LSTM)中通過引入“門”限制機制解決這一問題.此外,由于在實體識別中不僅需要當前詞的上文信息,也需要下文信息,因此本文選擇在能同時包含上下文的信息[9]的雙向長短期記憶網絡(Bi-LSTM)的基礎上提出一種新的模型算法改進.Bi-LSTM 輸入層中包含2 個方向相反且相互獨立的LSTM,輸出層結果包含了2 個LSTM的結果,這種方式保證了整個Bi-LSTM是非循環的,并且使得整個網絡能兼顧上下文信息并自動提取句子特征,從而獲取更好的特征信息.
詞向量在Bi-LSTM 網絡中訓練的過程中進行不斷微調可以包含更多有用的信息,但與此同時也會逐漸丟失原本的句法與語義等特征,針對這種情況,本文參照雙詞向量卷積2E-CNN 模型[10],利用預訓練的詞向量與微調后的詞向量對神經單元結構進行擴展,提出一種雙詞向量BLSTM 神經網絡算法(Double word vector conditioned BLSTM,D-BLSTM)[11],將兩種詞向量同時作為BLSTM 網絡的輸入進行訓練,其網絡模型結構如圖1所示.

圖1 雙詞向量擴展的BLSTM 網絡模型圖(D-BLSTM)
通過預訓練的詞向量表,對語料中的單詞wt進行唯一向量化表示,將其作為輸入詞向量xt和x't的初始值進行訓練,在整個模型的訓練過程中保持預訓練詞向量xt不變,對x't不斷進行微調,每個時刻都有xt、x't和ht–1等3 個變量輸入LSTM 神經單元,其單元內輸入門、遺忘門、輸出門的計算公式見式(1)至式(3),存儲塊更新的計算公式見式(4).

為解決醫療領域標注語料稀缺的問題,在D-BLSTM中引入半監督學習方法,協同訓練(co-training)是一種非常廣泛使用且有效的半監督學習框架[12],該方法將大量未標注語料加入到少量已標注語料庫中,并反復訓練從而得到識別能力良好的模型,但必須將語料集自然分割成兩個在給定條件下相互獨立的特征集,并且由特征集訓練的兩個模型都是有效的[13],訓練步驟如下:
(1)提出兩個相互獨立特征集,并對兩者的算法模型進行構建;
(2)分別使用兩個特征集中少量已標注語料對模型進行訓練;
(3)將未標注的語料分別輸入兩個模型中進行標注預測,并對預測結果進行置信度評價;
(4)挑選若干置信度(即對未標注語料賦予正確標記的置信度)高的樣本加入到另一方模型的訓練語料庫中,用擴充后的語料庫重新對模型進行訓練;
(5)重復上述步驟(3)、(4),直至達到設定條件要求.
協同訓練半監督學習方法可以在醫療領域已標注語料不充足的情況下大大提高模型實體識別的性能.
本文在D-BLSTM 算法中引入協同訓練半監督學習方法,最終構建出一種結合協同訓練的雙詞向量BLSTM 神經網絡算法(CTD-BLSTM),其流程如圖2所示.

圖2 CTD-BLSTM 算法流程示意圖
(1)根據實體識別任務具體場景,選擇兩個獨立的特征并制定相應特征模板;
(2)將采集的文本語料進行少量標注,并依據兩套不同的特征模板整理出訓練集;
(3)用兩套語料訓練集訓練得到兩個不同的D-BLSTM模型,并分別用其對各自未標注語料進行標注;
(4)將標注的預測結果進行置信度評價,并與設定的閾值進行對比,若置信度高于閾值,則將語料加入到對方的訓練語料中,同時迭代計數加1;
(5)循環執行步驟(3),直到兩個模型對未標注語料標注結果基本一致,或用盡測試集中未標注語料,或達到預先設定的循環次數.
為驗證CTD-BLSTM 算法對醫療領域實體的識別提取效果,本文通過爬取如尋世界醫療網、健康大全網、好大夫在線網等醫療網站中的藥物信息、疾病信息以及醫患問答信息,經整理后得到上述3 種信息的有效數據分別為2665 條、7359 條和157 090 條.
由于需要將數據以基于詞典的形式進行分詞標注,實驗過程選取搜狗細胞詞庫中的“醫學詞匯大全”作為基礎詞典,并通過爬取百度百科中“藥理學”、“疾病”、“解剖學”、“傳統醫學”、“衛生保健”等幾個與醫療領域相關標簽內的詞條來進一步擴充詞典,最終對兩者進行對齊、消歧、合并等操作共得98 647 條詞條.
協同訓練半監督學習方法需建立兩個相互獨立的特征集,Chen 等[14]提取分詞、詞性等特征完成臨床命名實體識別任務,得到選取分詞特征和詞性特征作為訓練特征識別效果最佳;Peters 等[15,16]將上下文窗口的特征融入基于預訓練的BLSTM-CRF 語言模型中,提高已有模型的效果,因此本文選用上下文窗口特征與詞性特征作為兩個相互獨立的特征構建特征集.
考慮到研究主體為醫療領域文本內的中文實體,本文參考中文電子病歷詞性標注規范[17]將爬取的數據定義為“癥狀”、“部位”、“藥品”、“疾病”、“檢查”、“科室”與“治療”7 類實體,詞性標注見表1.

表1 擴展詞性標注表
在詞性特征的構建上,首先需構造詞性表D={d1,d2,d3,…,dn}(di表示一個詞性,i∈[1,n]),并構建每個詞的詞性特征向量V={v1,v2,v3,…,vn}(vi代表該詞詞性是否對應詞性表D中的di),假設某詞的詞性為nhd,則該vi的取值見式(5),計算后求得該詞的特征向量.

在設置上下文窗口特征時,為提取當前詞的前后兩個詞,將窗口大小設為5,對每個詞建立詞性特征向量以及詞特征向量,并將不存在的上文窗口詞與下文窗口詞設為空值.以“患者之前有低血糖病史,有高血壓病史啊”為例,上下文窗口處理過程見表2.注:通過刪除語句中如“嗎”、“吧”、“啊”等語氣詞以及一些數詞或狀態詞來提升運行效率.

表2 上下文窗口處理過程

表3 實體標注實例
待選定特征向量后,采用CTD-BLSTM 算法完成命名實體識別.首先通過上文構造的詞典對少量語料中實體進行O-S-B-I-E 標注,然后再經人工進行審查與修正,標注實例見表3.
待實驗語料標注完畢后,將數據中70%作為訓練集分別對基于詞性特征的CTD-BLSTM 模型和基于上下文窗口特征的CTD-BLSTM 模型進行迭代訓練,30%作為測試集對模型進行檢驗,并將模型訓練迭代次數設為40 次.實驗得到的模型性能變化如圖3和圖4所示,觀察可得兩個模型的F 值、準確率和召回率均隨迭代次數的增加呈上升趨勢,證實了CTD-BLSTM算法的有效性.

圖3 基于詞性特征的CTD-BLSTM 模型

圖4 基于上下文窗口特征的CTD-BLSTM 模型
為進一步驗證CTD-BLSTM 模型對實體的識別效果,隨機抽取數據集中5000 條數據進行標注作為模型的訓練集,并用20000 條數據對模型進行訓練.除此之外,并用5000 條數據和25000 條數據分別對BLSTM、BLSTM-CRF與D-BLSTM 模型進行訓練得到12 個對照模型組,實驗結果見表4所示.
從表4中可以得出以下結論:
(1)上下文窗口特征比于詞性特征包含更多信息,因此在實驗階段其模型識別率有顯著的提高.
(2)對比特征與規模大小相同訓練集下的模型,得出D-BLSTM 模型性能優于基礎的BLSTM 模型,證明了利用雙詞向量進行擴展的有效性.例如,對比模型7和模型11,模型的F 值從原來的88.43%提升到了90.41%,并且由于精簡了數據集,模型的性能比原來提高了25%左右,能做到快速且準確的實體識別.
(3)對比模型3、5、9、11、13,發現協同訓練方法的引入使得改進模型CTD-BLSTM 在準確率、召回率及F 值上雖略低于用25000 條數據訓練的D-BLSTM模型與BLSTM-CRF 模型,但其識別效果明顯高于經5000 條數據訓練的D-BLSTM 模型與BLSTM-CRF 模型,體現引入協同訓練半監督學習方法是有效的,并在一定程度上大大減少了語料的標注工作.

表4 實體識別模型對比測評結果(單位:%)
本文針對醫療領域的中文命名實體識別任務進行了研究.為了提高實體識別效果,在雙向長短期神經網絡的基礎上,用預訓練詞向量和微調詞向量對神經網絡結構單元進行擴展,并引入協同訓練學習方法,最終提出了CTD-BLSTM 模型.經過實驗證明,改進后的模型在準確率、F 值和召回率上均有明顯提高,是一個適用于醫療領域的中文命名實體識別模型.
本文選擇詞性特征與上下文窗口特征構建相互獨立的特征向量集對CTD-BLSTM 算法模型進行訓練,而可選的特征不僅僅限于詞性特征與上下文窗口特征,因此,在未來的研究中,需要進一步測試不同特征模板的選擇對模型效果的影響.此外,我們將進一步檢測此模型在其它特定領域的效果,來探索此模型算法對不同領域的適用性,以進一步提高識別準確率,獲得更精準的實體識別結果.