鄭增亮, 沈宙鋒, 蘇前敏
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院, 上海 201620)
電子病歷(Electronic Medical Records, EMR)是患者在醫(yī)院就診的記錄,主要包含文本、圖表以及影像等多種信息[1]。 隨著EMR 的漸趨普及,人們對其了解得也更加詳細(xì)。 總地來說,EMR 不僅包含了患者的檢查結(jié)果、臨床用藥治療、不良反應(yīng)等信息,還涵蓋了許多的醫(yī)療相關(guān)實體[2]。 如何將一個非結(jié)構(gòu)化的臨床EHR 轉(zhuǎn)化為結(jié)構(gòu)化的數(shù)據(jù),挖掘其中有價值的診療信息,已然成為當(dāng)前自然語言處理(NLP)任務(wù)的研究熱點之一。 關(guān)系抽取任務(wù)是在消息理解會議(MUC)[3]上首次提出的,自2010年以來,國外對于電子病歷相關(guān)實體關(guān)系抽取研究已經(jīng)取得許多成果。 國內(nèi)EMR 相關(guān)的研究發(fā)展起步時間較晚,公開的數(shù)據(jù)集和研究結(jié)果為數(shù)不多,已有的關(guān)系抽取模型主要依賴機器學(xué)習(xí)有關(guān)算法,這類方法大多依賴大量的特征工程建設(shè),費時費力。 近年來在關(guān)系提取任務(wù)中,基于神經(jīng)網(wǎng)絡(luò)方法取得了良好的效果,但是常見的關(guān)系抽取并不能解決文本語句中一詞多義的現(xiàn)象,同時也沒有充分捕捉到電子病歷中實體關(guān)系之間的特征信息,使得分類效果欠佳。
本文提出一種基于XLNet-BiGRU-Attention-TextCNN 的醫(yī)療文本實體關(guān)系抽取方法。 該方法首先使用XLNet 預(yù)訓(xùn)練語言模型將輸入文本語句轉(zhuǎn)換為向量表示,然后將向量化的文本特征序列輸入至一個雙向門控循環(huán)單元(GRU)進(jìn)行長距離依賴關(guān)系特征提取,接著使用注意力機制(Attention)為特征序列分配權(quán)重,降低噪聲影響,為了提高Softmax分類器的識別效果,最后利用卷積神經(jīng)網(wǎng)絡(luò)提取文本語句的局部特征。
目前,實體關(guān)系抽取模型的訓(xùn)練、驗證使用的數(shù)據(jù)集主要來源于開放數(shù)據(jù)源,例如新聞、微博、百科等[4]。 實體關(guān)系提取的早期方法主要是監(jiān)督式學(xué)習(xí),如CHEN 等學(xué)者[5]在關(guān)系抽取任務(wù)中,通過對原始數(shù)據(jù)集進(jìn)行統(tǒng)計和特征提取的方法取得了較高的F1值(正確率?召回率?2 / (正確率+召回率))。ZHANG[6]在關(guān)系抽取任務(wù)中引入支持向量機的方法來提高抽取的效果。 這些方法大都需要手工構(gòu)建大量特征,不僅費時費力,而且泛化性能也不強。
隨著神經(jīng)網(wǎng)絡(luò)的快速發(fā)展,神經(jīng)網(wǎng)絡(luò)模型已逐漸應(yīng)用到實體關(guān)系抽取任務(wù)中。 Richard 等學(xué)者[7]使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)獲取文本序列信息,進(jìn)行實體關(guān)系抽取,雖改進(jìn)了模型抽取效果,但沒有考慮到實體在訓(xùn)練語句中的語義和位置信息。 Zeng 等學(xué)者[8]采用詞向量和詞位置向量相結(jié)合方法獲取模型輸入向量,通過卷積神經(jīng)網(wǎng)絡(luò)層與層之間運算得到句子特征表示,充分利用句子中的實體信息,從而提升關(guān)系抽取的準(zhǔn)確率。 Huang 等學(xué)者[9]采用兩階段方法,在長短時記憶(LSTM)網(wǎng)絡(luò)模型中引入支持向量機(SVM)模型,以此抽取藥物間的關(guān)系。
關(guān)系抽取模型框架主要由3 個部分組成,分別是:詞表示層、編碼層、輸出層。 其中,詞表示層包含文本語句的輸入,序列化表示模塊;編碼層包含BiGRU 模塊、Attention 模塊和TextCNN 模塊;輸出層使用Softmax模型,模型結(jié)構(gòu)如圖1 所示。 將句子輸入到模型中,首先通過詞嵌入層構(gòu)建向量矩陣,將每個詞映射成低維向量,隨后將句子矩陣送入BiGRU,進(jìn)一步提取字向量中上下文特征,接下來將處理后的矩陣通過自注意力層對重要信息進(jìn)行加權(quán),計算出權(quán)重系數(shù),然后使用TextCNN 模型提取句子的局部特征,最后由Softmax模型確定關(guān)系類型,完成關(guān)系抽取。
圖1 XLNet-BiGRU-Attention-TextCNN 模型結(jié)構(gòu)Fig. 1 XLNet-BiGRU-Attention-TextCNN model structure
該模型的詞表示層使用XLNet 預(yù)訓(xùn)練語言模型對輸入語句進(jìn)行向量表示。 針對Bert 模型[10]微調(diào)和預(yù)訓(xùn)練過程不一致的缺陷, Brain 提出了一種新的廣義自回歸模型XLNet[11]。 XLNet 利用排列語言模型(PLM)隨機排列句子,使用自回歸的方式預(yù)測句子末尾的單詞,通過這種方式,可獲取到單詞間相互依賴的關(guān)系,而且可以充分利用單詞或者字符的前后文信息[12]。 與Bert 相比,XLNet 沒有采取在輸入端隱藏掉部分單詞的模式,而是通過注意力機制[13]在Transformer 內(nèi)部遮掩部分單詞。 XLNet的原理如圖2 所示,XLNet 的輸入包括詞向量和位置信息,圖2 中最下面的e(x) 就是詞向量,w就是位置信息。 經(jīng)輸入層輸入后,XLNet 會將句子重新排列,根據(jù)排列后順序使用自回歸方式進(jìn)行預(yù)測。
圖2 XLNet 原理[11]Fig. 2 XLNet principle[11]
門控循環(huán)單元(GRU)使用門控機制來控制輸入、記憶和其他信息,并在當(dāng)前時間步長內(nèi)進(jìn)行預(yù)測[14]。 GRU 可以視為LSTM 的變體,與LSTM 相比,GRU 具有參數(shù)少、訓(xùn)練時間短的優(yōu)點。 GRU 門函數(shù)保留了重要的特性,可以捕捉時態(tài)數(shù)據(jù)中的長依賴關(guān)系。 圖3 說明了GRU 的內(nèi)部控制結(jié)構(gòu)。 GRU內(nèi)部結(jié)構(gòu)中只有2 個門單元:更新門和重置門。GRU 結(jié)構(gòu)中的參數(shù)具體如下。
圖3 GRU 模型結(jié)構(gòu)圖Fig. 3 Structure diagram of GRU model
(1)重置門:rt計算公式見如下:
(2)更新門:zt計算公式見如下:
(3)隱藏層:狀態(tài)更新計算公式見如下:
其中,σ表示sigmoid激活;W為權(quán)值矩陣;xt表示t時刻的輸入;ht-1表示t時刻的隱藏狀態(tài)。 本文采用BiGRU 結(jié)構(gòu),充分利用時間語境。 BiGRU 使用前向和后向計算,每個時間序列數(shù)據(jù)獲得2 個不同的隱藏層狀態(tài)。 隱藏層的最終輸出是兩者的連接隱藏狀態(tài)[15]。
針對BiGRU 的輸出ht學(xué)習(xí)相應(yīng)的注意力權(quán)重α,然后對權(quán)重歸一化,將得到的向量α作為注意力權(quán)重概率分布,最后將α與輸出進(jìn)行點積相加,從而得到經(jīng)過注意力運算的特征向量[16]。
卷積層意在捕獲局部語義信息,并將這些有價值的語義成分壓縮為特征圖[17]。 當(dāng)卷積層輸入特征矩陣后,卷積運算中需用到的公式為:
其中,b∈R表示偏置;f表示非線性激活函數(shù);Xj為落入滑動窗口的第j個特征矩陣;池化是選擇從每個卷積核中提取的特征[18]。 這里,最大池(max pooling)用來獲得每個特征的最大值,該方式往往漏掉了其他關(guān)鍵信息。 另一種是平均池,即求出特征向量的平均值,能夠表示整個文本的語義信息。 為了在句子中獲取更多的語義信息,以提高關(guān)系識別的準(zhǔn)確性,故將2 種池化后的特征進(jìn)行拼接作為此層輸出,可由式(6)~式(8)進(jìn)行描述:
其中,yj為每個卷積核卷積出的特征向量,mj為池化后的輸出。 最后通過Softmax層輸出。
中文EMR 關(guān)系抽取數(shù)據(jù)集的構(gòu)建不僅要求對原始數(shù)據(jù)進(jìn)行預(yù)處理,同時要求標(biāo)注人員需要具備一定的醫(yī)學(xué)知識。 EMR 的診療信息中的實體關(guān)系主要存在于疾病、癥狀、檢查等之間,故在本研究中,以I2B2 (informatics forintegrating biology and the bedside)的醫(yī)學(xué)實體間關(guān)系標(biāo)注規(guī)范作為參考標(biāo)準(zhǔn)[19],在專業(yè)醫(yī)務(wù)人員的指導(dǎo)下,制定了本實驗的中文EMR 關(guān)系標(biāo)注類型,見表1。 由表1 可知,共包含7 種醫(yī)療關(guān)系。
表1 關(guān)系類型及描述Tab. 1 Relationship type and description
本實驗的原始數(shù)據(jù)來自于上海市某二級甲等醫(yī)院,包括內(nèi)分泌科、呼吸內(nèi)科、消化內(nèi)科等不同科室的EMR,共1500 份。 為了保護患者的隱私,對EMR 文本進(jìn)行去隱預(yù)處理,接著根據(jù)事先制定好的標(biāo)注規(guī)則對文本數(shù)據(jù)進(jìn)行標(biāo)注。 最后,將標(biāo)注好的數(shù)據(jù)集按照7∶2∶1 的方式進(jìn)行劃分,其中1050 份EMR 作為訓(xùn)練數(shù)據(jù)集,300 份EMR 作為驗證數(shù)據(jù)集,150 份EMR 作為測試數(shù)據(jù)集。
實體識別和關(guān)系抽取實驗通常采用如下指標(biāo)來評價模型的優(yōu)劣,分述如下。
(1)準(zhǔn)確率。 可由如下公式計算求得:
(2)召回率。 可由如下公式計算求得:
(3)F1值。 可由如下公式計算求得:
其中,TP表示測試集中正例被正確預(yù)測為正例的個數(shù);FP表示測試集中正例被誤分類為負(fù)例的個數(shù);FN表示測試集中負(fù)例被誤分類為正例的個數(shù)。
本實驗主要分為參數(shù)優(yōu)化實驗和不同模型對比實驗。 參數(shù)優(yōu)化實驗主要是驗證使用標(biāo)簽平滑交叉熵?fù)p失函數(shù)(Label Smoothing Cross Entropy,LSCE)是否可以提高識別效果。 與不同模型的對比實驗可以驗證基于XLNet 模型在實體間關(guān)系提取的有效性。 本實驗均在Ubuntu 環(huán)境中搭建和運行,基于Python 和TensorFlow 搭建模型,并使用GPU 進(jìn)行深度學(xué)習(xí)的計算,選用的計算機顯卡配置為NVIDIA RTX 2060,顯存為8 GB。 實驗中主要的超參數(shù)配置包括: XLNet 預(yù)訓(xùn)練語言模型選取XLNet_base 版本,在編碼層運行后,再輸入到此后的網(wǎng)絡(luò)結(jié)構(gòu)中進(jìn)行學(xué)習(xí)訓(xùn)練。 LSTM 的大小設(shè)置為64 維,網(wǎng)絡(luò)層寬為64 維,網(wǎng)絡(luò)學(xué)習(xí)率為2e-5,Dropout的比例設(shè)置為0.1,每一批量的樣本數(shù)量為32,卷積核的尺寸分別是設(shè)置為5×5、9×9、13×13,卷積核個數(shù)設(shè)置為256,隱藏層的維度固定為768,使用relu激活函數(shù),為了使模型收斂速度加快選用Adam 算法優(yōu)化器。
(1) 參數(shù)優(yōu)化實驗。 為驗證LSCE 是否可以提高關(guān)系抽取效果,本實驗設(shè)置Cross Entropy Loss和Focal Loss函數(shù)作為對比。 表2 是XLNet-BiGRUAttention-TextCNN 與不同損失函數(shù)在糖尿病數(shù)據(jù)集上達(dá)到的實驗效果。
表2 不同損失函數(shù)實驗結(jié)果Tab. 2 Experimental results of different loss functions %
(2) 不同模型對比試驗。 為驗證本研究提出的模型在中文糖尿病數(shù)據(jù)集的效果,本研究選擇如下幾種方法進(jìn)行比較:
①CNN 模型[20]:CNN 用于關(guān)系提取,卷積深度神經(jīng)網(wǎng)絡(luò)(CDNN)用于提取詞和句子的特征,并將所有的詞標(biāo)記都用作輸入。
②BiLSTM-TextCNN 模型:該模型采用雙向LSTM 網(wǎng)絡(luò)模型提取語義依賴信息,并利用TextCNN網(wǎng)絡(luò)提取局部特征,解決了傳統(tǒng)關(guān)系抽取任務(wù)中復(fù)雜特征構(gòu)建問題,在這項任務(wù)中取得了較好的效果。
③BiGRU-TextCNN 模型:采用雙向GRU 網(wǎng)絡(luò)模型獲取文本前后向語義信息,然后連接TextCNN進(jìn)行特征提取,利用更新門和重置門機制過濾噪聲影響,提高模型識別效果。
④BiGRU-Attention-TextCNN 模型:在局部特征提取前加入Attention 機制,與BiGRU-TextCNN模型進(jìn)行對比。
研究中得到的不同模型的實驗結(jié)果見表3。
表3 不同模型實驗結(jié)果Tab. 3 Experimental results of different models %
從表2 可以看出,當(dāng)采用標(biāo)簽平滑交叉熵函數(shù)作為XLNet-BiGRU-Attention-TextCNN 模型訓(xùn)練的損失函數(shù)時,關(guān)系抽取的效果最優(yōu),其F1值較Cross Entropy函數(shù)和Focal Loss函數(shù)分別提高了2.14%和2.94%。 由于EMR 數(shù)據(jù)集中關(guān)系類型數(shù)量分布不均勻,最多為647,最少為115,對模型的關(guān)系預(yù)測帶來一定程度上的干擾。 通過使用標(biāo)簽平滑交叉熵函數(shù),緩解了醫(yī)學(xué)文本中關(guān)系類型的數(shù)量不平衡問題,一定程度上提升了模型的性能。
通過表3 的實驗研究結(jié)果可以看出,XLNet-BiGRU-Attention-TextCNN 模型與其他模型相比,總體上看,其精確率、召回率和F1值三方面均有提高:
第一,與傳統(tǒng)CNN 模型對比,BiLSTM-TextCNN模型和BiGRU-TextCNN 模型在準(zhǔn)確率分別提高了4.25%和4.57%,召回率分別提高了5.44% 和5.69%,F(xiàn)1值分別提高了4.87%和5.15%。 說明了CNN 網(wǎng)絡(luò)的語義提取范圍有限,在處理較長語句的關(guān)系識別時效果較差,利用含有門控機制的前后向長短時記憶網(wǎng)絡(luò)和前后向門控循環(huán)網(wǎng)絡(luò)可以更好地提取文本語句的長期依賴關(guān)系,并與TextCNN 網(wǎng)絡(luò)結(jié)合可以更加充分地表示文本的語義信息。
第二,對比BiGRU-Attention-TextCNN 模型和BiGRU-TextCNN 模型,引入Attention 機制后關(guān)系提取的精確率提高了3.29%,召回率提高了4.94%,F(xiàn)1值提高了4.13%,說明了Attention 機制可以聚焦文本序列的關(guān)鍵信息,并為這些關(guān)鍵信息設(shè)置較大權(quán)重,降低噪聲的干擾,通過動態(tài)調(diào)整權(quán)重矩陣,學(xué)習(xí)到關(guān)系抽取在長序列文本中隱藏的關(guān)鍵信息,提升模型識別抽取能力。
第三,對比XLNet-BiGRU-Attention-TextCNN模型和BiGRU-Attention-TextCNN 模型,采用預(yù)訓(xùn)練語言模型將精確率提高了3.53%,召回率提高了6.70%,F(xiàn)1值提高了5.09%,說明了采用雙向自回歸訓(xùn)練的語言模型XLNet 可以對文本上下文的語義信息進(jìn)行更全面的表示,提高模型的關(guān)系抽取效果。
針對現(xiàn)有的實體關(guān)系抽取模型無法解決多義現(xiàn)象和文本語義信息捕獲不足的問題,本文提出基于XLNet-BiGRU-Attention-TextCNN 的實體關(guān)系抽取方法。 利用預(yù)訓(xùn)練語言模型XLNet 對句子進(jìn)行向量化表示,然后輸入BiGRU 層充分表示捕捉字的上下文信息,通過注意機制提高在關(guān)系分類中起決定性作用的字符權(quán)重,最后加入TextCNN 提取局部特征,獲得更細(xì)粒度的特征序列,有效解決一詞多義的問題,提升了該模型在關(guān)系抽取任務(wù)中性能。