黃漢琴,顧進廣 ,符海東
(1.武漢科技大學 計算機科學與技術學院,湖北 武漢 430065;2.國家新聞出版署富媒體數字出版內容組織與知識服務重點實驗室,北京 100038;3.武漢科技大學 大數據科學與工程研究院,湖北 武漢 430065)
在臨床研究方面,從電子健康記錄抽取時間關系用于多種應用,如臨床問題解答、決策支持系統(tǒng)、臨床時間線構建等。這些應用需要清晰的時間順序做支撐。時間順序在臨床文本中有著重要的作用,很多的臨床事件都需要在時間順序下才彰顯意義。
時間關系(TLINK)表示時間表達式和臨床事件之間在時間線上的關系。臨床事件是與臨床相關的任何事件,包括患者的臨床概念和醫(yī)療事件。時間表達式是指在臨床文本中提供有關臨床事件的發(fā)生時間、時間段、發(fā)生頻率。現有的TLINK分為4種時間關系,考慮中文臨床文本中存在大量的復雜時間和關系,現有的時間關系不能全部表達這些事件之間的關系,該文將時間關系抽取任務擴展。
TLINK抽取任務常用的方法有基于規(guī)則,機器,深度學習的方法。基于規(guī)則的方法依靠大量的人工抽取句子的語義特征制定規(guī)則,需要耗費大量時間且移植性差。近年來,基于深度學習的神經網絡模型取得顯著的成果,此類模型能自主挖掘出句子的語言特征。
文中數據集采用中文臨床抑郁癥病例文本,此類文本語義復雜,存在不均衡性,理解文本的語義需要學習全局上下文特征也要關注重要內容的局部特征。Lin等人使用動態(tài)或固定窗口來執(zhí)行局部區(qū)域關注[1-2];Bugliarello等人利用語法限制注意力獲得更好的關注[3-4]。
兩種方法對重要的局部區(qū)域進行更多關注得到局部特征再和全局信息融合。在此基礎上,借助BERT模型的自注意力機制能從一個句子的眾多信息中找到局部重要信息加權處理,該文引入依存句法分析臨床文本的局部重要區(qū)域,抽取局部重要特征信息和整體句子信息共同學習。
同時考慮時間關系抽取任務學習時間實體和臨床事件實體的信息,現有的構造方法大多數使用三段式池化拼接方法來展開[5]。借鑒此方法,該文額外對BERT層的輸入嵌入實體類型,并在輸出表征對實體信息進行特征交互來獲得更全面的實體信息。該文的貢獻如下:
(1)針對中文臨床文本提出復雜時間關系抽取任務,擴展現有抽取任務的時間關系類型。
(2)為追求全局信息和局部信息的兼具問題,針對臨床文本設計依存特征抽取算法,提出將BERT的自注意力層和依存句法分析結合的方法,該模型能在現有的BERT架構上快速嵌入實現。
(3)為獲得更全面的實體信息,從BERT表征抽取額外的兩個實體信息,結合內積和哈達瑪積實現特性交互,使用四段式池化拼接得到關系向量。
當前時間關系抽取的相關工作與兩個共享臨床時間關系抽取任務有關:Informatics for Integrating Biology and Bedside(i2b2) challenge[6]和2015年開始的TempEval challenge[7]。自深度學習流行后,應用BI-LSTM,CNN,BERT等深度學習模型抽取時間關系成為主流,以下將介紹這些方法的研究現狀。
基于BI-LSTM方法:Juline等人[8]使用BI-LSTM模型融合特征工程抽取包含關系,證明增加經典的特征收集更多信息是有益的方法,他們在[9]收集句子信息額外對每一個實體類型構建特定分類器。Chen等人[10]在自我訓練框架內構建語義異構嵌入的循環(huán)神經網絡,利用基本特征豐富句子信息。這些方法聚集在進一步收集局部信息,豐富模型語義。
基于CNN的方法:Dmitriy等人[11]將XML標簽編碼關系參數的位置引入CNN模型去提取時間關系,用這種標記成為神經網絡的輸入,后續(xù)的CNN方法輸入大多借鑒于此。Chen等人[12]描述了一種單個偽標記表示時間表達式的方式修改了token的標簽用于CNN的輸入。此類神經網絡方法能自動進行特征提取,但是池化層會丟失大量的價值信息,對長距離句子來說,輸出的表征難以概括全局信息。
即使以BI-LSTM和CNN為主的方法在時間關系抽取中表現較好,但是和bert為主的預訓練語言模型存在一定差距。基于BERT方法,Lin等人[13]在BERT模型上引入全局嵌入來幫助進行長距離關系推理,并通過多任務學習來提高模型性能和泛化性,從而增強模型抽取的效果。Chen等人[2]在BERT模型上開發(fā)基于連續(xù)標記的固定的句子邊界不可知窗口的處理機制,展示了BERT出色的長距離推理能力。近2年的臨床關系抽取綜述[14-15]都總結了微調BERT及其變體等語言模型在從臨床文本中提取關系方面表現最好。為提升下游任務的學習能力,通過具體任務設計簡單堆疊模塊實現微調。基于此研究思路,該文使用BERT現有架構,通過對自注意力機制層與依存句法結合的方法獲取句子的全局信息和局部信息。同時,使用關系抽取中常用的實體特征交互方法獲得更多的實體信息。
TLINK時間關系是指電子病歷中時間點與臨床事件或臨床事件與臨床事件之間的時序關系。臨床文本中存在大量的復雜時間維度,現有的時間關系僅表達這些事件之間的簡單時間關系,復雜時間本體定義可以挖掘臨床文本中更多的語義信息。該文依據CTO臨床時間本體[16]將現有的時間關系抽取中常見的4種時間關系類型擴展為10種時間關系抽取。
病歷中的時間點是指帶有時間信息的短語,參考現有病歷常見的時間表達,根據CTO臨床時間本體定義了各種類型的時間語義,將所有時間總分為3種類型:時間點,時間段,時間集合。病歷中的臨床事件是指病歷中有關病情的相關記錄和醫(yī)療記錄,參考現有病歷常見的臨床事件,該文將臨床事件分為疾病,癥狀,檢查,藥物,手術、醫(yī)療事件,治療。病歷的時間與臨床事件分類實例表如表1所示。
參考CTO臨床時間本體,設定每一對時間關系的兩個實體為A和B。臨床事件實體依照時間線記錄事件發(fā)生的起始時間,結束時間,頻率等信息劃分為在某一時刻完成這一件事,在某一段時間完成這一件事,在時間集合完成這一件事。使得時間實體和臨床事件實體都能在時間維度上進行比較。時間關系為之前,之后,相等,遇見,共同開始,共同結束,相交,包含,全包含,部分包含。所有時間關系的定義如圖1所示。根據每張圖可以獲取每一個時間關系的滿足條件,例如時間點實體不可能和別的實體產生遇見,相交,全包含,部分包含這些時間關系。
該文將時間抽取任務定義為:(1)復雜句內時間關系抽取:指的是一個句子里面任意的時間點與臨床事件的時間關系或臨床事件與臨床事件的時間關系都能在10種時間關系中找到答案;(2)復雜句間時間關系抽取:一個句子的醫(yī)療事件與相鄰句子的醫(yī)療事件的時間關系能在10種時間關系中找到答案。后續(xù)實驗與分析描述根據這兩個任務分別標注數據集和訓練模型進行實驗。

