高佳奕,楊濤,董海艷,史話躍,胡孔法
1.南京中醫藥大學人工智能與信息技術學院,江蘇 南京 210023; 2.南京中醫藥大學中醫學院,江蘇 南京 210023
中醫醫案是中醫臨床診療的記錄,是中醫師辨證論治、察明證素的基礎,是中醫文化的重要傳承紐帶。個體化的專家表達與非結構化的中醫癥狀,使得從復雜醫案中抽取有效信息具有挑戰性。中醫臨床信息抽取是從海量臨床數據中抽取關鍵信息的過程[1],涉及癥狀、診斷、治法、方藥等信息,其中又以癥狀抽取最為復雜。有效的信息抽取是挖掘中醫辨證規律、探尋疾病機理的重要基礎。近年來,隨著對詞嵌入模式的改進,神經網絡在信息抽取領域取得較大進展,在部分任務中的表現超過傳統的統計學習方法。Huang等[2]提出雙向長短時記憶網絡與條件隨機場(long short term memory network-conditional random fields,LSTM-CRF)混合模型,減少模型對詞嵌入的依賴,極大提高了模型的穩健性。李明浩等[3]針對中醫醫案臨床癥狀術語構建LSTM-CRF模型,根據常見癥狀的組成要素制定額外的字符級別特征,識別的F1值最高達78%。上述研究為中醫臨床文本醫案自動化分析和處理,尤其是癥狀識別和抽取帶來了新的契機。鑒于此,本研究嘗試將LSTM-CRF模型應用于中醫醫案的命名實體抽取,設計多種癥狀命名實體抽取模型,并在中醫肺癌數據集上進行實驗,分析比較各方法的優劣,為實現中醫臨床信息的自動化抽取提供方法學參考。
數據來自國醫大師周仲瑛工作室,為1986年7月10日-2014年12月3日周仲瑛教授治療肺癌的醫案。
納入標準:①醫案明確記載診斷為肺癌;②患者就診時主訴以肺癌為主;③數據完整,至少包含臨床表現、病機分析和治法、用藥內容。
排除標準:①非原發性肺癌,如復發癌或轉移性腫瘤;②醫案記錄存在明確錯誤或缺失。
根據篩選標準篩選到1000份高質量醫案,圍繞病史進行癥狀命名實體識別??紤]到中醫醫案中的描述包括“咳嗽”等癥狀特征、“胸、背”等部位特征、“稍有”等程度特征,醫者據此進行辨證論治,本研究根據如上的實體特征,將單條醫案劃分為癥狀(名)、(癥狀)程度、(癥狀發生)部位3類不同標簽,與疾病無關的信息劃分為非命名實體組成部分。標簽具體特征見表1。

表1 醫案標簽對應部分特征
癥狀詞、程度詞、部位詞依次記為ZZ、CD、BW,非命名實體組成部分記為O。利用BIO三元集的標注方法進行標注,具體方法見表2。如某份原始病案可標注為“近O來O左B-BW胸I-BW脅I-BW肋I-BW隱B-ZZ痛I-ZZ,咳B-ZZ嗽I-ZZ深O呼O吸O有O影O響O,行O走O講O話O氣B-ZZ短I-ZZ,疲B-ZZ勞I-ZZ乏I-ZZ力I-ZZ,咳B-ZZ嗽I-ZZ不B-CD多I-CD,煩B-ZZ躁I-ZZ,咽B-BW后I-BW壁I-BW有O痰B-ZZ黏I-ZZ不I-ZZ爽I-ZZ?!?/p>

表2 命名實體標注方法
本研究利用爬蟲獲取中國知識資源總庫(CNKI)與中醫主題相關的100條文本摘要,結合已標注的1000份中醫臨床肺癌醫案,利用Python中Gensim庫,通過基于Skip-Gram方法的Word2Vec模型生成維度為100的字向量集,以此作為預訓練的字嵌入。為驗證生成字嵌入的可靠性,本文以“咳”字為例,選取與之相關度較高的字向量,結果見圖1。可以看出詞嵌入結果符合先驗知識。

