羊艷玲,李燕,鐘昕妤,徐麗娜
(甘肅中醫(yī)藥大學(xué)信息工程學(xué)院,甘肅 蘭州 730000)
中醫(yī)醫(yī)案包含著價值豐富的醫(yī)療信息,是進行名老中醫(yī)個性化知識分析、輔助診療、臨床決策支持、用藥模式挖掘等重要的資源。隨著中醫(yī)藥地位的不斷提升,這些資源中包含有大量潛在知識,對其進行挖掘一方面可為醫(yī)務(wù)人員提供臨床決策,支持幫助理解辨證論治思路;另一方面在中醫(yī)醫(yī)案驅(qū)動下基于人工智能進行漸進式學(xué)術(shù)思想的發(fā)現(xiàn),為進一步名老中醫(yī)經(jīng)驗傳承和臨床知識總結(jié)進行探索[1]。有效的信息抽取是挖掘中醫(yī)辨證規(guī)律、探索病因病機的重要基礎(chǔ)[2],但如今醫(yī)案的應(yīng)用研究中,仍存在著數(shù)據(jù)利用率低、文本信息特征提取困難等問題。此外,中醫(yī)醫(yī)案是以長段且無序的非結(jié)構(gòu)化文本為數(shù)據(jù)承載體,其中含雜了病人的疾病、癥狀、證候、處方及個人信息,且沒有統(tǒng)一的標注語料和標注規(guī)范,無法被計算機直接挖掘與處理。將自然語言處理技術(shù)引入到醫(yī)案挖掘工作中,可以實現(xiàn)有效且自動地從醫(yī)案文本中獲取實體及其關(guān)系,并在此基礎(chǔ)上實現(xiàn)醫(yī)療知識圖譜的構(gòu)建[3]。
解決上述問題的第一步便是將中醫(yī)專業(yè)術(shù)語從醫(yī)案文本中精準地提取出來,即對其進行實體識別——命名實體識別(Named Entity Recognition,NER)技術(shù)之一。命名實體識別作為文本數(shù)據(jù)挖掘的關(guān)鍵任務(wù),是許多自然語言處理(Natural Language Processing,NLP)任務(wù)的重要基礎(chǔ)工具和通信橋梁,用于從特定文本中識別和提取具有特定含義的實體,判斷實體邊界進而明確識別實體類別或?qū)傩?。該技術(shù)是從半結(jié)構(gòu)化或者非結(jié)構(gòu)化文本中抽取所需要的實體,并為實體分類定制標簽。對于英文文本處理比較容易,詞匯之間有明顯的分割,即每個專有名詞的大寫等;而對于中文文本的自然語言處理比較困難,因為漢語中的詞與詞之間沒有明顯的界線,且出現(xiàn)一詞多義、歧義詞等現(xiàn)象。與英文相比,漢語不那么容易區(qū)分單詞和單詞邊界,因此中文文本命名實體挑戰(zhàn)更大,困難更多[4],以中醫(yī)醫(yī)案為基礎(chǔ),構(gòu)建高準確率實用性的相關(guān)命名實體模型成為中醫(yī)學(xué)者研究的重點[5]。
2019年10月,中共中央國務(wù)院印發(fā)《關(guān)于促進中醫(yī)藥傳承創(chuàng)新發(fā)展的意見》[6],指出加強中醫(yī)醫(yī)案典籍研究利用,挖掘和傳承中醫(yī)藥寶庫中的精華精髓,結(jié)合數(shù)字化、影像化技術(shù)實現(xiàn)中醫(yī)傳承現(xiàn)代化。中醫(yī)醫(yī)案是中醫(yī)傳承與創(chuàng)新的主要載體之一,記錄了中醫(yī)診療的全過程,擁有層次豐富的醫(yī)療知識,具有人工智能服務(wù)的研究空間,如自然語言處理、智能問答等。有學(xué)者指出未來服務(wù)于現(xiàn)代中醫(yī)診療體系的中醫(yī)知識圖譜需要借助先進的人工智能技術(shù)和相關(guān)領(lǐng)域知識的交叉結(jié)合,構(gòu)建一個具備知識獲取、信息查詢、應(yīng)用和評價的智能知識圖譜,它為實現(xiàn)智能化、個性化的中醫(yī)藥知識服務(wù),因此具有廣闊的應(yīng)用前景[4]。而構(gòu)建基于相關(guān)術(shù)語的實體識別模型則可在源頭上解決知識獲取難題,因此本文在中醫(yī)臨床醫(yī)案知識挖掘中引入BiLSTM-CRF 模型,建立一個中醫(yī)特征表實體識別模型,考察該模型在中醫(yī)藥領(lǐng)域中識別實體的性能,為其在中醫(yī)更龐雜的臨床醫(yī)案知識抽取應(yīng)用提供參考,同時也為后續(xù)整個醫(yī)療知識圖譜的構(gòu)建打下基礎(chǔ)[7]。
傳統(tǒng)的中文實體識別方法有條件隨機場、字典法和混合方法[8]。近年來,隨著深度學(xué)習(xí)算法被廣泛應(yīng)用于各領(lǐng)域中,學(xué)者們嘗試在NER 任務(wù)中引入該算法。COLLOBERT 等[9]在2011年首次將深度學(xué)習(xí)系統(tǒng)性地應(yīng)用于多個信息抽取環(huán)節(jié),再通過聯(lián)合神經(jīng)網(wǎng)絡(luò)突破了NLP 標注困境,使模型的可移植性大大增強。該模型是深度學(xué)習(xí)在NLP 中典型應(yīng)用,也是多任務(wù)學(xué)習(xí)的典型范例。LAMPLE 等[10]同樣考慮詞間的影響提出了BiLSTM-CRF 模型,通過將BiLSTM 模型結(jié)果輸入CRF 中,結(jié)合狀態(tài)轉(zhuǎn)移矩陣以及詞的語義語境來訓(xùn)練模型,最終在幾種語言開放語料庫的檢索實驗中都獲得了對比更加優(yōu)越的性能。目前在醫(yī)療領(lǐng)域中,WU 等[11]發(fā)現(xiàn)將隨機向量作為基于深度學(xué)習(xí)算法的識別模型的輸入,相較于向量化后的電子病歷語料數(shù)據(jù)兩者差距不大。馮麗芝[12]采用大型中醫(yī)臨床病歷庫為實體識別數(shù)據(jù)來源,在實體獲取的語料標注階段,以結(jié)構(gòu)化、條件隨機場及自舉法等方法實現(xiàn)了批量自動化操作。張帆等[13]針對四種疾病的在線醫(yī)療文本構(gòu)建了標注數(shù)據(jù)集,應(yīng)用基本的神經(jīng)網(wǎng)絡(luò)模型進行命名實體識別,研究發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)模型的識別效果要優(yōu)于條件隨機場模型。針對中醫(yī)醫(yī)案獨特的語言和結(jié)構(gòu)特點進行特征選擇,本文利用小樣本標注數(shù)據(jù)集來訓(xùn)練實體識別模型,設(shè)計BiLSTM-CRF 模型用于提取語言和結(jié)構(gòu)特征,反復(fù)迭代不斷優(yōu)化模型,其中雙向長短期記憶神經(jīng)網(wǎng)絡(luò)模型解決了傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)模型的梯度消失問題,條件隨機場克服了最大熵馬爾科夫模型的限制。
中醫(yī)醫(yī)案具有明顯個體差異性、實用性與地域性等特點[14],具有一定的復(fù)雜性。綜合現(xiàn)階段研究文獻來看,筆者需要將文本中實體的多種描述方式與所指的標準實體進行對應(yīng),目前影響精度的主要問題是歧義性問題和多樣性問題[15]。此外古代醫(yī)案多用晦澀的文言文具有籠統(tǒng)模糊的特性,增加了分詞難度以及歧義詞的消解工作。且中醫(yī)領(lǐng)域詞典構(gòu)建不完善,缺乏規(guī)范與條理,將傳統(tǒng)醫(yī)案轉(zhuǎn)化為數(shù)字醫(yī)案的過程中,專業(yè)醫(yī)學(xué)術(shù)語、癥狀名稱等內(nèi)容給數(shù)據(jù)處理帶來極大困難[14]。
本文研究數(shù)據(jù)主要來源于古今醫(yī)案云平臺軟件,整理平臺上所有與高血壓相關(guān)的中醫(yī)醫(yī)案。納入標準:①醫(yī)案中明確記載診斷為高血壓或眩暈的患者;②就診時的主訴辨治是以高血壓為主;③數(shù)據(jù)完整,包含臨床表現(xiàn)、病機分析、治法和用藥等內(nèi)容。依照權(quán)威診斷標準和名師指導(dǎo)意見,對平臺中高血壓疾病相關(guān)醫(yī)案進行手動檢索與篩選,并對其內(nèi)容規(guī)范以序號、ID、患者姓名、性別、年齡、醫(yī)案內(nèi)容、中醫(yī)疾病、證候和醫(yī)案來源錄入到Excel數(shù)據(jù)庫中。研究過程中,對中醫(yī)醫(yī)案中用作訓(xùn)練的數(shù)據(jù)集進行整合,用單字切分原始文本,對訓(xùn)練集中的所有語句按照疾病、癥狀、證候、治法、處方進行分類,最后共錄入435條醫(yī)案數(shù)據(jù)。
2.3.1 分詞
中文分詞是將需處理的中文文本對象通過方法或方法組合,將其按某些既定要求及規(guī)范切分成各個詞的過程。想要在海量的中醫(yī)醫(yī)案中更高效地挖掘出重要的診療信息就需要對醫(yī)案文本進行預(yù)處理,前提須解決中文序列切分問題即中文分詞,因此分詞是命名實體識別、關(guān)系抽取及全文信息檢索的基礎(chǔ)。本文利用Python 語言提供的第三方中文分詞包,Jieba 分詞,通過《中醫(yī)病癥分類與代碼》《中藥方劑編碼規(guī)則》《中醫(yī)內(nèi)科病證診斷療效標準》《中醫(yī)大辭典》等醫(yī)學(xué)相關(guān)詞典,以此為基礎(chǔ)進行分詞處理。
2.3.2 人工序列標注
序列標注,即對給定的序列中的元素都進行標注賦予對應(yīng)標簽,并在這些標簽的基礎(chǔ)上對序列做進一步深度分析,是NLP 過程中常需解決的問題。一般可將其標注策略分為兩類——原始標注與聯(lián)合標注,前者給予序列所有元素賦予對應(yīng)標簽,而后者將序列實體分段,給對應(yīng)分段賦予相同標簽[16]。因此,從中文文本中提取蘊含知識信息語義的字來構(gòu)建模型,可在一定程度上規(guī)避分詞時可能發(fā)生的性能差等問題[17]。
對于實體識別的等量標注任務(wù),標簽由兩部分組成:實體類別和實體中的位置。本研究采用BIO 來表示實體的類別和位置,將每個元素標注為“B-X”“IX”或者“O”,再以字符作為最小標注單元。在BIO 表示中,B 代表實體的頭部,I 表示中間實體,O 代表的是實體的尾部,X 表示實體類型。在標注過程中,對中醫(yī)實體以“標簽,實體”形式將其歸屬到對應(yīng)的中醫(yī)類別,本文涉及的中醫(yī)五類實體的有關(guān)信息見表1。
表1 實體相關(guān)信息
具體操作步驟如下。
第一步:對所涉及的訓(xùn)練集和測試集的醫(yī)案數(shù)據(jù)進行命名實體標注,完成總體醫(yī)案文本數(shù)據(jù)集的初步處理。
第二步:在初步處理的過程中,將實體共分為五類,分別為:疾?。╠isease)、癥狀(symptom)、證候(syndrome)、治法(treatment)和處方(prescription)。
第三步:對于訓(xùn)練和測試文本數(shù)據(jù)均采用BIO 標注方法,在具體標記過程中,選用如表2所示的實體標記以便區(qū)分。應(yīng)該注意的是:①訓(xùn)練語料中的每個字都要進行標記;②字和標識之間要用空格隔開;③句子與句子之間空一行。
表2 BIO標簽集
依照上述BIO標注方法,部分醫(yī)案標注如圖1。
圖1 部分醫(yī)案BIO標注示例
近年來,多種深度學(xué)習(xí)方法被廣泛應(yīng)用于命名實體識別任務(wù)中,通常采用RNN模型及其變體,RNN在理論上能夠捕獲遠程上下文關(guān)系,但在實踐中由于梯度消失或梯度爆炸而失效。因此LSTM在實際應(yīng)用中經(jīng)常被用到,在命名實體識別任務(wù)中,同時訪問當前時刻的上下文有助于預(yù)測當前的時刻,但是LSTM的隱藏狀態(tài)h(t)只接受過去的信息。因此筆者使用雙向LSTM模型來給出每個狀態(tài)的上下文,從左到右和從右到左使用兩個獨立的隱藏狀態(tài),同時捕獲過去和未來的信息[18]。在模型輸出層上,筆者會將捕獲的上下文信息經(jīng)向量化后作為標注特征,但若僅通過該模型進行實體識別則會面臨標注間約束關(guān)系無法表示的問題[19]。而用CRF模型實現(xiàn)中文分詞,則可在具有良好學(xué)習(xí)性能的同時從一定程度上實現(xiàn)對生詞的識別。本文采用雙向長短時記憶神經(jīng)網(wǎng)絡(luò)和條件隨機場相結(jié)合(BiLSTM-CRF)的方法構(gòu)建神經(jīng)網(wǎng)絡(luò)模型來進行實體的類別,它的模型結(jié)構(gòu)見圖2,這種方法結(jié)合詞語的上下文有關(guān)信息,將詞的分布式表達引入到特征提取中,最大程度地利用詞與標簽之間的關(guān)系,從而充分地提高識別效果[20]。
圖2 BiLSTM-CRF算法模型流程圖
3.1.1 輸入層
第一層是輸入層(字嵌入層),實現(xiàn)文本數(shù)據(jù)向計算機可處理的向量矩陣的轉(zhuǎn)換。本層通過Word2vec工具,基于訓(xùn)練好的模型將基于字的直接向量表示的高維稀疏向量轉(zhuǎn)變?yōu)榭捎嬎阍~間關(guān)系的低維稠密向量[21]。本文使用中醫(yī)醫(yī)案的字符序列作為輸入得到字向量。
3.1.2 BiLSTM層
第二層是隱藏層(BiLSTM 層),實現(xiàn)對文本語句特征的提取。本層由兩個LSTM層組成,由于對應(yīng)處理向量序列次序的差異將兩者區(qū)分為正序的前向?qū)雍湍嫘虻暮笙驅(qū)樱跋螂[層負責提取中醫(yī)文獻中每一個字的表征上文,后向隱層負責反向特征提取中醫(yī)文獻中每一個字的表征下文。在具體輸入過程中,依次把輸入向量序列的順序和逆序序列分別作為前向和后向的輸入數(shù)據(jù)。
3.1.3 CRF層
第三層是輸出層,在BiLSTM網(wǎng)絡(luò)的輸出層中為每一個輸入的數(shù)據(jù)打一個標簽的預(yù)測分值,接著在輸出層的后面添加CRF層(邏輯回歸層),它的主要作用是對語句進行序列標注,以此來增加文本之間的信息相關(guān)性。
基于中醫(yī)醫(yī)案的實體識別流程是首先加入自定義詞典和停用詞典進行jieba分詞,再經(jīng)過已分詞好的數(shù)據(jù)上人工標注435份中醫(yī)醫(yī)案的小樣本標注數(shù)據(jù)集,里面包含了疾病等五種實體類別;然后把小樣本標注數(shù)據(jù)分為70%訓(xùn)練集和30%測試集,使用BiLSTM-CRF模型進行實體的訓(xùn)練和測試。實體識別模型的流程圖見圖3。
圖3 實體識別模型流程
圖4 中的結(jié)構(gòu)從上到下總共分為7 個層次。輸入層以“高血壓病史”當作模型的輸入序列;然后達到字分割層得到[高][血][壓][病][史]5 個不同字符,這些字符分別調(diào)用預(yù)先訓(xùn)練好的字符嵌入向量映射成對應(yīng)的向量形式;將相應(yīng)的向量依次輸入到第一層深度學(xué)習(xí)網(wǎng)絡(luò)的前向傳播和反向傳播網(wǎng)絡(luò)中進行參數(shù)訓(xùn)練;將計算結(jié)果依次輸入到第二層深度學(xué)習(xí)網(wǎng)絡(luò)的前向傳播和反向傳播中進行參數(shù)訓(xùn)練;將計算結(jié)果依次輸入到條件隨機場(CRF)層,完成相應(yīng)的序列標注;最后在輸出層輸出最后的序列結(jié)果。
圖4 基于字符嵌入的BiLSTM-CRF模型體系結(jié)構(gòu)
本文主要從常用的4 個指標來對構(gòu)建的實體抽取模型做出評價,分別是:識別準確率Acc,反映模型成功抽取標記實體的情況;識別精確率P,反映模型抽取實體中含標記實體的情況;識別召回率R,反映模型在標記實體中抽取成功的情況;調(diào)和均值F-balanced,反映模型兼顧P與R的情況。當各指標的值越接近1時,表明構(gòu)建的抽取模型對應(yīng)性能越好。
其中,筆者做出如下定義:模型抽取出標記實體記為Yt;模型抽取出未標記實體記為Yf;模型不抽取標記實體記為Nt;模型不抽取未標記實體記為Nf。
各指標的具體計算如下:
表3 是樣本數(shù)據(jù)集通過BiLSTM-CRF 模型進行訓(xùn)練,再使用該模型訓(xùn)練的結(jié)果進行測試,模型輪次分別是30 輪和50 輪。結(jié)果對比見圖4,50 輪次模型的各綜合測評指標水平均超過81.3%,都好于30 輪次模型,且其在召回率上有較大程度的提高;而對于各個類別命名實體測試結(jié)果見表4,分別為疾病精確率為73.87%,癥狀精確率為75.93%,證候精確率為72.33%,治法精確率為68.13%,處方精確率最高達到89.15%。各類實體識別檢測結(jié)果在圖6 中對比顯示發(fā)現(xiàn),不同實體類別的精確率相差較大,處方類實體識別的各方面測評結(jié)果都遠高于其他幾類實體,這種情況可能與實體的結(jié)構(gòu)特征有關(guān),也可能是因為各類實體在小樣本標注數(shù)據(jù)集中的分布不均衡有關(guān),數(shù)量越多的實體在模型測試時精確率也就越高。本實驗采取不斷迭代模型訓(xùn)練和測試的過程,增加輪次,最終形成完整的實體標注數(shù)據(jù)語料。
圖6 各類別命名實體識別評測結(jié)果對比圖
表3 模型總評測結(jié)構(gòu)
圖5 模型總評對比圖
表4 各類別命名實體評測結(jié)果
為了查找不同類別精確值懸殊的問題,對樣本標注數(shù)據(jù)集的實體分布情況進行了分析,見圖7。圖中藍色柱狀圖表示樣本數(shù)據(jù)集的分布情況,從圖中可以看出,樣本數(shù)據(jù)集中處方實體占比最大,而對于治法實體占比最少。因此可得出,數(shù)據(jù)量多的實體在模型測試時準確率也就越高。
圖7 實體在樣本標注數(shù)據(jù)集中的分布
本文針對中醫(yī)醫(yī)案數(shù)據(jù)人工標記,通過設(shè)計和訓(xùn)練BiLSTM-CRF 模型,對醫(yī)案涵蓋的五類中醫(yī)實體達到能自動識別提取的目標。經(jīng)測試數(shù)據(jù)驗證取得了90.13%的識別準確率,81.3%的識別精確率,83.37%的識別召回率及82.32%的F-balanced 值。其中,模型對處方實體識別的效果最好,特別是精確率和F-balanced 值均高于其他四個實體,這可能是在醫(yī)案中處方藥物名一般比較固定,而且醫(yī)師在記錄時輸入處方信息的格式也比較規(guī)范;對于疾病、癥狀和證候?qū)嶓w的描述比較多樣化,處方藥物的識別就顯得容易和精確得多;而對于治法的精確率最低可以解釋為每個中醫(yī)大家對于疾病均從不同的角度進行分析,有著不同的見解與看法,個體化的專家表達導(dǎo)致治法在很大程度上無法被識別。造成上述主要原因有:①在中醫(yī)醫(yī)案實體中,由于臨床應(yīng)用時的擴展,存在著實體間劃分不明確等問題,且甚有同詞在同文不同語義情況下分屬不同實體類別,存在著許多相互包容和交叉的現(xiàn)象。例如:“眩暈”通常被認為是一種疾病,但在某些情況下,它也作為一種癥狀出現(xiàn)。②臨床實體分為簡單實體和結(jié)構(gòu)相對復(fù)雜的復(fù)雜實體。中醫(yī)醫(yī)案中實體的長度是可變的,許多臨床實體比普通實體長且在臨床實體中有許多嵌套、別名和縮寫。③部分實體類別的訓(xùn)練數(shù)量不足,數(shù)據(jù)覆蓋面小,從而對整體識別水平有一定的影響。在后續(xù)的研究中,將通過獲取更多的語料數(shù)據(jù),增添相關(guān)醫(yī)案數(shù)據(jù),從而提高個類別的精確率,擴大可識別實體范圍,提高可用性和有效性。目前有許多提升模型性能的算法,包括增加數(shù)據(jù)樣本、模型調(diào)參、改進算法等。本實驗采取不斷迭代模型訓(xùn)練和測試的過程,增加輪次,最終形成完整的實體標注數(shù)據(jù)語料??梢园l(fā)現(xiàn)使BiLSTM-CRF 模型進行實體識別在對處方實體識別上性能表現(xiàn)突出,后續(xù)可探究模型識別性能產(chǎn)生差異的原因,做進一步優(yōu)化,獲得更好更全面的模型,為實現(xiàn)中醫(yī)醫(yī)案知識發(fā)現(xiàn)與構(gòu)建醫(yī)學(xué)知識圖譜奠定堅實基礎(chǔ)。