圖1 時間關系定義
該文提出使用BERT預訓練模型結合依存句法和實體信息對中文抑郁病臨床文本進行時間關系抽取的模型(Enriching bert with dependency synatx and entity information,DS-EI-BERT)。DS-EI-BERT模型結構如圖2所示。將輸入句子嵌入實體類型,轉化成句子輸入序列,具體描述在2.2.1節(jié);然后將句子傳入依存權重矩陣處理器導出每個句子的依存矩陣,具體描述在2.2.2節(jié);此依存矩陣會引導BERT的12層Transformer編碼器層來訓練每一層的全局信息和局部信息,具體描述在2.2.3節(jié);然后實體-句子信息層提取出實體信息做特征交互,最后將句子信息和實體信息拼接得到最終輸出,使用softmax函數得到最終的時間關系,具體描述在2.2.4節(jié)。
2.2.1 句子輸入序列
該文的輸入采用預訓練模型BERT的輸入方式。BERT模型的輸入可以是單個句子,也可以包含一個句子對(句子A和句子B)。而這兩種方式剛好可以對應句內關系和句間關系的輸入。BERT預訓練參數給出的vocab中有一些特殊作用的標識符,[CLS]標識符放在第一個句子的首位,作為整個句子的語義表示。[SEP]標識符用于分開兩個句子,每一個句子結束后會緊跟一個[SEP]標識符。此外BERT輸入可以在字符字典設定有意義的標識符,將時間類型和事件類型設置成特殊的標識符。時間分類中,instant的標識符為[INS],interval的標識符為[INT],collection的標識符為[COL]。臨床事件分類中,disease的標識符為[DIS],symptom的標識符為[SYM],examination的標識符為[EXAM],medication的標識符為[MED],operation的標識符為[OPE],medical event的標識符為[MEEV],cure的標識符為[CURE]。