圖1 “咳”字的字嵌入相關性分析
長短時記憶網絡(long short term memory network,LSTM)模型通過門限機制(即輸入門、輸出門和遺忘門)對輸入序列進行有效的過濾和保存[4-5],實現對特定實體的長期記憶,解決了傳統識別任務中的梯度消失和梯度爆炸現象。因此,本研究采用LSTM層作為特征提取層,抽取出中醫醫案實體的抽象特征。條件隨機場(conditional random fields,CRF)是用來標注和劃分序列結構數據的概率化結構模型[6],可以在句子級別上實現個體標簽的預測,有效避免標注的句子存在非法語義。考慮到各個標簽表現出較強的語法約束,如病位的起始詞后不應接程度的中間詞,本研究選擇CRF層作為輸出標注層,根據LSTM層輸出學習醫案的語法規則,在可行的標注路徑中找到最優路徑,進而實現相應實體的合理標注。LSTM-CRF模型結構圖見圖2。

圖2 LSTM-CRF模型結構圖
模型具體實現步驟:①根據中醫醫案的術語特點,結合中醫醫案與CNKI中醫詞條相關的文本摘要,獲得維度為100的字向量表示。②構建LSTM層,結合預訓練的字向量,抽取出中醫醫案的上下文抽象特征,計算序列與標簽的概率分布矩陣。③應用CRF層學習序列與標簽、標簽與標簽之間的潛在關系,在句子級別上排除不符合語法規則的標注序列。④通過多分類評價指標對模型結果進行評價。LSTM層的實現步驟如下。
輸入:預訓練的字嵌入。
輸出:輸入序列與對應標簽的概率分布矩陣P。
步驟1:根據輸入序列x中的字符,將預訓練生成的對應字向量送入LSTM(前向)的輸入層中。

步驟2:更新當前LSTM網絡中所在單元的狀態。
步驟3:將序列輸入LSTM(后向)中,重復上述過程。將2次遍歷的隱藏層序列拼接得到與上下文相關的字向量表示。
有學者通過改變LSTM的內部結構,設計出帶有peephole connection機制[7]與門控循環單元(gated recurrent unit,GRU)[8]的LSTM變體,極大簡化其復雜的門限機制。本研究參照上述建模步驟,選取傳統的循環神經網絡(recurrent neural network,RNN)模型作為基線實驗,LSTM、GRU、雙向LSTM(BiLSTM)與帶有Peephole機制的BiLSTM(BiLSTM with Peephole)作為對比實驗,比較分析不同模型的實體識別效果。
基于Tensorflow框架構建中醫醫案的LSTM-CRF模型,部分參數設置:全局學習率(learning_rate)為0.001,最大訓練輪數(max_epoch)為100,訓練語料的句子最大長度(max_length)不超過100個字符,選擇優化器為Adam。為防止梯度爆炸和過度擬合現象,設置梯度截斷參數(gradient clip)為5,隨機失活參數(dropout)為0.5。以上參數設置均為實驗過程中調參的最優結果。此外,為提高LSTM-CRF模型的泛化能力,避免序列的輸入順序對參數學習造成影響,每輪訓練前預先對輸入數據進行Shuffle。
本研究使用準確率(precision,P)、召回率(recall,R)和F1-測度值(F1-measure,F1)3個指標,評估LSTM-CRF模型在中醫醫案信息抽取任務中的性能。將真實類別與計算機預測類別相互組合,分別記為真正例(true positive,TP)、假正例(false positive,FP)、真反例(true negative,TN)與假反例(false negative,FN),則P=TP/(TP+FP)×100%,R=TP/(TP+FN)×100%,F1=2×P×R/(P+R)。
將1000份肺癌醫案劃分為訓練集800份和測試集200份,采用經典的留出法進行模型評估。設置隨機種子為1~10,取10次測試結果的平均值作為最終評估值。實驗結果排除非命名實體組成部分,分別觀察LSTM及其變體對癥狀、程度、部位實體的識別情況(各變體均默認后接CRF層進行序列標注)。結果顯示,各變體均對癥狀詞的識別精度最高,對部位詞的識別精度最低。與RNN相比,帶有Peephole機制的BiLSTM識別效果最好,F1值最高達84.23%,3類標簽F1值分別高于基線模型RNN 6.76%、10.89%、14.94%,見表3。
同時,與傳統的CRF相比,BiLSTM-CRF模型對程度和部位的識別能力均有提升,分別為5.71%和2.45%,但對癥狀的識別能力低于CRF(見表4)。
進一步探究嵌入粒度對實驗結果的影響,將預訓練的詞嵌入(WE)作為基線,結果未經過預訓練、直接根據輸入語料隨機初始化字嵌入(RE)識別效果略優,采用預訓練的字嵌入(CE)識別效果最好,3類標簽分別高于基線0.42%、1.35%、1.98%,見表5。
表3 中醫醫案癥狀命名實體在不同模型中的識別結果比較(±s)

