張述睿,張伯政,張福鑫,楊萬春
1.中國人民大學 統計學院,北京100872
2.山東眾陽健康科技集團有限公司,濟南250101
3.山東交通學院 理學院,濟南250357
近年來,文本的多標簽分類在自然語言處理領域中受到持續關注。在多標簽分類中,一段文本可能同時具有多個對應的標簽,例如一段文本可能表現出兩種情感,一段新聞可能具有幾種主題等,同時標簽之間通常有一定的依賴關系。當標簽空間變得非常龐大的時候,用深度學習模型進行文本分類就面臨很大挑戰。這主要是因為使用循環神經網絡GRU[1]、LSTM[2-3]和多層感知機進行分類時,每個分類標簽相互獨立而無法建立標簽之間的依賴關系。
在醫療臨床中,電子病歷的文本信息充斥著各種醫學術語,且表述晦澀和含糊,因此對電子病歷中的文本進行分類是很有挑戰任務。同時由于很多深度學習模型的運作原理都難以解釋,導致了很多醫學專業人士對此類方法的不信任。陳志豪等人[4]提出使用注意力機制來建立醫療問題和答案的相互影響,Mullenbach等人[5]采用卷積神經網絡來提取病例文本中的語義信息,從而預測ICD疾病分類,但這兩種方法并沒有考慮到標簽之間的依賴關系。檀何鳳等人[6]提出了一種基于標簽相關性的K近鄰多標簽分類算法,陳文實等人[7]提出使用主題模型與LSTM分別對文本的全局特征和局部特征建模,李鋒等人[8]通過結合標簽特征和局部標簽相關性來豐富標簽信息,但這三種方法沒有考慮到在結構化標簽空間或在超大標簽空間中的應用。Steinberg等人[9]使用貝葉斯網絡對標簽的本體結構建模來預測ICD疾病分類,但是根據神經網絡反向傳播的特性,概率連乘的反傳并不能讓模型學到標簽之間的依賴關系,Xie等人[10]提出使用樹形LSTM的方法對結構化標簽空間建模來預測ICD編碼,但是樹形LSTM遞歸的計算方式在超大標簽空間中的計算代價非常高。圖神經網絡[11]是一類基于深度學習處理圖域信息的方法,由于圖神經網絡有著很好的計算性能和可解釋性[12],因此其正受到越來越多的關注和應用。
本文結合圖神經網絡、圖注意力網絡[13]和注意力機制[14],提出了一種解決超大標簽空間中多標簽分類問題的方法,并應用到國際疾病分類[15]中。本文提出的方法包括:(1)提出了一種面向ICD疾病分類的端到端深度學習方法。(2)采用改進的圖注意力網絡對標簽空間建模,將標簽空間的結構信息融入到模型中。(3)提出了一種基于注意力重構的編碼匹配方法,其對大標簽空間有著良好的適應性和可擴展性。通過與其他方法的實驗對比,驗證了本文所提方法的良好分類精度,在含有3 792種標簽的數據集中,前五種的精確率達到了0.92。
本文解決的問題是國際疾病分類中的手術與操作分類(ICD-9-CM3)[16],以下簡稱為ICD手術分類。每一種ICD手術分類都對應著一條由數字和字母組成的編碼,以下簡稱為ICD手術編碼。ICD手術分類是醫院病案信息加工、檢索、匯總、統計的主要工具,在醫療、研究、教學等方面發揮重要作用。ICD手術分類是由專業編碼員負責的,是一項非常繁瑣的工作任務。編碼員首先查閱醫生錄入的手術描述,之后如果有需要的話,還要查閱病人電子病歷中的某些內容,然后人工查閱分類向導,將醫生錄入的手術描述匹配到一個或若干個最符合的ICD手術編碼條目上。在臨床中,醫生錄入的手術描述經常使用縮寫和簡稱,這使手術描述的含義變得模糊,編碼員經常因為這種情況犯一些主觀錯誤。
數據集有典型的大標簽空間和多標簽的特點,并且標簽空間擁有層級結構,標簽與標簽之間有相互關系和依賴。本文中使用的數據集是從30余家醫院的臨床數據中提取的,并經過人工精細校對,其中包含60 000條數據,每條數據由醫生錄入的手術描述和編碼員匹配好的ICD手術編碼條目組成。醫生錄入的手術描述是對手術類型或方式的簡短陳述,一條手術描述可能包含一個或多個手術操作,可對應一條或多條ICD手術編碼條目。在實際的分類工作中,編碼員主要是靠手術描述來進行ICD手術分類,所以在本文中僅使用手術描述來進行ICD手術編碼條目的匹配。
例1數據集展示
手術描述1:右側背部脂肪瘤切除術
對應的ICD手術編碼條目:
86.3x03皮下組織病損切除術
手術描述2:C6/7椎間盤微創消融術+盤內臭氧注射術
對應的ICD手術編碼條目:
80.5900x001椎間盤射頻消融術
80.5200椎間盤化學溶解術
如例1所示,每一條手術描述對應一個或多個最相關的ICD手術編碼條目,其由一串數字和字母組成的編碼和與之對應的標準編碼描述組成,以下簡稱ICD手術編碼條目中的標準編碼描述為編碼描述。
圖1所示的是ICD手術分類的層級結構,層級結構中每一個節點都是由一串數字和字母組成的編碼和與之對應的編碼描述組成的。ICD手術分類含有5個層級,分別是大章節(18個分類)、小章節(100個分類)、類目(890個分類)、亞目(3 755個分類)、細目(9 100個分類),共含有13 863個分類。從大章節層級到細目層級,是一個不斷細化分類的過程。ICD手術分類的層級結構對臨床ICD手術分類工作有重要意義,編碼員在實際工作中,需要先根據手術描述中各種特征(如手術部位、針對的疾病、不同的手術方式等)通過查找目錄確定一個粗略的分類尋找范圍,也就是先確定章節、類目等較淺的層級的分類,再向下細分尋找。如圖1所示,編碼01.0顱穿刺指的是一個較大的分類范圍,而它的下級節點01.020 0和01.090 0是指的不同的穿刺方式,是更細化的分類,上下級節點之間有著很強的依賴關系。為了充分利用標簽空間的特性和標簽之間的依賴關系,在本文中對標簽空間進行了建模,并使用提出的方法將手術描述匹配到亞目層級和細目層級。

