孫曰君,劉智強,楊志豪,林鴻飛
(大連理工大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,遼寧 大連 116024)
隨著醫(yī)療信息化的快速發(fā)展,各醫(yī)院累積了海量電子病歷數(shù)據(jù),如何有效利用這些數(shù)據(jù)來提高醫(yī)療健康服務(wù)水平是當(dāng)前研究熱點之一[1]。電子病歷作為病人入院就診信息的基本載體,記錄了大量有意義的信息,這些病例信息大多以自由文本形式存在,并且由于醫(yī)生個人書寫習(xí)慣以及術(shù)語表達多樣性等因素,導(dǎo)致電子病歷中同一醫(yī)療概念會對應(yīng)多種不用的表述形式,阻礙了醫(yī)療數(shù)據(jù)的檢索、分析和利用。把形式多樣的醫(yī)療概念映射到標(biāo)準(zhǔn)的醫(yī)療術(shù)語編碼,即臨床術(shù)語標(biāo)準(zhǔn)化(clinical term normalization),對于疾病輔助診療、科研檢索、疾病分組(diagnosis related groups,DRGS)以及智能醫(yī)??刭M等研究具有重要的現(xiàn)實意義[2]。
當(dāng)前國內(nèi)的手術(shù)操作編碼主要采用的是《手術(shù)操作分類與代碼應(yīng)用指導(dǎo)手冊》(簡稱,ICD9—2017協(xié)和臨床版)。它是根據(jù)國際疾病分類臨床修訂本(第三卷)進行的本土化修訂,收納了近9 000條的手術(shù)、操作名稱,按照編碼規(guī)則,統(tǒng)一擴展為6位數(shù),編碼樣例如表1所示。
表1 ICD9—2017協(xié)和臨床版編碼樣例
盡管臨床術(shù)語的標(biāo)準(zhǔn)化編碼對于醫(yī)療行業(yè)的發(fā)展非常重要,但在實際情況中患者就診時為其分配正確的編碼,不但耗時、易出錯且成本高昂。醫(yī)療機構(gòu)的專業(yè)編碼人員會對臨床醫(yī)生的診斷進行二次編碼,編碼人員需要查閱醫(yī)生對某次臨床事件寫的診斷描述以及電子病歷中的其他信息,然后再按照編碼指導(dǎo)以人工的方式分配合適的標(biāo)準(zhǔn)編碼。這種方式總體學(xué)習(xí)成本較高,并且效率低下。因此,研究一種自動的臨床術(shù)語標(biāo)準(zhǔn)化方法對于推進醫(yī)療信息化建設(shè)以及減少編碼人員的工作量、提高工作效率具有重要的現(xiàn)實意義。
本文將臨床術(shù)語標(biāo)準(zhǔn)化問題抽象為分類問題,提出一種基于BERT的臨床術(shù)語標(biāo)準(zhǔn)化方法。首先計算待標(biāo)準(zhǔn)化的手術(shù)原詞與標(biāo)準(zhǔn)詞之間的Jaccard相似度系數(shù),生成候選標(biāo)準(zhǔn)詞集合;然后將手術(shù)原詞與候選標(biāo)準(zhǔn)詞使用BERT模型進行匹配分類,得到最終的預(yù)測結(jié)果。該方法在2019年CHIP臨床術(shù)語標(biāo)準(zhǔn)化評測數(shù)據(jù)集上準(zhǔn)確率為90.04%,表明該方法對于臨床術(shù)語標(biāo)準(zhǔn)化任務(wù)是有效的。
針對臨床術(shù)語標(biāo)準(zhǔn)化問題,已有大量醫(yī)生和技術(shù)人員進行了研究和探索,目前主要分為三類方法,即基于人工手動結(jié)合規(guī)則的方法、基于機器學(xué)習(xí)的方法和基于深度學(xué)習(xí)的方法。
寧溫馨等[3]提出一種為中文臨床診斷進行術(shù)語標(biāo)準(zhǔn)化的算法,利用分布式語義相似度計算方法計算文本語義相似度,并且基于詞語和漢字構(gòu)建詞向量來提高性能。黃嘉俊[2]提出了一種基于組合語義相似度技術(shù)進行疾病術(shù)語標(biāo)準(zhǔn)化的方法,其主要基于領(lǐng)域知識庫結(jié)合分詞、實體識別和詞向量表示技術(shù)進行臨床術(shù)語相似度計算。Larkey等[4]通過組合三種分類器:K-近鄰(K-nearest-neighbor)、相關(guān)性反饋(relevance feedback)以及貝葉斯獨立分類器(Bayesian independence classifier),對住院患者的出院記錄實現(xiàn)臨床術(shù)語自動標(biāo)準(zhǔn)化。Shi等[5]提出了一種分層神經(jīng)網(wǎng)絡(luò)模型,可以捕獲到原始詞與標(biāo)準(zhǔn)詞之間的潛在語義信息,并且設(shè)計了注意力機制來解決原始詞對應(yīng)標(biāo)準(zhǔn)詞數(shù)量和預(yù)測的標(biāo)準(zhǔn)詞數(shù)量之間的不平衡問題。趙等[1]提出了一種基于深度學(xué)習(xí)的電子病歷醫(yī)學(xué)實體標(biāo)準(zhǔn)化算法,使用Siamese網(wǎng)絡(luò)架構(gòu)和LSTM網(wǎng)絡(luò)搭建模型,采用Pairwise方法訓(xùn)練模型。張等[6]構(gòu)建了一種基于融合條目詞嵌入和注意力機制的深度學(xué)習(xí)模型,該模型首先對含有病案條目的文本進行融合條目的詞嵌入,并通過關(guān)鍵詞注意力來豐富詞級別的類別表示,然后利用詞語注意力來突出重點詞語的作用,增強文本表示,最后通過全連接神經(jīng)網(wǎng)絡(luò)分類器進行分類,輸出標(biāo)準(zhǔn)化的結(jié)果。杜等[7]提出了一種基于多尺度殘差圖卷積網(wǎng)絡(luò)的臨床術(shù)語標(biāo)準(zhǔn)化方法,該方法采用多尺度殘差網(wǎng)絡(luò)來捕獲臨床文本的不同長度的文本模式,并基于圖卷積神經(jīng)網(wǎng)絡(luò)抽取標(biāo)簽之間的層次關(guān)系,以加強標(biāo)準(zhǔn)化的能力。Xu等[8]充分利用電子病歷中的各種數(shù)據(jù)資源,結(jié)合機器學(xué)習(xí)和深度學(xué)習(xí)的優(yōu)勢,對不同類型的數(shù)據(jù)(非結(jié)構(gòu)化、半結(jié)構(gòu)化和結(jié)構(gòu)化的數(shù)據(jù))學(xué)習(xí)不同的分類器,然后集成起來,實現(xiàn)基于多模態(tài)的臨床術(shù)語標(biāo)準(zhǔn)化系統(tǒng)。
從當(dāng)前結(jié)果來看,三類方法各有所長和不足。人工加規(guī)則的方法匹配精度較高,但效率低下;機器學(xué)習(xí)的方法無法捕獲到文本中隱藏的深層語義信息;深度學(xué)習(xí)在文本建模上具有強大的表征能力,不僅可以更好地表示詞語和文本,還可以學(xué)習(xí)到詞語的上下文關(guān)系和重要詞語的信息,在文本分類領(lǐng)域展現(xiàn)出強大的優(yōu)勢。因此,深度學(xué)習(xí)成為目前研究臨床術(shù)語標(biāo)準(zhǔn)化的主流方法。
本文方法首先對文本進行規(guī)范化處理,并根據(jù)規(guī)則對原始詞對應(yīng)的標(biāo)準(zhǔn)詞數(shù)量進行判斷,將對應(yīng)多個標(biāo)準(zhǔn)詞的原始詞進行拆分。然后使用相似度算法生成原始詞對應(yīng)的候選標(biāo)準(zhǔn)詞集合,得到初步的預(yù)測結(jié)果,然后使用BERT模型對原始詞進行分類,得到最終的預(yù)測結(jié)果。其系統(tǒng)架構(gòu)如圖1所示,任務(wù)流程如圖2所示。
圖1 模型的系統(tǒng)架構(gòu)
2.1.1 數(shù)據(jù)規(guī)范化
由于文本中存在不規(guī)范的非漢字字符,需要將其中的無關(guān)字符去除,例如,“(右側(cè))顱內(nèi)硬膜下沖洗術(shù)((01.0903))”轉(zhuǎn)化為“(右側(cè))顱內(nèi)硬膜下沖洗術(shù)”。
2.1.2 基于規(guī)則的標(biāo)準(zhǔn)詞數(shù)量預(yù)測
由于手術(shù)原詞存在一個原詞對應(yīng)多個標(biāo)準(zhǔn)詞的情況,本文的處理方式是對手術(shù)原詞進行數(shù)量判斷,將包含多個標(biāo)準(zhǔn)詞的手術(shù)原詞以“+”或“、”為界進行切分,切分成多個細粒度的手術(shù)原詞,對多個細粒度原詞進行預(yù)測,將預(yù)測得到的多個標(biāo)準(zhǔn)詞通過“##”連接,作為包含多個標(biāo)準(zhǔn)詞的手術(shù)原詞的預(yù)測結(jié)果,圖2是任務(wù)流程圖。
圖2 臨床術(shù)語標(biāo)準(zhǔn)化任務(wù)流程
候選標(biāo)準(zhǔn)詞的生成方式是通過對給定的手術(shù)操作原詞與標(biāo)準(zhǔn)詞表中的每一個標(biāo)準(zhǔn)詞進行相似度計算,通過相似度值對標(biāo)準(zhǔn)詞進行打分排序得到n個候選標(biāo)準(zhǔn)詞。
中文短文本相似度計算的主流方法有:余弦相似度(cosine)、BM25相關(guān)性評分、Jaccard系數(shù)、編輯距離(minimum edit distance,MED)、Dice距離等。
余弦相似度是通過計算兩個向量之間夾角的余弦值來衡量相似度大小,夾角越小,相似度越高。假設(shè)V1和V2是兩個n維向量,它們之間的余弦相似度計算如式(1)所示。
(1)
BM25相關(guān)性評分的主要原理是:對于句子s1先進行分詞,生成詞列表[wi],對于要與句子s1進行比較的句子s2,計算每個詞wi與s2的相關(guān)性得分,最后將wi相對于s2的相關(guān)性得分進行加權(quán)求和,計算方法如式(2)所示。
式(2)中的idf(wi)為詞wi的idf值,fi為詞wi在句子s2中出現(xiàn)的頻率,k1與b為調(diào)節(jié)因子,通常分別為2和0.75,len(s2)為句子s2的長度,avgsl是所有句子的平均長度。
Jaccard系數(shù)是一個用于衡量兩個集合相似程度的度量標(biāo)準(zhǔn),對于給定的兩個集合A,B,它們之間的Jaccard系數(shù)計算如式(3)所示。
(3)
基于編輯距離(MED)的相似度算法計算方法,如式(4)所示。
(4)
其中,s1和s2為待計算的兩個字符串,len(s1)和len(s2)分別是字符串s1和s2的字符個數(shù),d(s1,s2)是s1和的s2編輯距離,即將s1變成s2的最小操作次數(shù),允許的編輯操作為替換一個字符、插入一個字符、刪除一個字符3種。
Dice距離用于度量兩個集合的相似性,因為可以把字符串理解為一種集合,因此Dice距離也會用于度量字符串的相似性。對于給定集合C和D,它們之間的Dice距離計算如式(5)所示。
(5)
BERT[9]是Google在2018年推出的預(yù)訓(xùn)練模型,在多項自然語言處理任務(wù)上取得了不凡的表現(xiàn),其模型結(jié)構(gòu)如圖3所示。
圖3 BERT模型結(jié)構(gòu)圖
BERT模型使用了雙向Transformer的Encoder作為基本組成單元,BERT的這種結(jié)構(gòu)能夠聯(lián)合所有層中的左右兩個方向的上下文信息進行訓(xùn)練。此外,BERT模型使用的Transformer基于多頭注意力機制(muli-head attention)。多頭注意力機制可以幫助模型捕獲更多的語義特征,將各個注意力頭單獨進行計算,然后將其結(jié)果進行拼接,得到最終的結(jié)果。BERT是通過大量未標(biāo)注的百科文本語料進行訓(xùn)練得到的預(yù)訓(xùn)練語言模型,可針對特定目標(biāo)任務(wù)對BERT模型進行微調(diào)。
候選標(biāo)準(zhǔn)詞匹配的過程是將手術(shù)原詞與候選標(biāo)準(zhǔn)詞用[SEP]分隔符隔開作為BERT的輸入,如圖1中候選標(biāo)準(zhǔn)詞匹配部分所示,然后取BERT輸出中CLS位置對應(yīng)的向量作為下一個全連接層的輸入,使用softmax函數(shù)進行激活,把手術(shù)原詞與候選標(biāo)準(zhǔn)詞語義相似度計算問題抽象為二分類問題。
本文使用CHIP2019臨床術(shù)語標(biāo)準(zhǔn)化評測任務(wù)的數(shù)據(jù)集進行實驗,該評測是針對中文電子病歷挖掘出的真實手術(shù)原詞進行語義標(biāo)準(zhǔn)化,所有手術(shù)原詞均來自于真實醫(yī)療數(shù)據(jù),以《ICD9-2017版協(xié)和臨床版》手術(shù)詞表進行了標(biāo)注。實驗數(shù)據(jù)統(tǒng)計如表2所示。
表2 實驗數(shù)據(jù)統(tǒng)計
實驗數(shù)據(jù)樣例如表3所示,對于一個手術(shù)原詞包含多個標(biāo)準(zhǔn)詞的情況,標(biāo)準(zhǔn)詞之間用“##”連接。
表3 實驗數(shù)據(jù)樣例
候選標(biāo)準(zhǔn)詞生成實驗采用的是召回率(Recall)作為評價指標(biāo),其計算如式(6)所示。
其中,A和B分別是待預(yù)測原詞集合和候選標(biāo)準(zhǔn)詞集合。
分類實驗在數(shù)據(jù)集上的預(yù)測結(jié)果有以下四種情況:模型把正例預(yù)測為正例的情況(true positive,TP);模型把負(fù)例預(yù)測為正例的情況(false positive,F(xiàn)P);模型把負(fù)例預(yù)測為負(fù)例的情況(true negative,TN);模型把正例預(yù)測為負(fù)例的情況(false negative,F(xiàn)N)。
對于原詞分類實驗采用的評價指標(biāo)是準(zhǔn)確率(accuracy,A)、精確率(precision,P)、召回率(recall,R)和F1值。其計算如式(7)~式(10)所示。
其中,pre_T為預(yù)測正確的手術(shù)原詞加手術(shù)標(biāo)準(zhǔn)詞的組合數(shù)量,N為待預(yù)測手術(shù)原詞的總數(shù)。準(zhǔn)確率是CHIP2019臨床術(shù)語標(biāo)準(zhǔn)化評測任務(wù)使用的評價指標(biāo)。
3.3.1 候選標(biāo)準(zhǔn)詞生成實驗
針對圖1中的候選標(biāo)準(zhǔn)詞生成部分,為了對比分析2.2節(jié)中不同相似度算法對候選標(biāo)準(zhǔn)詞生成效果的影響,本文設(shè)計實現(xiàn)了五種方法進行候選標(biāo)準(zhǔn)詞的生成,實驗結(jié)果如表4所示。
表4 不同方法的候選詞生成Top30結(jié)果比較
從表4的結(jié)果可以得到以下結(jié)論:
(1) 基于Jaccard系數(shù)的候選標(biāo)準(zhǔn)詞生成效果優(yōu)于其他四種方法,有助于提高候選標(biāo)準(zhǔn)詞生成的質(zhì)量。
(2) BM25算法依賴于精準(zhǔn)的醫(yī)學(xué)分詞,Cosine算法依賴于高質(zhì)量的詞向量,本文實驗采用的是通用的分詞工具和詞向量,沒有進行人工特征的構(gòu)建,所以導(dǎo)致二者的效果較差,并且二者的計算復(fù)雜度明顯高于其他三種方法。
為了充分利用手術(shù)原詞中隱藏的特征,本文將訓(xùn)練集中的手術(shù)原詞作為偽標(biāo)準(zhǔn)詞,對于待標(biāo)準(zhǔn)化的手術(shù)原詞,在偽標(biāo)準(zhǔn)詞中生成候選數(shù)據(jù),將該數(shù)據(jù)對應(yīng)的標(biāo)準(zhǔn)詞作為候選標(biāo)準(zhǔn)詞。針對候選標(biāo)準(zhǔn)詞的生成范圍(召回范圍),本文設(shè)計了四個實驗,召回范圍分別為標(biāo)準(zhǔn)詞、偽標(biāo)準(zhǔn)詞、標(biāo)準(zhǔn)詞&偽標(biāo)準(zhǔn)詞和標(biāo)準(zhǔn)詞+偽標(biāo)準(zhǔn)詞。實驗結(jié)果如表5所示。
表5 不同召回范圍的候選詞生成結(jié)果比較
表5中,“標(biāo)準(zhǔn)詞&偽標(biāo)準(zhǔn)詞”代表將兩個詞表融為一體進行相似度排序生成候選標(biāo)準(zhǔn)詞,“標(biāo)準(zhǔn)詞+偽標(biāo)準(zhǔn)詞”代表在各自詞表中進行相似度排序,將生成的候選標(biāo)準(zhǔn)詞融合在一起。從表5可以得到以下結(jié)論:
偽標(biāo)準(zhǔn)詞有助于候選標(biāo)準(zhǔn)詞的生成效果,并且“標(biāo)準(zhǔn)詞+偽標(biāo)準(zhǔn)詞”的召回范圍適合于候選標(biāo)準(zhǔn)詞的生成。
Top30的召回效果達到了較高的水平,因此本文采用原始詞的Top30候選標(biāo)準(zhǔn)詞集合作為候選標(biāo)準(zhǔn)詞匹配的輸入。
Top30內(nèi)未召回準(zhǔn)確標(biāo)準(zhǔn)詞的手術(shù)原詞樣例如表6所示。從表6可以看出,對于復(fù)雜的手術(shù)原詞使用單純的字符相似度算法進行召回,忽略了手術(shù)描述的語義信息,導(dǎo)致召回失敗。
表6 未召回標(biāo)準(zhǔn)詞的手術(shù)原詞樣例
3.3.2 候選標(biāo)準(zhǔn)詞匹配訓(xùn)練集構(gòu)造
候選標(biāo)準(zhǔn)詞匹配的過程是基于BERT模型的0-1分類任務(wù),需要構(gòu)建包含正負(fù)例的訓(xùn)練集用于訓(xùn)練模型。
正例:<原詞i,標(biāo)準(zhǔn)詞i,1>
構(gòu)建負(fù)例:原詞i與標(biāo)準(zhǔn)詞詞表中的每一個標(biāo)準(zhǔn)詞計算Jaccard相似度系數(shù),取相似度值的Top20作為候選詞表,將標(biāo)準(zhǔn)詞i從候選詞表中去除,剩下的候選詞用作構(gòu)建負(fù)例。
負(fù)例:<原詞i,標(biāo)準(zhǔn)詞j,0>
3.3.3 參數(shù)設(shè)置
本文采用的是Google 提供的 BERT-Base 模型,詳細訓(xùn)練參數(shù)如表7所示。
表7 BERT模型參數(shù)設(shè)置
3.3.4 候選標(biāo)準(zhǔn)詞匹配實驗
針對訓(xùn)練集中正負(fù)例1∶19的不平衡,本文設(shè)計了四種正負(fù)例比例進行實驗,實驗結(jié)果如表8所示。
表8 不同正負(fù)例比例實驗結(jié)果比較
從表8的實驗結(jié)果可以得出結(jié)論:10倍正例加負(fù)例的組合,有助于提高本文方法的性能。
針對圖1中的候選詞打分部分,為了對比分析不同神經(jīng)網(wǎng)絡(luò)模型的性能,本文選取并實現(xiàn)了以下六種模型進行對比實驗。
(1) CDSSM[10]:通過卷積神經(jīng)網(wǎng)絡(luò)來捕獲上下文信息,根據(jù)提取到的特征進行手術(shù)原詞分類。
(2) MVLSTM[11]:基于雙向LSTM網(wǎng)絡(luò)的多語義模型,該模型能夠有效提取句子中的重要特征,根據(jù)提取到的特征進行手術(shù)原詞分類。
(3) Match_pyramid[12]:將文本使用相似度計算構(gòu)造相似度矩陣,然后使用卷積網(wǎng)絡(luò)來提取特征,根據(jù)提取到的特征進行手術(shù)原詞分類。
(4) BiMPM[13]:采用了matching-aggregation的結(jié)構(gòu),把兩個句子之間的單元做相似度計算,最后經(jīng)過全連接層與softamx層得到手術(shù)原詞分類結(jié)果;
(5) DRCN[14]:在特征提取階段結(jié)合了DenseNet的連接策略與注意力機制,在interaction階段,也采取了多樣化的交互策略來提取特征,根據(jù)提取到的特征進行手術(shù)原詞分類。
(6) ESIM[15]:通過使用句子間的注意力機制(intra-sentence attention)來提取特征,根據(jù)提取到的特征進行手術(shù)原詞分類。
本文使用了上述六種模型和BERT模型進行實驗,實驗結(jié)果如表9所示。
表9 不同方法的實驗結(jié)果比較
從表9的實驗結(jié)果可以看出本文方法的實驗結(jié)果均優(yōu)于其他神經(jīng)網(wǎng)絡(luò)的實驗結(jié)果,表明本文方法可以提高臨床術(shù)語標(biāo)準(zhǔn)化的效果。
3.3.5 結(jié)果分析
對于本文方法的預(yù)測結(jié)果,選取了3個預(yù)測正確和3個預(yù)測錯誤的樣例,如表10所示。
表10 預(yù)測結(jié)果樣例
續(xù)表
從表10的樣例可以看出,手術(shù)原詞中會包含“全麻下”和“ORIF”這種醫(yī)生使用的描述,對于標(biāo)準(zhǔn)化的過程會產(chǎn)生干擾。從預(yù)測正確的樣例來看,本文方法可以捕獲到手術(shù)原詞中的重點詞匯,從而對不規(guī)范的手術(shù)原詞預(yù)測出準(zhǔn)確的標(biāo)準(zhǔn)詞。從表10的預(yù)測錯誤樣例可以得到以下結(jié)論:對于由“部位+術(shù)式+入路+疾病性質(zhì)”組成的手術(shù)名稱,在使用本文的方法進行標(biāo)準(zhǔn)化時,沒有充分考慮到部位、術(shù)式、入路和疾病性質(zhì)的匹配,導(dǎo)致預(yù)測結(jié)果錯誤。沒有充分融合“部位、術(shù)式、入路和疾病性質(zhì)”這四類語義特征是本文方法的缺陷,這也是本文方法可以繼續(xù)改進和提升之處。
臨床術(shù)語標(biāo)準(zhǔn)化任務(wù)旨在將電子病歷中包含的醫(yī)療概念映射到標(biāo)準(zhǔn)的編碼,對醫(yī)療信息化的建設(shè)具有重要的意義。
本文提出了一種基于BERT的臨床術(shù)語標(biāo)準(zhǔn)化方法,將臨床術(shù)語標(biāo)準(zhǔn)化任務(wù)轉(zhuǎn)化為二分類問題。首先計算待標(biāo)準(zhǔn)化的手術(shù)原詞與標(biāo)準(zhǔn)詞之間的 Jaccard 相似度系數(shù),生成候選標(biāo)準(zhǔn)詞集合,然后將手術(shù)原詞與候選標(biāo)準(zhǔn)詞使用BERT模型進行匹配分類,得到最終的預(yù)測結(jié)果。本文方法避免了人工構(gòu)建特征的繁瑣,在CHIP2019臨床術(shù)語標(biāo)準(zhǔn)化評測數(shù)據(jù)集上準(zhǔn)確率為90.04%,表明本文方法對臨床術(shù)語標(biāo)準(zhǔn)化任務(wù)是有效的。
另一方面,本文方法沒有充分利用醫(yī)療術(shù)語的構(gòu)成信息,導(dǎo)致對復(fù)雜的手術(shù)原詞預(yù)測錯誤。未來可以從醫(yī)療術(shù)語的構(gòu)成特點入手,例如,增加“部位、術(shù)式、入路和疾病性質(zhì)”特征,提高本文方法的預(yù)測準(zhǔn)確率。