表3 中醫醫案癥狀命名實體在不同模型中的識別結果比較(±s)
注:*該行最大值
標簽 指標 RNN LSTM GRU BiLSTM BiLSTM with Peephole ZZ P 0.786 5±0.106 2 0.798 0±0.029 8 0.805 7±0.025 3 0.838 5±0.029 3 0.844 6±0.022 7 R 0.791 7±0.021 6 0.792 0±0.018 9 0.796 6±0.024 6 0.840 1±0.030 9 0.840 2±0.019 2 F1 0.789 0±0.023 4 0.794 9±0.022 4 0.801 1±0.024 1 0.839 1±0.027 5 0.842 3±0.019 4* CD P 0.774 8±0.043 8 0.784 1±0.021 2 0.789 1±0.048 1 0.816 2±0.062 7 0.813 5±0.028 0 R 0.713 8±0.050 9 0.738 7±0.059 3 0.749 0±0.045 7 0.822 8±0.028 1 0.833 4±0.045 6 F1 0.742 0±0.042 4 0.759 8±0.037 9 0.768 0±0.038 9 0.818 7±0.042 2 0.822 8±0.032 7* BW P 0.719 9±0.028 7 0.723 3±0.101 6 0.715 6±0.078 1 0.739 5±0.091 9 0.766 3±0.082 7 R 0.588 6±0.021 6 0.623 4±0.109 5 0.605 9±0.088 3 0.714 4±0.092 4 0.720 6±0.078 7 F1 0.644 2±0.023 4 0.661 3±0.080 6 0.651 9±0.067 2 0.720 9±0.070 7 0.740 5±0.068 2*
表4 CRF與BiLSTM-CRF識別效果(R)比較(±s)

表4 CRF與BiLSTM-CRF識別效果(R)比較(±s)
模型 ZZ CD BW CRF 0.871 2±0.014 5 0.788 4±0.032 5 0.703 4±0.049 1 BiLSTM-CRF 0.840 2±0.019 2 0.833 4±0.045 6 0.720 6±0.078 7
表5 中醫醫案癥狀命名實體在不同嵌入粒度下的識別結果比較(±s)

