羊艷玲,李燕,鐘昕妤,徐麗娜
(甘肅中醫藥大學信息工程學院,甘肅 蘭州 730000)
中醫醫案包含著價值豐富的醫療信息,是進行名老中醫個性化知識分析、輔助診療、臨床決策支持、用藥模式挖掘等重要的資源。隨著中醫藥地位的不斷提升,這些資源中包含有大量潛在知識,對其進行挖掘一方面可為醫務人員提供臨床決策,支持幫助理解辨證論治思路;另一方面在中醫醫案驅動下基于人工智能進行漸進式學術思想的發現,為進一步名老中醫經驗傳承和臨床知識總結進行探索[1]。有效的信息抽取是挖掘中醫辨證規律、探索病因病機的重要基礎[2],但如今醫案的應用研究中,仍存在著數據利用率低、文本信息特征提取困難等問題。此外,中醫醫案是以長段且無序的非結構化文本為數據承載體,其中含雜了病人的疾病、癥狀、證候、處方及個人信息,且沒有統一的標注語料和標注規范,無法被計算機直接挖掘與處理。將自然語言處理技術引入到醫案挖掘工作中,可以實現有效且自動地從醫案文本中獲取實體及其關系,并在此基礎上實現醫療知識圖譜的構建[3]。
解決上述問題的第一步便是將中醫專業術語從醫案文本中精準地提取出來,即對其進行實體識別——命名實體識別(Named Entity Recognition,NER)技術之一。命名實體識別作為文本數據挖掘的關鍵任務,是許多自然語言處理(Natural Language Processing,NLP)任務的重要基礎工具和通信橋梁,用于從特定文本中識別和提取具有特定含義的實體,判斷實體邊界進而明確識別實體類別或屬性。該技術是從半結構化或者非結構化文本中抽取所需要的實體,并為實體分類定制標簽。對于英文文本處理比較容易,詞匯之間有明顯的分割,即每個專有名詞的大寫等;而對于中文文本的自然語言處理比較困難,因為漢語中的詞與詞之間沒有明顯的界線,且出現一詞多義、歧義詞等現象。與英文相比,漢語不那么容易區分單詞和單詞邊界,因此中文文本命名實體挑戰更大,困難更多[4],以中醫醫案為基礎,構建高準確率實用性的相關命名實體模型成為中醫學者研究的重點[5]。
2019年10月,中共中央國務院印發《關于促進中醫藥傳承創新發展的意見》[6],指出加強中醫醫案典籍研究利用,挖掘和傳承中醫藥寶庫中的精華精髓,結合數字化、影像化技術實現中醫傳承現代化。中醫醫案是中醫傳承與創新的主要載體之一,記錄了中醫診療的全過程,擁有層次豐富的醫療知識,具有人工智能服務的研究空間,如自然語言處理、智能問答等。有學者指出未來服務于現代中醫診療體系的中醫知識圖譜需要借助先進的人工智能技術和相關領域知識的交叉結合,構建一個具備知識獲取、信息查詢、應用和評價的智能知識圖譜,它為實現智能化、個性化的中醫藥知識服務,因此具有廣闊的應用前景[4]。而構建基于相關術語的實體識別模型則可在源頭上解決知識獲取難題,因此本文在中醫臨床醫案知識挖掘中引入BiLSTM-CRF 模型,建立一個中醫特征表實體識別模型,考察該模型在中醫藥領域中識別實體的性能,為其在中醫更龐雜的臨床醫案知識抽取應用提供參考,同時也為后續整個醫療知識圖譜的構建打下基礎[7]。
傳統的中文實體識別方法有條件隨機場、字典法和混合方法[8]。近年來,隨著深度學習算法被廣泛應用于各領域中,學者們嘗試在NER 任務中引入該算法。COLLOBERT 等[9]在2011年首次將深度學習系統性地應用于多個信息抽取環節,再通過聯合神經網絡突破了NLP 標注困境,使模型的可移植性大大增強。該模型是深度學習在NLP 中典型應用,也是多任務學習的典型范例。LAMPLE 等[10]同樣考慮詞間的影響提出了BiLSTM-CRF 模型,通過將BiLSTM 模型結果輸入CRF 中,結合狀態轉移矩陣以及詞的語義語境來訓練模型,最終在幾種語言開放語料庫的檢索實驗中都獲得了對比更加優越的性能。目前在醫療領域中,WU 等[11]發現將隨機向量作為基于深度學習算法的識別模型的輸入,相較于向量化后的電子病歷語料數據兩者差距不大。馮麗芝[12]采用大型中醫臨床病歷庫為實體識別數據來源,在實體獲取的語料標注階段,以結構化、條件隨機場及自舉法等方法實現了批量自動化操作。張帆等[13]針對四種疾病的在線醫療文本構建了標注數據集,應用基本的神經網絡模型進行命名實體識別,研究發現神經網絡模型的識別效果要優于條件隨機場模型。針對中醫醫案獨特的語言和結構特點進行特征選擇,本文利用小樣本標注數據集來訓練實體識別模型,設計BiLSTM-CRF 模型用于提取語言和結構特征,反復迭代不斷優化模型,其中雙向長短期記憶神經網絡模型解決了傳統的循環神經網絡模型的梯度消失問題,條件隨機場克服了最大熵馬爾科夫模型的限制。
中醫醫案具有明顯個體差異性、實用性與地域性等特點[14],具有一定的復雜性。綜合現階段研究文獻來看,筆者需要將文本中實體的多種描述方式與所指的標準實體進行對應,目前影響精度的主要問題是歧義性問題和多樣性問題[15]。此外古代醫案多用晦澀的文言文具有籠統模糊的特性,增加了分詞難度以及歧義詞的消解工作。且中醫領域詞典構建不完善,缺乏規范與條理,將傳統醫案轉化為數字醫案的過程中,專業醫學術語、癥狀名稱等內容給數據處理帶來極大困難[14]。
本文研究數據主要來源于古今醫案云平臺軟件,整理平臺上所有與高血壓相關的中醫醫案。納入標準:①醫案中明確記載診斷為高血壓或眩暈的患者;②就診時的主訴辨治是以高血壓為主;③數據完整,包含臨床表現、病機分析、治法和用藥等內容。依照權威診斷標準和名師指導意見,對平臺中高血壓疾病相關醫案進行手動檢索與篩選,并對其內容規范以序號、ID、患者姓名、性別、年齡、醫案內容、中醫疾病、證候和醫案來源錄入到Excel數據庫中。研究過程中,對中醫醫案中用作訓練的數據集進行整合,用單字切分原始文本,對訓練集中的所有語句按照疾病、癥狀、證候、治法、處方進行分類,最后共錄入435條醫案數據。
2.3.1 分詞
中文分詞是將需處理的中文文本對象通過方法或方法組合,將其按某些既定要求及規范切分成各個詞的過程。想要在海量的中醫醫案中更高效地挖掘出重要的診療信息就需要對醫案文本進行預處理,前提須解決中文序列切分問題即中文分詞,因此分詞是命名實體識別、關系抽取及全文信息檢索的基礎。本文利用Python 語言提供的第三方中文分詞包,Jieba 分詞,通過《中醫病癥分類與代碼》《中藥方劑編碼規則》《中醫內科病證診斷療效標準》《中醫大辭典》等醫學相關詞典,以此為基礎進行分詞處理。
2.3.2 人工序列標注
序列標注,即對給定的序列中的元素都進行標注賦予對應標簽,并在這些標簽的基礎上對序列做進一步深度分析,是NLP 過程中常需解決的問題。一般可將其標注策略分為兩類——原始標注與聯合標注,前者給予序列所有元素賦予對應標簽,而后者將序列實體分段,給對應分段賦予相同標簽[16]。因此,從中文文本中提取蘊含知識信息語義的字來構建模型,可在一定程度上規避分詞時可能發生的性能差等問題[17]。
對于實體識別的等量標注任務,標簽由兩部分組成:實體類別和實體中的位置。本研究采用BIO 來表示實體的類別和位置,將每個元素標注為“B-X”“IX”或者“O”,再以字符作為最小標注單元。在BIO 表示中,B 代表實體的頭部,I 表示中間實體,O 代表的是實體的尾部,X 表示實體類型。在標注過程中,對中醫實體以“標簽,實體”形式將其歸屬到對應的中醫類別,本文涉及的中醫五類實體的有關信息見表1。