圖1 ICD手術分類的層級結構Fig.1 Hierarchy nature of ICD procedure coding system
亞目層級有3 755個分類,細目層級有9 100個分類,但是在臨床中,由于一些手術操作在臨床中非常罕見,所以有很多分類并沒有在數據集中出現,本文只對數據集中出現過的標簽做分類研究,數據集中實際出現了2 237個亞目分類,3 792個細目分類。
在本文中,將ICD手術分類問題看作多標簽分類問題,提出了一種基于深度學習的端到端模型作為解決方案。首先使用圖注意力網絡對標簽空間進行建模,之后使用注意力機制重構的方法使手術描述和ICD編碼之間的語義信息得到交互,最后使用二元分類器得到對每一條ICD手術編碼條目的預測結果,整體模型結構如圖2所示。

圖2 面向ICD手術分類的端到端模型Fig.2 End-to-end model for automated ICD procedure coding
本文使用了BiLSTM(雙向長短期記憶網絡)和BERT[17]作為語義層的模型,對自然語言序列進行向量化表達。transformer[18]模型提出使用多頭注意力機制對序列進行建模,不再依賴序列的方向逐次計算,實現了對序列的并行化處理。基于transformer的模型因為其優秀的序列建模性能在自然語言處理領域被廣泛應用[19]。BERT作為基于transformer的語言模型,提出先使用基礎語料進行預訓練,然后再適應下游任務。LSTM是被廣泛使用的循環神經網絡結構,其特點在于在序列建模中,將序列的每一時刻的信息依次輸入到LSTM單元中,通過三種門控機制控制當前狀態和記憶歷史信息,并克服了RNN反向傳播時梯度爆炸和梯度消失的問題,且Khandelwal等人[20]的研究證實,LSTM對50字左右的序列有很好的辨識能力,而本文使用的數據集內醫生錄入的手術描述都比較簡短,平均長度為13個字,而編碼描述的平均長度為10個字,所以LSTM可很好地勝任當前的任務。
2.1.1 BiLSTM語義層
首先通過醫學教科書語料預訓練的字向量[21](Word2vec)映射手術描述和ICD手術編碼描述中的每一個字到一個向量,一段手術描述或一段ICD手術編碼描述變成一串字向量序列。