表5 中醫醫案癥狀命名實體在不同嵌入粒度下的識別結果比較(±s)
注:*該行最大值
標簽 指標 WE RE CE ZZ P 0.835 6±0.028 5 0.837 6±0.023 7 0.844 6±0.022 7 R 0.842 1±0.023 3 0.841 9±0.021 8 0.840 2±0.019 2 F1 0.838 7±0.024 9 0.839 6±0.019 6 0.842 3±0.019 4*CD P 0.836 5±0.047 1 0.829 0±0.047 8 0.813 5±0.028 0 R 0.792 9±0.053 6 0.810 5±0.043 3 0.833 4±0.045 6 F1 0.811 8±0.046 3 0.818 3±0.032 1 0.822 8±0.032 7*BW P 0.786 8±0.080 4 0.774 0±0.080 2 0.766 3±0.082 7 R 0.696 2±0.084 1 0.709 7±0.071 6 0.720 6±0.078 7 F1 0.726 1±0.067 9 0.737 8±0.063 9 0.740 5±0.068 2*
本研究應用LSTM-CRF模型進行中醫臨床癥狀命名實體識別,對肺癌中醫臨床數據進行實驗。從整體結果分析,模型對癥狀詞的識別效果最好,其評價指標P、R、F1值分別為0.844 6±0.022 7、0.840 2±0.019 2、0.842 3±0.019 4;對部位詞的識別效果最差,P、R、F1值分別為0.766 3±0.082 7、0.720 6±0.078 7、0.740 5±0.068 2。考慮為部位詞的樣本數較少(共2501處)而癥狀詞的樣本數較多(共計184 649處),訓練過程中網絡學習到部位詞的類別特征不明顯,影響了識別精度。
從LSTM及其各變體的識別結果分析,LSTM利用門限機制和內部的細胞狀態較好地實現了對信息的更新與長時積累,使3個標簽的F1值均優于傳統的RNN;GRU得益于其較為簡單的門控機制與較少的訓練參數,整體識別效果略高于LSTM;BiLSTM在LSTM的基礎上對輸入序列進行了額外的反向學習,使其對輸入序列的部分語法規則(如“I-CD”標簽前不可能出現“B-ZZ”標簽等)學習更加準確,加強了對上下文所攜帶信息的記憶,癥狀、程度、部位3類標簽的F1值分別高于LSTM 5.78%、7.53%、8.61%;帶有Peephole機制的BiLSTM識別效果最好,3類標簽的F1值分別高于LSTM 5.96%、8.29%、11.98%。
對BiLSTM-CRF與CRF的識別效果進行比較分析,發現BiLSTM有效提高了CRF在程度詞與部位詞識別上的召回能力。由于部位詞與程度詞的標簽數目較少,且在實際標注過程中二者常分散存在于癥狀詞中,常與癥狀詞相混淆,人工編寫的特征模板難以識別,同時,部位詞和程度詞的表述相對靈活,重現性差,如形容程度較輕有“偶”“稍”“稍有”“少”“微微有”“不多”“有時”等多種表達方式,部位常與多個方位詞連用,如“右脅”“胸脅”“脅部”等,CRF的特征模板具有一定局限性,只能在有限窗口內進行提取,無法根據具體語義進行靈活識別,而BiLSTM摒棄傳統特征模板,對學習內容具有長時記憶,加強了各窗口之間聯系。針對癥狀詞,CRF的識別效果略優于BiLSTM,這是由于中醫病案中癥狀名多為雙字或四字成詞,如“咳嗽”“咯痰”“疲勞乏力”,且樣本數較多,特征明顯,獨立性強,不太依賴長遠信息,用人工標注的模板即可學習到這些特征,BiLSTM額外的復雜性給癥狀詞識別帶來干擾。
對不同的嵌入粒度進行深入探究,發現隨機初始化字嵌入方法的識別效果略優于預訓練后的詞嵌入方法。考慮為中醫醫案多為白話夾雜部分文言的敘述方式,現有的詞嵌入生成工具對未能識別的詞按字切分,如“納可”被切分為“納可”,中醫術語常存在一字多義情況,如“二便”往往被切分為“二便”,導致生成的詞向量語義與醫案中詞語的實際語義差別較大,使按字嵌入的效果優于按詞嵌入,與文獻[3]研究結果一致。預訓練的字嵌入方法識別效果最好,這是因為隨機初始化方式僅局限于字在當前訓練集中的上下文信息,而預訓練方式包含字在全局范圍內的上下文信息,有效提高了模型的語義信息量。
中醫醫案是古今醫家通過不斷實踐總結的寶貴經驗,在傳承及指導臨床等方面具有舉足輕重作用。本研究構建了基于LSTM-CRF的中醫醫案癥狀命名實體抽取模型,并就不同變體算法與嵌入粒度等進行了測評,結果顯示基于字嵌入并帶有Peephole機制的雙向LSTM識別效果較好。但本研究采用的數據集樣本量較小,數據集標簽類別分布不均衡,癥狀術語未進行統一規范,存在實體間相互包含與混淆等問題。今后研究將進一步增加樣本量,設計更為精細的標簽模式,從而提高模型的識別效果。