表1 實體相關信息
具體操作步驟如下。
第一步:對所涉及的訓練集和測試集的醫案數據進行命名實體標注,完成總體醫案文本數據集的初步處理。
第二步:在初步處理的過程中,將實體共分為五類,分別為:疾病(disease)、癥狀(symptom)、證候(syndrome)、治法(treatment)和處方(prescription)。
第三步:對于訓練和測試文本數據均采用BIO 標注方法,在具體標記過程中,選用如表2所示的實體標記以便區分。應該注意的是:①訓練語料中的每個字都要進行標記;②字和標識之間要用空格隔開;③句子與句子之間空一行。

表2 BIO標簽集
依照上述BIO標注方法,部分醫案標注如圖1。

圖1 部分醫案BIO標注示例
近年來,多種深度學習方法被廣泛應用于命名實體識別任務中,通常采用RNN模型及其變體,RNN在理論上能夠捕獲遠程上下文關系,但在實踐中由于梯度消失或梯度爆炸而失效。因此LSTM在實際應用中經常被用到,在命名實體識別任務中,同時訪問當前時刻的上下文有助于預測當前的時刻,但是LSTM的隱藏狀態h(t)只接受過去的信息。因此筆者使用雙向LSTM模型來給出每個狀態的上下文,從左到右和從右到左使用兩個獨立的隱藏狀態,同時捕獲過去和未來的信息[18]。在模型輸出層上,筆者會將捕獲的上下文信息經向量化后作為標注特征,但若僅通過該模型進行實體識別則會面臨標注間約束關系無法表示的問題[19]。而用CRF模型實現中文分詞,則可在具有良好學習性能的同時從一定程度上實現對生詞的識別。本文采用雙向長短時記憶神經網絡和條件隨機場相結合(BiLSTM-CRF)的方法構建神經網絡模型來進行實體的類別,它的模型結構見圖2,這種方法結合詞語的上下文有關信息,將詞的分布式表達引入到特征提取中,最大程度地利用詞與標簽之間的關系,從而充分地提高識別效果[20]。