使用BiLSTM對上下文語義信息進行建模,通過在字向量序列上應用BiLSTM模型,可以將自然語言序列中的每一個字向量,結合其上下文,形成適應于本文字序列的,隱含的語義表達,公式表示為:

公式(1)、(2)中,由于BiLSTM通過正向和反向各得到一層隱狀態的輸出,所以隱狀態的維度是2d,MLP表示多層感知機層,將2d的維度映射為d。[ ]:-1指的是取BiLSTM返回的隱狀態序列中最后一個時刻的隱狀態。通過上面的操作,得到的q是經BiLSTM建模后的手術描述隱含語義的向量表達,q∈?||text×d,hi是第i條編碼描述的向量表達,hi∈?d。
2.1.2 BERT語義層
首先使用醫學教科書語料對BERT模型進行預訓練,之后使用BERT模型獲取手術描述和手術編碼的向量表達,公式表示為:

公式(3)、(4)中,ztext表示一條手術描述的字索引,表示第i條編碼描述的字索引。字索引是將文本中每個字用一個整數來表示。輸入到BERT模型的字索引的構成為“[CLS]”+文本+“[SEP]”,“[CLS]”是一個特殊索引,BERT會在“[CLS]”索引的位置輸出一個向量,用來表示整句的隱含語義信息。對于醫生錄入的手術描述,保留BERT輸出的整個向量序列,q∈?||text×d。對于第i條編碼描述,只取“[CLS]”索引對應的向量,hi∈?d。
ICD手術分類具有層級結構,分為5個層級,如圖1所示,分別是大章節、小章節、類目、亞目、細目。從大章節到細目的層次,是不斷細化分類的過程,層次與層次之間有著密切的關系。將ICD手術編碼描述按層級結構融入模型中,使模型得到各層級之間的依賴關系,可增加模型的分類能力。
例如圖3中,“03.0(類目)椎管結構探查和減壓”的上級節點有“03(小章節)脊髓和椎管結構的手術”和“01~05(大章節)神經系統手術”,把上級節點的關鍵信息,如“神經系統”“脊髓和椎管結構”融入到下級節點中,使下級節點含有ICD手術分類層次的上下文信息,這符合臨床中編碼員在分類過程中的思維方式。同樣地,把下級節點的信息融入到上級節點,同樣可以增強上級節點所含有的信息量,增加模型的判斷能力。

圖3 ICD手術分類的上下層級節點關系Fig.3 Dependency between nodes at different levels of ICD procedure coding system
本文將每一條ICD手術編碼條目叫做節點,上級節點和下級節點之間用邊連接,如圖1中,01.0(類目)顱穿刺的下級節點的編碼是01.0200和01.0900,01.0200的上級節點編碼是01.0。根據邊的連接方向可使ICD手術分類的標簽空間形成有向圖或無向圖結構,再使用圖注意力網絡對標簽空間建模。本文提出在圖注意力網絡建模中構建以下三種不同的圖結構。
up圖:所有邊由下級節點指向其上級節點,并包括每個節點自身形成的環邊,形成由亞目到大章節方向的有向圖結構。
down圖:所有邊由上級節點指向其下級節點,并包括每個節點自身形成的環邊,形成由大章節到亞目方向的有向圖結構。
undi rect ed圖:結合up圖和down圖形成不區分方向的無向圖結構。
在完成上述三種圖結構的構建之后,使用圖注意力網絡進行建模,即通過3種圖結構分別進行注意力計算,最后將計算的結果級聯。
首先進行圖注意力權重的計算。

式(5)中,αij是一個標量,表示第i個節點與第j個節點的注意力權重。a是一條由可訓練參數組成的向量,a∈?2d。T表示向量或矩陣轉置,⊕表示矩陣級聯。Ni表示與i節點相鄰的且邊的方向指向i的所有節點的集合,包括i節點自身。leakyReLU是帶泄露線性整流函數。W∈?d′×d是一個可訓練的權重矩陣。所有節點使用相同的權重矩陣進行計算,用來獲取更強的特征表達能力。
得到注意力權重后,通過相鄰節點線性加權求和的方法,重構圖結構中的每一個節點。在注意力重構過程中,為了使模型在高維度語義空間內捕捉到更豐富的特征,使用了文獻[18]中提出的多頭注意力機制,即把注意力重構的過程重復若干次,之后把所有的結果進行級聯。