圖2 DS-EI-BERT模型結構
舉例說明句內的輸入模式:“ [CLS]患者自[INS] [INS]9月1日[SYM]心情低落[SYM]。[SEP]”。句間的輸入模式:“[CLS]8月服[MED]奧氮平[MED]。[SEP]一月后[MEEV]自行停藥[MEEV]。[SEP]”通過這個方式能讓模型更好學習兩個實體的關系。
2.2.2 依存權重矩陣處理器
為了更好地挖掘句子包含的整體價值,時間關系抽取需要更關注重要的詞語,根據現有研究表明,BERT預訓練模型中的注意力在訓練時會關注不重要的虛詞,對重要的局部區(qū)域進行更多關注,保證句子中重要的語義被充分學習利用。該文利用依存句法分析獲取句子重要的依存特征,然后轉化成依存權重矩陣,此矩陣傳入BERT每一層的自注意力機制中限制注意力來幫助模型獲得更好的關注。
對輸入的句子進行依存分析,能將一個句子分析成一棵依存句法樹,這棵樹的最頂層節(jié)點是整個句子的核心詞,其他詞匯直接或者間接與它產生聯系,整個樹描述出詞匯與詞匯之間的相互依存作用。通過依存句法分析得到的依存句法樹如圖3所示。
參考孫健等人在中文時間關系抽取研究中對依存特征的使用[17],針對不同的關系類別制定句子上重要的依存路徑,如表2所示。這些路徑上的詞匯與關系抽取的兩個實體存在直接或者間接的支配與從屬的關系,屬于語句中語義豐富的詞匯。

圖3 依存句法樹
假設一個句子S,句子中的兩個目標實體分別為A、B,根據不同的依存特征找到所用路徑上面的詞匯,把這些詞匯的下標做成一個集合Key,這個Key代表的就是這個句子依存特征詞的下標集合。圖3展示一個句子的依存句法樹:A表示“奧氮平”,B表示“無法自理”,根據上表句內事件-事件時間關系的依存特征,從“奧氮平”追溯依存關系得到路徑(“奧氮平”->“治療”->“服”->“好轉”->“加重”->“自理”->“無法”),計算所有路徑最后得到Key集合[“奧氮平”,“治療”,“服”,“無法”,“自理”,“加重”,“好轉”]。以上假設符合句內關系抽取的情況,句間關系抽取涉及兩個句子,則分別得到兩個句子的集合Key合并再進行如下計算。