圖2 BiLSTM-CRF算法模型流程圖
3.1.1 輸入層
第一層是輸入層(字嵌入層),實現文本數據向計算機可處理的向量矩陣的轉換。本層通過Word2vec工具,基于訓練好的模型將基于字的直接向量表示的高維稀疏向量轉變為可計算詞間關系的低維稠密向量[21]。本文使用中醫醫案的字符序列作為輸入得到字向量。
3.1.2 BiLSTM層
第二層是隱藏層(BiLSTM 層),實現對文本語句特征的提取。本層由兩個LSTM層組成,由于對應處理向量序列次序的差異將兩者區分為正序的前向層和逆序的后向層,前向隱層負責提取中醫文獻中每一個字的表征上文,后向隱層負責反向特征提取中醫文獻中每一個字的表征下文。在具體輸入過程中,依次把輸入向量序列的順序和逆序序列分別作為前向和后向的輸入數據。
3.1.3 CRF層
第三層是輸出層,在BiLSTM網絡的輸出層中為每一個輸入的數據打一個標簽的預測分值,接著在輸出層的后面添加CRF層(邏輯回歸層),它的主要作用是對語句進行序列標注,以此來增加文本之間的信息相關性。
基于中醫醫案的實體識別流程是首先加入自定義詞典和停用詞典進行jieba分詞,再經過已分詞好的數據上人工標注435份中醫醫案的小樣本標注數據集,里面包含了疾病等五種實體類別;然后把小樣本標注數據分為70%訓練集和30%測試集,使用BiLSTM-CRF模型進行實體的訓練和測試。實體識別模型的流程圖見圖3。

圖3 實體識別模型流程
圖4 中的結構從上到下總共分為7 個層次。輸入層以“高血壓病史”當作模型的輸入序列;然后達到字分割層得到[高][血][壓][病][史]5 個不同字符,這些字符分別調用預先訓練好的字符嵌入向量映射成對應的向量形式;將相應的向量依次輸入到第一層深度學習網絡的前向傳播和反向傳播網絡中進行參數訓練;將計算結果依次輸入到第二層深度學習網絡的前向傳播和反向傳播中進行參數訓練;將計算結果依次輸入到條件隨機場(CRF)層,完成相應的序列標注;最后在輸出層輸出最后的序列結果。