通過對模型輸出的注意力權重βti進行可視化,可發現模型從手術描述中篩選出匹配到一條ICD手術編碼的線索,同時過濾掉與這條ICD手術編碼相關程度較低的信息。例2中對注意力權重進行了可視化并在下方坐標軸標出注意力權重的值βti,黃色代表較高注意力權重,綠色代表中等注意力權重,深紫色代表低注意力權重。圖4和圖5分別對單標簽和多標簽兩種情況的注意力權重進行了可視化。
例2注意力權重可視化
手術描述1:右側硬膜外血腫鉆孔引流術(圖4)

圖4 注意力權重的可視化(1)Fig.4 Attention weights visualization(1)
手術描述2:白內障囊外摘除并人工晶體植入術(圖5)

圖5 注意力權重的可視化(2)Fig.5 Attention weights visualization(2)
手術描述3:經腹右側輸卵管切除術加左側輸卵管結扎術(圖6)
例2中,手術描述3“經腹右側輸卵管切除術加左側輸卵管結扎術”與ICD手術編碼條目66.4x00和66.9200相匹配。圖6上半部分展示的是該條手術描述與ICD手術編碼條目66.4x00的注意力權重向量。通過觀察可發現手術描述中與ICD手術編碼條目66.4x00“單側輸卵管全部切除術”相關的“經腹右側輸卵管切除術”所處部分的注意力權重較高,而其余不相關部分的注意力權重較低。經過統計,“經腹右側輸卵管切除術”的注意力權重之和約為0.91,而“加左側輸卵管結扎術”的注意力權重之和約為0.09。圖6下半部分展示的是該條手術描述與ICD手術編碼條目66.9200的注意力權重向量。可見“左側輸卵管結扎術”八個字所處部分的注意力權重較高,而與該編碼關聯度低的部分的注意力權重較低。經過統計,“經腹右側輸卵管切除術加”的注意力權重之和約為0.25,而“左側輸卵管結扎術”這九個字的注意力權重之和約為0.74。在使用手術描述對上述兩個ICD編碼條目進行分類的過程中,有關文字區域與無關文字區域的權重之比平均達到4∶1以上。證明模型能夠通過學習,明確手術描述中與每個ICD編碼條目高度相關的部分,過濾低相關部分,提升了分類時中間數據的信噪比,且與人類的閱讀方式和判斷原則基本一致。

圖6 注意力權重的可視化(3)Fig.6 Attention weights visualization(3)
在模型訓練中,通過最小化交叉熵損失函數,可以得到模型的參數,損失函數的定義為:

公式中,CE是交叉熵損失函數,yi是正確標記的分類,當手術描述對應的標記是第i條ICD編碼時yi=1,其他情況下yi=0。N是所有在標簽空間中的ICD手術編碼的數量,也就是標簽的個數。
本文使用的數據集來自臨床。在臨床中,有些手術種類很普遍,也有一些手術種類非常少見,導致數據集中有很多標簽類別出現在正樣本中的次數非常少,所以數據集中標簽類別的分布屬于偏態長尾分布。文獻[9]針對在大標簽空間中且標簽分布不均的情況,提出使用標簽空間的本體結構對標簽的概率進行因子分解,并應用到了ICD疾病分類中,小幅提升了分類性能,公式表達為:

式(12)中,hi表示第i條手術編碼條目,x表示醫生錄入的手術描述文本,ancestors(hi)表示hi的所有祖先節點,parents(h?i)表示h?i的父級節點。公式表示每一個分類條目的輸出的概率,是由它本身的概率連乘它所有上級節點的概率得到。通過該方法,可以利用標簽空間的結構讓低頻率標簽和高頻率標簽之間的概率信息得到交互。本文在模型預測的過程中,從ICD手術分類層級結構的大章節向細目的方向迭代地搜索。每層只保留前k個概率最大的ICD手術編碼條目,直到達到需要預測的層級。在層次搜索的過程中每一層只保留前k個概率最大的條目,這樣就避免了低概率節點的無用計算,增加模型預測速度。
在實驗中,采用的數據集含有60 000條數據,其中70%作為訓練集,10%作為驗證集,20%作為測試集。在驗證集上調整超參數,用測試集進行模型評估。在語義層使用了維度為200的BiLSTM和文獻[17]中的BERTBASE模型。在圖注意力網絡建模的多頭注意力機制部分,使用的注意力頭的數量分別為2、4、8、16。使用Adam優化器[22]對公式進行優化,初始學習率被設置為0.001。在語義層后使用dropout方法[23]防止模型過擬合,初始dropout率被設置為0.3,在每個mini batch的計算過程中,只進行一次圖注意力網絡的正向傳播計算,然后用這一次正向傳播計算輸出的編碼描述的隱藏表達進行當前mini batch內的計算步驟。
本文在實驗中采用的評估指標分別是P@k、macro F1和加權平均的F1值(wei ghted F1)。P@k又可稱為topk精確率或precision atk,P@k的定義為:

式(13)中,1是指示函數,Y是正確標注的ICD編碼所對應的索引的集合,rank()l是模型輸出的第l個概率最大的ICD手術編碼條目的索引。P@k評估指標指的是,模型預測的前k個概率最大的結果里面含有正確標注的標簽的比例。
F1值通常在二分類問題上作為評估指標,在對本文實驗結果的評估中,先把每種標簽的分類結果看作一個二分類問題并求出F1值:

式(14)中,precision是精確率,recall是召回率。在多標簽分類問題上,需要對所有標簽的F1值通過一些方法進行平均,本文中使用了macro F1和加權平均的F1值(weighted F1)這兩種方法進行平均。macro F1的定義為:

式(15)中,S表示所有標簽種類的集合,s是其中的一種標簽。N是標簽類別的數量,ys和y?s分別表示驗證集中標記的標簽為s的集合和模型對應的預測結果。macro F1的計算過程是求出所有標簽類別的F1值并直接求平均值,所以驗證集中所有標簽類別無論出現的次數多少獲得的權重都是相同的。加權平均的F1值(weighted F1)的定義為:式(16)中,M為驗證集的總數量, ||ys表示驗證集中標記的標簽類別為s的個數,在加權平均的F1值的計算過程中,出現次數比較多的標簽會獲得更高權重。

在對比實驗中,對ICD手術分類亞目層級和細目層級的預測結果分別進行評估。所有的評估都是在劃分出的20%測試集上進行的,測試集含有12 000條數據,共對8種方法進行實驗并評估。在ICD手術分類中,亞目層級有2 237個分類可用,細目層級有3 792個分類可用。實驗分為兩個階段,第一階段所有方法都分別使用BiLSTM語義層和BERTBASE語義層進行實現,并設圖注意力網絡中注意力機制頭的個數(以下簡稱GAT頭數)為4。在進行完第一階段的實驗和評估之后,在表現比較好的方法上調整GAT頭數,分別以GAT頭數為2、4、8、16進行實驗并進行評估。實驗的方法包括:(1)noGAT,MLP在這個嘗試中直接移除圖注意力網絡(GAT)和注意力重構的過程,在語義層之后直接通過MLP做分類預測。(2)Steinberg E et al.通過文獻[9]中提出的,在語義層之后使用標簽空間的本體結構對標簽的概率進行因子分解做分類預測。(3)CAML,該方法是文獻[5]中提出的,直接在字向量序列上使用卷積神經網絡和注意力機制做分類預測,不包含標簽空間建模和語義層。(4)GAT,MLP只使用無向圖的GAT對標簽空間建模,并直接用MLP做分類預測。(5)GAT,Att使用無向圖的GAT對標簽空間建模,保留手術描述注意力重構的過程。(6)treeLSTM,Att通過文獻[10]中的方法使用雙向樹形LSTM的方式對標簽空間建模,并使用本文中提出的基于注意力重構的分類器進行分類預測。(7)catGAT,Att通過3種不同方向的圖結構使用圖注意力網絡對標簽空間進行建模,之后使用基于注意力重構的分類器進行分類預測。(8)catGAT,AttHS,在catGAT,ATT方法的基礎上,在模型預測時使用層次搜索的方法。
在實驗中,除了不包含語義層的CAML方法,其他每種方法都使用兩種語義層進行對比評估。通過圖7和圖8可看出,BERTBASE語義層在各項評估標準上的整體表現比BiLSTM語義層略微占優勢,其中在沒有標簽空間建模和注意力重構的方法上優勢較明顯,但在本文提出的方法catGAT,AttHS上,使用BERTBASE語義層帶來提升并不突出。從表1、表2中可看出,使用圖注意力網絡(GAT)和基于注意力重構的分類器大幅提高了模型在P@k評估指標上的表現。在表3、表4中,macro F1值和加權平均的F1值(weighted F1)差別比較大,這是由于數據集中標簽類別的分布屬于偏態分布,有些種類的手術在臨床中很普遍,也有一些手術非常少見。沒有使用標簽空間建模的noGAT,MLP、Steinberg E et al.和CAML方法的macro F1值比較低,說明標簽空間建模對應對數據集標簽分布不均衡的情況有重要意義。