表2 句內/句間依存特征路徑
得到這些重要的依存特征詞匯集合Key后,將Key中的詞匯和BERT輸入序列對應,這些序列下標從1到s,如果BERT下標對應的字在Key的詞匯中,則將下標記錄在keyPoint集合,最后構建一個s×s維的二維數組Ds,這個矩陣的行下標為x,列下標為y,每一行和每一列都包含一個字對其他字是否存在依存關系需要關注的含義,計算如式1所示:
Ds[x,y]=
(1)
2.2.3 Transformer編碼器層
不同于田園等人[18]將幾種模型拼接一起得到語句更全面的信息,該文利用BERT-BASE模型[4]層層堆疊的12層Transformer編碼器層來不斷地訓練全局有用信息。通過上一節(jié)得到的依存矩陣不斷強化局部注意力與BERT本身的全局注意力結合,每一層編碼器的具體結構如圖4所示。
在每一層編碼器層中,會計算所有token的3個向量(查詢向量Q,值向量V,關鍵字向量K)。使用Q和K做點積,能得到每一個token需要對其他token關注的權重系數Scoreg,這也是每一層自注意力層的全局attention分數,Scoreg計算公式如式2所示。
Scoreg=Q·KT
(2)
該文還需要獲取每一層具有依存句法信息的局部attention分數Scorel,使用依存句法矩陣對Scoreg做點積獲取包含句法信息的注意力權重,可以得到任意一個token對其余所有存在依存關系的token的權重和矩陣,Scorel計算公式如式3所示。
Scorel=Ds·Scoreg
(3)