圖4 基于字符嵌入的BiLSTM-CRF模型體系結構
本文主要從常用的4 個指標來對構建的實體抽取模型做出評價,分別是:識別準確率Acc,反映模型成功抽取標記實體的情況;識別精確率P,反映模型抽取實體中含標記實體的情況;識別召回率R,反映模型在標記實體中抽取成功的情況;調和均值F-balanced,反映模型兼顧P與R的情況。當各指標的值越接近1時,表明構建的抽取模型對應性能越好。
其中,筆者做出如下定義:模型抽取出標記實體記為Yt;模型抽取出未標記實體記為Yf;模型不抽取標記實體記為Nt;模型不抽取未標記實體記為Nf。
各指標的具體計算如下:

表3 是樣本數據集通過BiLSTM-CRF 模型進行訓練,再使用該模型訓練的結果進行測試,模型輪次分別是30 輪和50 輪。結果對比見圖4,50 輪次模型的各綜合測評指標水平均超過81.3%,都好于30 輪次模型,且其在召回率上有較大程度的提高;而對于各個類別命名實體測試結果見表4,分別為疾病精確率為73.87%,癥狀精確率為75.93%,證候精確率為72.33%,治法精確率為68.13%,處方精確率最高達到89.15%。各類實體識別檢測結果在圖6 中對比顯示發現,不同實體類別的精確率相差較大,處方類實體識別的各方面測評結果都遠高于其他幾類實體,這種情況可能與實體的結構特征有關,也可能是因為各類實體在小樣本標注數據集中的分布不均衡有關,數量越多的實體在模型測試時精確率也就越高。本實驗采取不斷迭代模型訓練和測試的過程,增加輪次,最終形成完整的實體標注數據語料。

圖6 各類別命名實體識別評測結果對比圖

表3 模型總評測結構

圖5 模型總評對比圖

表4 各類別命名實體評測結果
為了查找不同類別精確值懸殊的問題,對樣本標注數據集的實體分布情況進行了分析,見圖7。圖中藍色柱狀圖表示樣本數據集的分布情況,從圖中可以看出,樣本數據集中處方實體占比最大,而對于治法實體占比最少。因此可得出,數據量多的實體在模型測試時準確率也就越高。

圖7 實體在樣本標注數據集中的分布
本文針對中醫醫案數據人工標記,通過設計和訓練BiLSTM-CRF 模型,對醫案涵蓋的五類中醫實體達到能自動識別提取的目標。經測試數據驗證取得了90.13%的識別準確率,81.3%的識別精確率,83.37%的識別召回率及82.32%的F-balanced 值。其中,模型對處方實體識別的效果最好,特別是精確率和F-balanced 值均高于其他四個實體,這可能是在醫案中處方藥物名一般比較固定,而且醫師在記錄時輸入處方信息的格式也比較規范;對于疾病、癥狀和證候實體的描述比較多樣化,處方藥物的識別就顯得容易和精確得多;而對于治法的精確率最低可以解釋為每個中醫大家對于疾病均從不同的角度進行分析,有著不同的見解與看法,個體化的專家表達導致治法在很大程度上無法被識別。造成上述主要原因有:①在中醫醫案實體中,由于臨床應用時的擴展,存在著實體間劃分不明確等問題,且甚有同詞在同文不同語義情況下分屬不同實體類別,存在著許多相互包容和交叉的現象。例如:“眩暈”通常被認為是一種疾病,但在某些情況下,它也作為一種癥狀出現。②臨床實體分為簡單實體和結構相對復雜的復雜實體。中醫醫案中實體的長度是可變的,許多臨床實體比普通實體長且在臨床實體中有許多嵌套、別名和縮寫。③部分實體類別的訓練數量不足,數據覆蓋面小,從而對整體識別水平有一定的影響。在后續的研究中,將通過獲取更多的語料數據,增添相關醫案數據,從而提高個類別的精確率,擴大可識別實體范圍,提高可用性和有效性。目前有許多提升模型性能的算法,包括增加數據樣本、模型調參、改進算法等。本實驗采取不斷迭代模型訓練和測試的過程,增加輪次,最終形成完整的實體標注數據語料。可以發現使BiLSTM-CRF 模型進行實體識別在對處方實體識別上性能表現突出,后續可探究模型識別性能產生差異的原因,做進一步優化,獲得更好更全面的模型,為實現中醫醫案知識發現與構建醫學知識圖譜奠定堅實基礎。