圖7 不同語義層細目P@5實驗結果對比Fig.7 Performance in terms of detailed entriesofdifferent semantic layers(P@5)

圖8 不同語義層細目macro F1實驗結果對比Fig.8 Performance in terms of detailed entriesof different semantic layers(F1)

表1 BiLSTM語義層實驗結果對比(P@k)Table 1 Performance of BiLSTM semantic layer(P@k)

表2 其他語義層實驗結果對比(P@k)Table 2 Performance of other semantic layer(P@k)

表3 BiLSTM語義層實驗結果對比(F1值)Table 3 Performance of BiLSTM semantic layer(F1 score)

表4 其他語義層實驗結果對比(F1值)Table 4 Performance of other semantic layer(F1 score)
在進行完第一階段的實驗和評估之后,在表現最佳的方法catGAT,AttHS的基礎上,調整GAT頭數,并評估在細目macro F1和細目P@5上的表現差異。如表5和圖9所示,將GAT頭數調整為2之后,在上述兩項評估指標上都有略微下降,GAT頭數調整為8之后,較GAT頭數為4時的變化并不明顯,而調整成16后在上述兩相評估指標上都有一定程度下降,可見GAT頭數的增大使得模型參數冗余并帶來了不利影響。綜上所述,本文提出的catGAT,AttHS方法,使用BERTBASE語義層,使用8個GAT頭,在亞目和細目P@k、macro F1值和加權平均的F1值(weighted F1)這三種評估指標上都取得了最佳的成績。

表5 GAT注意力機制頭數實驗結果對比Table 5 Performance of different numbers of GAT attention heads

圖9 GAT注意力機制頭數實驗結果對比Fig.9 Performance of different numbers of GAT attention heads
本文提出了一種面向ICD手術分類的端到端深度學習方法。該方法主要采用了標簽空間建模、注意力重構和層次搜索。在標簽空間建模和層次搜索過程中,將標簽空間的結構信息融入到模型當中。基于注意力重構的分類器能夠在文本中尋找與標簽相關的線索來進行分類。所提出的方法可應用于標簽空間有本體結構或層級結構的數據集上,并且基于注意力重構的分類器在大標簽空間內有很好的可擴展性。實驗結果表明所提方法在亞目和細目層級的ICD手術分類上獲得了較好分類表現。但是實驗結果中macro F1評估指標表明,標簽類別分布不均衡的問題對模型分類性能影響很大。在實際臨床中,大量且高質量的標記數據獲取代價很大,需要組織大量人力進行數據標注和校對。而且現實中很多情況下數據的分布往往是不均衡的。所以,怎樣利用少量的數據樣本在出現頻率較低的標簽類別上取得良好的分類效果是一個值得研究的問題,小樣本學習和單樣本學習是針對于此類問題的解決方法。除此之外,雖然高質量的標記數據獲取代價很大,但大量的無標記的數據是比較容易獲得的。近年來,半監督學習和自監督學習的研究讓無標記數據得到利用。怎樣將上述方法應用到國際疾病分類中,是下一步的研究方向。