圖4 Transformer編碼器層結構
對這兩個attention分數做歸一化處理,然后對V加權求和分別得到這一層編碼器注意力表征Attentiong和依存句法局部注意力表征Attentionl。計算公式如式4和式5所示。這里的d是指嵌入維度。
(4)
(5)
而最后的輸出表征是在兩個表征代表的全局信息和局部信息找到一個平衡。針對每一個token,設置閾值αk,k∈[0,s]用于組合全局和局部注意力。這個值是可變的,更大的閾值意味著更多的注意力集中在句法信息上,對于與依存句法矩陣沒有關聯的token,這個αk為0;對于有關聯的token,這個αk為0.5。計算公式如式6所示。
(6)
每一個token得到的注意力輸出如下,然后匯總可得此層的注意力表征輸出Ak,最后傳給下一層繼續(xù)此循環(huán),最后得到整個BERT層的輸出表征H。與原始架構相比,文中方法只是在每一層編碼器中加入依存矩陣Ds和α進行運算,使得此方法較容易在現有的BERT代碼中嵌入實現,比起很多論文復雜的模型疊加來訓練更全面的表征無疑是精簡的。計算公式如式7所示。
(7)
2.2.4 實體-句子信息交互層
時間關系抽取已獲得豐富的句子信息,接下來需要獲取句子中時間實體和臨床事件實體的信息,常用方法[19]將句子信息和兩個實體信息池化后拼接進行關系分類。然而這樣的拼接并不能得到實體的交互信息,為得到這些實體的交互信息,現有方法會使用全連接,外積,內積,哈達瑪積。該文在FiBiNET的Bilinear-Interaction基礎上[20],提出利用現有的依存矩陣引導權重結合內積和哈達瑪積來獲得實體交互信息,內積和哈達瑪積交互會考慮不同特征對于預測目標的重要性程度,給不同的特征根據重要性程度進行加權。
整個BERT層最后的輸出詞向量為H:
H=[h0,h1,…,hi,…,hj,…,hl,…,hn,…,hs]
(8)
由于每一條輸入句子前加上了[CLS]標識符表征整個句子,所以取第一個向量h0代表整個句子信息。對于句子中第一個實體e1,獲取e1在句子的下標為i到j,那么hi到hj是實體e1的最終隱藏向量。對于第二個實體e2,獲取e2在句子的下標為l到n,那么hl到hn是實體e2的最終隱藏向量,取這些向量的平均向量he1,he2來獲得目標實體的向量表示。然后通過激活函數和全連接層分別得到最終的句子向量和實體向量表示。W0∈Rd×d,W1∈Rd×d,W2∈Rd×d,其中d是BERT的隱藏向量大小。然后將實體1的最終表示與依存代表的權重矩陣進行內積,再與實體2進行哈達瑪積就能獲得兩個實體重要維度上的信息。計算公式如式9~式14所示。
(9)
(10)
H0=W0[tanh(h0)]+b0
(11)
He1=W1[tanh(he1)]+b1
(12)
He2=W2[tanh(he2)]+b2
(13)
Hbili=He1·DS⊙He2
(14)
然后將H0,He1,He2,Hbili連接起來獲得包含重要信息的句子信息和豐富實體信息的向量H',這里設置W3∈RL×3d(L為時間關系總數10),以上b0,b1,b2,b3為偏置。添加一個全連接層和softmax層,該文使用交叉熵損失函數。計算公式如式15和式16所示。
H'=W4[concat(H0,He1,He2,Hbili)]+b4
(15)
p=softmax(H')
(16)
鑒于目前沒有中文時間關系數據集,該文在私有數據集和公有數據集上進行中文臨床文本時間關系研究。私有數據集源于合作醫(yī)院抑郁癥臨床數據(Chinese Medical Record of Depression,CMRD),應醫(yī)院要求不予公開。主要內容包括患者的個人信息、入院日期、出院日期、現病史、個人史等信息。抑郁癥文本包含病人所有的病史,擁有較長且完整的時間線描述病人的病情和住院情況,適用于時間關系抽取任務。公開數據集源于2020CCKS的骨科臨床文本,本身有標注好的實體信息。
抽取每一個句子的時間實體和事件實體或者事件實體和其他事件實體作為關系候選對,然后標注它們的句內和句間時間關系。最后共標注了100份電子病歷數據。標注出的句內和句間數據集如表3所示,總樣本以8∶2分為訓練集和測試集。

表3 句內和句間數據集數量
所有實驗運行在搭載了Tesla P-100 PCIE顯卡和Intel(R)Xeon(R) CPU E5-2600 v4 @ 2.00 GHz型號CPU的機器上,使用PyTorch1.4.0作為深度學習框架,依賴Python 3.7環(huán)境下完成實驗。
文中方法實現基于huggingface官網的bert-base-chinese模型,依存句法分析使用spacy的zh_core_web_sm-3.3.0版本。
句內時間關系抽取實驗和句間時間關系抽取實驗是分開實現的。實驗基線模型為原始BERT[4]和豐富實體信息的R-BERT[5]。為評測DS-EI-BERT模型在時間關系抽取任務的有效性,將與BERT和R-BERT在相同數據集上進行比較。為驗證文中模型的競爭力,在文中數據集上對比了現有的時間關系抽取最好的模型BERT-TS[2]。除此之外,對比了相關工作中其他深度學習模型。Juline等人[8]提出的BI-LSTM方法同樣是在已知實體情況下識別實體之間存在的關系,使用TensorFlow實現模型。Dmitriy等人提出的CNN方法[11]使用時間表達式的類型代替時間實體作為CNN的輸入,文中亦在BERT的輸入層融入實體類型信息。
實驗采用精確率(Precision)、召回率(Recall)和F1值(F-score)3個指標來評價中文電子病歷中時間關系抽取的性能。計算公式如式17~式19所示。
(17)
(18)
(19)
使用不同的參數訓練模型后,以下實驗中 BERT模型的超參數設置:最大序列長度為128,學習率為1e-5,batch為16,dropout為0.1。CNN模型的超參數設置:最大序列長度為128,學習率為1e-4,batch為50,dropout為0.25。BI-LSTM模型的超參數設置:最大序列長度為128,學習率為1e-3,batch為64,dropout為0.4。
3.4.1 句內時間關系抽取
實驗結果如表4所示。從表4可以看出,BI-LSTM和CNN取得的P,R和F1值都比預訓練BERT及衍生方法的低。CNN能捕捉局部語言信息,但是對于中文這種具有長距離的句子,不能很好地捕捉上下文語義,實驗效果并不好,P和R相比之下存在較大差距;而BI-LSTM通過遞歸不斷捕捉句子上下文語義,P值相較CNN提高4.4百分點,但是和BERT的自注意力機制捕捉信息能力存在差距,此外BI-LSTM的訓練時間過長,和其他模型比較起來需要更多的計算資源。這里也能看出對于時間關系抽取這一項任務,模型學習句子整體信息極為重要。

表4 句內與句間時間關系對比實驗 %
預訓練語言BERT模型系列表現優(yōu)異,BERT原始架構也要比CNN,BI-LSTM表現優(yōu)異,其F1值達到77.8%。R-BERT對比BERT模型學習句子中的實體信息,進一步提升時間關系抽取的效果,在F1提升2.25百分點。這兩個基線模型實驗證明實體信息能幫助時間關系抽取,筆者認為抽取實體信息能改善時間關系實體跨度大的問題。
文中模型DS-EI-BERT在表4中在P,R和F1上優(yōu)于其他模型。原因在于自注意力機制層使用依存句法進行全局信息和局部信息提取,可以幫助BERT更好地學習句子語義。而使用兩個實體進行特征交互進一步豐富了實體信息,讓模型進一步提升使得F1值達到86.93%。
最后和現有時間關系抽取最好的模型BERT-TS對比,P,R和F1值都有不錯的提升,分別提升4.41百分點,5.81百分點和5.14百分點,驗證此方法在現有的時間關系抽取模型中都有不錯的競爭力。
3.4.2 句間時間關系抽取
實驗結果如表4所示,句間實驗的整體效果較句內實驗在P,R,F1值都有退步,分別降低5.14百分點,7.13百分點,6.18百分點。原因在于句間的語句比較句內的語句,無論從輸入句子長度還是整體句子復雜度都有提升,對模型的語義理解有更高的要求。BERT系列實驗效果比其他深度學習模型還是有不錯的提升,但是與句內時間關系相比,P,R和F1值都有退步。
文中模型DS-EI-BERT在表4中在P,R和F1上依舊優(yōu)于其他模型,分別達到82.84%,78.78%,80.75%。但是BERT-TS也有非常好的效果,F1值達到78.81%。可以看出,時間關系抽取不僅從模型提升上能夠提高抽取效果,從關系實體候選策略入手也能提升不錯的效果。
3.4.3 消融實驗
最后為了驗證依存句法和實體信息的有效性,進行了消融實驗,一共設計4組實驗,設計只保留依存句法矩陣引導自注意力機制的DS-BERT和只保留實體信息層的EI-BERT進行消融實驗,結果如表5所示。

表5 句內/句間時間關系消融實驗 %
句內和句間消融實驗模型EI-BERT與BERT對比F1值分別提高3.39百分點和3.27百分點。進一步驗證了提取出更多的實體信息能提升抽取效果。句內和句間消融實驗模型DS-BERT與BERT對比F1值分別提高5.06百分點和7.01百分點,也顯示依存句法和實體信息的有效性,且對于句間這類長距離的抽取任務,依存句法能幫助模型學習長句子的重要部分獲得更好的結果。DS-EI-BERT集中句子信息和實體信息,最大程度提高模型效果,使得P,R,F1值達到最高。
臨床時間關系抽取作為臨床信息抽取中重要的分支,如何從一個復雜冗余的臨床病例文本抽取精確的時間關系有著重要的作用。該文發(fā)現中文數據集的復雜時間描述難以使用現有的時間關系任務展示時間線,于是擴充了復雜時間關系抽取任務。并且針對復雜時間關系句子語義的復雜性,從句子信息和實體信息提升模型實驗效果。利用BERT模型的自注意力機制融合輸入句子的依存句法特征,幫助句子充分利用依存句法信息,引導BERT關注更有用的信息;利用輸出表征的實體信息進行特征交互來豐富實體信息。在句間時間關系抽取中只考慮相鄰句子的時間關系抽取,在后續(xù)研究中,考慮使用滑動窗口來擴大關系候選對的面積,從而研究一段文本之中包含的時間關系。