胡 濱 湯保虎 姜海燕,2 霍 傲 韓文笑
(1.南京農業大學人工智能學院, 南京 210095; 2.南京農業大學國家信息農業技術中心, 南京 210095)
生物醫學數據在醫學研究、遠程會診和醫學診斷等方面具有極高的價值[1]。現有針對動物醫學領域知識抽取的研究較少。為了拓展家禽養殖知識圖譜,應從大量非結構化的診療文本中自動獲取知識[2-3]。
實體關系三元組抽取作為信息抽取的主要任務之一,旨在從高度碎片化的知識中提取出復雜的實體間關系,并為知識圖譜、信息檢索等任務提供基礎的數據支持[4]。中文實體關系抽取任務分為有監督、半監督、無監督和開放域抽取4類[5]。其中有監督的方法可以避免人工特征選擇,減小抽取誤差,是近年來信息抽取的研究熱點。依據實體識別及關系分類的先后順序,基于深度學習的有監督實體關系抽取方法可以分為流水線法(Pipeline)和聯合學習方法(Joint learning)兩類[6]。流水線方法先命名實體識別(Name entity recognition, NER)[7],再對實體與實體之間存在的關系進行分類(Relation classification, RC)[8]。流水線方法雖能實現實體關系抽取,但存在以下問題:①實體識別任務中產生的錯誤會在網絡中傳播,從而造成誤差積累。②先抽取實體再進行關系分類,沒有關系的候選實體會產生信息冗余。③忽略2個任務的內在聯系,無法捕捉到實體和關系之間的依賴信息[9]。
聯合學習方法[10]能夠利用實體和關系之間的信息,因此具有更好的性能表現。MIWA等[11]通過在雙向LSTM編碼層共享實體識別和關系抽取的網絡參數實現了聯合抽取。鄭麗敏等[12]提出一種基于依存分析面向食品安全事件新聞文本的實體關系抽取方法FSE_ERE。ZHENG等[13]將輸入的句子通過公用的Embedding層和BiLSTM層,使用LSTM和CNN分別進行實體識別命名和關系分類。上述共享參數的方法在順序上依然是先進行實體抽取再進行關系分類,沒有顯式刻畫2個任務之間的交互。
文獻[14]提出端到端神經網絡,以序列標注的方式實現實體關系的聯合抽取,但該模型采取就近原則分配關系,即一個實體在上下文中與多個實體存在關系時,模型只能將關系分配給距離最近的實體對,不能解決實體對的關系重疊問題。關系重疊文本信息豐富、結構復雜、抽取難度較大,是限制三元組抽取準確率的主要原因之一。為處理此類文本,文獻[15-16]通過將Token編碼傳入Sigmoid網絡層構建多頭選擇任務來同時進行實體頭和關系的決策。但是,將主客體隱藏層表示簡單相加作為關系向量的做法并不能有效表達實體間的信息關聯。文獻[17]提出一種基于CRF解碼的總體標注框架,針對關系重疊問題,對文本序列的每一個Token都做一次BIES標注。但大量的編碼工作導致算法復雜度高、計算成本巨大,難以在實際中應用。文獻[18]將關系建模為主體映射到客體的函數,按照SPO的順序對文本進行聯合抽取,通過多指針網絡解碼加強模型對關系重疊問題的處理能力。但對于文本中的長實體,多個Softmax激活的指針網絡造成的類別失衡會使模型傾向于學習數量較多的樣本(可能是無關信息),而對數量較少的正類樣本則需要更多次的學習。此外,將主體特征與句子特征直接相加作為客體抽取任務的輸入,不能在抽取客體時充分融合主體特征。
家禽疾病診療知識文本關系重疊現象普遍,實體關系抽取難度大。本文在現有聯合抽取方案的基礎上提出基于BERT(Bidirectional encoder representations from transformers)和雙重指針標注(Dual-pointer labeling,DPL)策略的家禽診療文本實體關系聯合抽取模型(Joint extraction of entity relationship of poultry disease diagnosis and treatment text,JEER_PD)。
家禽疾病診療文本包括家禽常見疾病的病癥、致病因素、疾病類型、可用藥物等實體信息。與農業其他領域的知識文本不同,家禽疾病診療知識文本因實體種類繁多而具有十分復雜的實體間對應關系。常見情況,如一種疾病對應多種病癥,各個病癥又存在不同的治療方案等。
現有研究并未在實體關系級別對該領域文本做出統一分類。如圖1所示,本文從主客體之間的聯系出發,將診療知識文本劃分為4種類型:
(1)普通類型(Normal),此類文本結構簡單,抽取難度最低。單個文本中只含有一對實體關系,文本中不存在關系重疊現象。
(2)單主體,多關系及客體類型(Ss-Mpo),此類文本單個主體與多個客體之間存在關系。如圖1所示,主體“青霉素”分別與客體“肌注”和“20~40 mg/kg”存在“用法”和“用量”關系。
(3)多主體,單關系及客體類型(Ms-Spo),此類文本多個主體與單個客體之間存在關系。圖1中,2個主體“土霉素”和“四環素”與客體“雞白痢”都存在“治療”關系。
(4)多主體,多關系及客體類型(Ms-Mpo),此類文本結構最為復雜。文本中的多個主體和多個客體之間存在一種或多種對應關系。圖1中,主體“腸痢擰”、“粘菌素”與客體“桿菌病”存在“治療”關系,同時“粘菌素”與客體“青霉素”存在“拮抗”關系。
依本文定義,Ss-Mpo、Ms-Spo和Ms-Mpo 3類均屬于關系重疊類型。處理此類文本時,現有的深度學習方法在抽取精度或處理速度上難以達到令人滿意的效果。
JEER_PD主要分為3部分:
(1)編碼部分。先對文本序列進行Token、Segment和Position 3級別的向量化操作。再將3個嵌入向量相加作為BERT語言模型的輸入,使用多層Transformer進行特征提取得到句編碼hN。
(2)主體抽取部分。建立2個主體指針標注器,分別對句編碼hN中所有主體的開始位置(head)和結束位置(tail)進行標注來完成主體抽取任務。
(3)客體關系聯合抽取部分。將主體向量參數化與句編碼hN經過CLN網絡層得到特征序列h′N。對于每一種關系分別建立2個指針標注器,抽取h′N包含的所有客體及關系。最后將抽取出的主體、客體和關系解碼,以三元組的形式輸出。
整體框架如圖2所示。
1.3 BERT 語義編碼
BERT是谷歌公司提出的預訓練語言模型[19]。該模型融合Mask language model和Next sentence prediction 2種訓練策略,極大提升了模型捕捉句子和詞語級別語義的能力。與Word2vec不同,BERT的語義編碼可以隨著模型訓練而更新,因此可以在實體關系聯合抽取任務中通過微調獲取更好的語義表達。
本文采用BERT發布的預訓練語言模型BERT-base,網絡層數為12層,隱藏層維度為768,總參數量為1.1×105。BERT對輸入句子的編碼過程如圖3所示。
文本輸入經過BERT編碼后得到融合文本信息和位置向量的句編碼hN,模型的關鍵任務就是對hN進行實體關系解碼。
序列標注和指針網絡方法是解碼任務常用的方法。序列標注任務本質上是將解碼問題轉換為多分類問題。序列標注常采用BIO標注方法,使用CNNs、RNNs或是BERT進行特征編碼,連接CRF條件隨機場或Softmax函數輔助實體識別[20]。標注過程中每一個Token只能被標識為一個實體類型。當實體發生重疊時,此方法無法對序列進行有效標注[21]。圖4為BIO標注方法對重疊實體的標注實例。
指針網絡方法最早應用于機器閱讀理解任務(Machine reading comprehension, MRC)中[22],該方法通常先對整個序列做2次Softmax預測答案的頭指針和尾指針,然后將2個指針的位置拼接輸出預測的答案。實體關系抽取任務的句子序列中可能存在一個或者多個實體。這時通過Softmax函數只能識別出概率最大的一個實體,無法解決多實體問題。
Sigmoid函數常用于處理多標簽二分類任務。在實體識別任務中,使用Sigmoid函數識別特征序列的實體,可以輸出所有滿足激活閾值的結果。Sigmoid激活函數表達式為
(1)
本文綜合序列標注和指針網絡2種方法,使用雙重指針標注方式DPL,將實體解碼拆分成2個相互獨立的指針標注任務。DPL以“0/1”的標注方式,分別標注實體的開始位置和結束位置,然后將實體首尾位置拼接輸出實體位置。這種方法可以對重疊實體進行有效標注,圖5為DPL標注示意圖。
1.4.1主體標注
在主體抽取層中通過2個Sigmoid指針標注器為每個Token分配一個0/1標簽以表示該Token是否為主體的開始或結束位置。具體操作為
(2)
(3)
Ws_head——頭指針參數矩陣
Ws_tail——尾指針參數矩陣
bs_head——頭指針偏置矩陣
bs_tail——尾指針偏置矩陣
f——Sigmoid激活函數
1.4.2客體標注
與主體識別層類似,客體關系聯合抽取層對每一種關系都分別建立2個用以識別客體頭和尾的指針標注器。
(4)
(5)
Wo_head、Wo_tail——客體頭、尾指針的參數矩陣
bo_head、bo_tail——客體頭、尾指針偏置矩陣
網絡層數的增加可以提高神經網絡的表達能力,同時也會引發模型訓練過程中梯度消失或梯度爆炸的現象[23]。為了解決這種情況,通常會在網絡層之間引入標準化(Normalization)操作加速訓練并在一定程度上對抗過擬合。在BERT等基于Transformer的模型中,常用的標準化方法是Layer normalization[24]。相比于另一個常用的標準化方法Batch normalization[25],前者在文本序列處理上有著更好的表現。一般Layer normalization的計算公式為
(6)
式中xi——句編碼hN第i個輸入特征
LN(xi)——網絡層輸出
μ——均值σ——方差
α、β——模型參數
α和β是模型訓練過程中由梯度下降得到的參數,用以防止除0錯誤。
抽取實體關系三元組時應充分考慮主體與客體之間的聯系。參照文獻[26]提出的條件批標準化(Conditional batch normalization,CBN),本文在客體關系聯合抽取層中使用CLN(Conditional layer normalization)網絡層實現主體向量的特征融合。實現過程如下:
(1)將識別出的主體向量s通過2個不同的變換矩陣轉換為2個與α和β維度相同的向量。
(2)將這2個向量加到α和β中,使α和β成為主體向量s的函數并參與網絡層標準化。
CLN使主體向量能夠以輸入條件的形式參與客體及關系的抽取任務,表達式為
α(s)=α+Wαs
(7)
β(s)=β+Wβs
(8)
(9)
式中 CLN(xi)——條件層標準化網絡(CLN)輸出
為防止擾亂初始預訓練權重,變換矩陣Wα和Wβ全零初始化。兩矩陣隨著訓練過程更新參數。
分析家禽疾病診療知識文本后發現,句子序列中需要抽取的目標實體數目(正類標簽)比非目標實體(負類標簽)少。以圖5為例,主體的正類標簽“1”與負類標簽“0”的比值為1/9,這種類別失衡現象會使模型傾向于學習數量較多的負類標簽的特征,影響模型的分類性能[27]。
欠采樣或過采樣這類數據層面的處理辦法雖能緩解類別失衡,但同時也會對樣本數量多的類別造成消極影響[28]。為緩解標簽類別失衡問題,本文使用了結合概率平衡策略(Probabilistic balancing strategy,PBS)的損失函數,計算方法為:
初始損失函數為二元交叉熵損失(Binary crossentropy)
(10)
式中yi——標簽類別,取0或1
pi——取正類樣本的概率
m——訓練批次大小
設平衡后的正類樣本概率為p′i;正負類樣本比值為K。對于平衡后的正負類樣本有

(11)
p′i與初始概率pi存在數量關系
(12)
n=logpip′i
(13)
求得的n為指數平衡因子。
平衡后的二元交叉熵損失函數為
(14)
JEER_PD的整體Loss由主體抽取任務的損失Losssub與客體關系抽取任務的損失Lossobj兩部分相加得到,公式為
LossJEER_PD=Losssub+Lossobj
(15)
使用OCR軟件對電子書籍進行文本識別,然后人工標記知識文本中的實體關系三元組。為提高標記質量,數據標注采用多人交叉標記驗證策略,最后得到包含家禽常見疾病、病癥、誘因、防控方法、可用藥等實體與關系的文本數據2 555條。
通過網絡爬蟲實現數據集拓展,從獸藥信息網上獲取常見獸醫藥的使用方法和用藥劑量等文本數據。經過數據清洗、數據蒸餾得到藥物使用方法和劑量文本數據1 124條,總計3 704條文本數據,其中含實體12 422個,關系6 211個。按7∶3劃分訓練和測試集,得到訓練數據2 591條,測試數據1 113條。文本數據分布情況如表1所示。

表1 文本數據信息
本實驗的硬件環境:處理器為Intel Xeon E5-2698,運行內存16 GB;運行環境:Tensorflow-1.14.0,Keras-2.2.4,Python 3.2。編譯軟件為PyCharm Community Edition 2019.3.3版64位;操作系統為Windows 7;文中插圖繪制工具為diagrams。
通過對樣本數據進行分析,主體和客體的正負類標簽數量比約為0.06和0.23,代入式(13),得到平衡因子nsub≈3、nobj≈2;最長數據文本有115字,因此將Max-len設置為115,其余短文本向量化時在末尾補0。指針標注器的激活閾值K默認值為0.5;使用權重滑動平均的自適應優化器Adam_EMA,初始學習率為5.0×10-5,最低學習率為1.0×10-5,訓練批次大小為64,迭代次數為200。
實驗模型采用準確率P(Precision)、召回率R(Recall)和F1(F1-score)3項綜合評價指標評估模型抽取實體關系三元組的性能表現。其中F1是準確率和召回率的加權平均,能夠更全面地衡量模型效果。
2.4.1綜合表現分析
本文設置多組對比實驗來驗證不同語言模型和標注方法的組合在實體關系抽取任務中的表現。對比實驗均采用統一評價指標,分別在同一數據集中對不同模型進行5次實驗并計算模型性能表現的均值。各模型的性能數據如表2所示。

表2 不同抽取模型的性能
由表2可見,JEER_PD在3個不同指標上均取得了最優表現。值得注意的是,結合DPL方法的BERT模型在不引入任何優化策略的情況下F1較BIO標注的同模型提升了13.63個百分點,這一點從效果上體現出DPL方法的優越性。
相較于BERT語言模型,Word2vec模型表現不佳。主要原因是:①預訓練的BERT語言模型比靜態編碼的Word2vec在表義能力方面更優。②Transformer特征提取器較BiLSTM+CNN的組合性能更優。
2.4.2不同標注方法實驗及分析
本文設計兩組實驗以研究標注方法對抽取結果的影響。
實驗1:按關系重疊類型劃分數據集,旨在縱向比較不同標注方法對模型處理關系重疊文本的影響。
實驗2:按關系三元組數量重新劃分數據集,以進一步探索不同標注方法下的各模型抽取多個三元組的能力。
兩實驗的對比模型和實驗數據一致。
實驗1的結果如圖6所示。由圖6可知,4個模型在抽取Normal類型的單個三元組時性能表現較為接近,但處理Ss-Mpo、Ms-Spo、Ms-Mpo這3類關系重疊類型的文本時,基于DPL方法的模型F1仍能夠維持93%以上,而基于BIO標注方法的模型隨著文本復雜度的提升,F1大幅下降。造成這種差距的主要原因是,基于DPL方法的模型按關系類別建立客體抽取任務,傾向于從給定的句子中抽取出盡可能多的實體關系。在處理關系重疊文本時,這種做法不僅簡化了抽取過程還可以增強模型抽取關系重疊文本的性能。
因數據樣本中擁有4個三元組以上的句子數量較少,故將此類文本合并為一類。文本數量分布如表3所示,圖7為實驗2中各模型的抽取效果。

表3 擁有不同數量三元組的文本數量
由圖7可見,參與實驗的4個模型中JEER_DP表現最優,基于DPL方法的BERT(BERT with DPL)次之。其余2個基于BIO標注方法的模型在抽取2個以上三元組數目的文本時與基于DPL方法的模型性能差距顯著。
實驗1和實驗2充分驗證了DPL方法從復雜文本中抽取實體關系三元組(一個或多個)的優越性。DPL方法不僅能使模型有效抽取關系重疊文本,還能提升對多三元組文本的抽取能力。
2.4.3CLN網絡層消融實驗及分析
從圖6和圖7中可以觀察到JEER_PD在2個實驗中性能均優于BERT with DPL。原因是JEER_PD擁有用于融合主體特征的CLN網絡層,而BERT with DPL在關系客體聯合抽取任務時僅將主體特征與句子特征相加作為輸入,這種做法不能充分體現主體抽取任務和關系客體聯合任務之間的聯系。
圖8展示了CLN網絡層整合主體向量的過程。主體向量s通過可更新參數的矩陣轉換為CLN網絡層的輸入,與句編碼hN各個Token的特征(xi)進行標準化融合,最終得到一個新的句編碼h′N。由于h′N的每一個Token都融合了主體特征,模型在對h′N解碼時更容易抽取出正確的客體及關系。
為驗證CLN網絡層對模型整體性能的影響,本文設計了網絡層消融實驗。結果如表4所示。

表4 CLN消融實驗結果
對比實驗結果可以發現,CLN網絡層在改善模型精度的同時也能進一步提升模型對三元組的整體抽取性能(Recall指標)。
表5列舉了因刪除CLN網絡層導致模型實體關系三元組抽取錯誤的樣例。對比樣例可以發現,刪除CLN網絡層的模型在抽取關系重疊文本時,可能因主體特征融合不充分而造成客體缺失或關系錯誤識別。

表5 消除CLN網絡層導致識別錯誤的案例
上述實驗證明了CLN網絡層融合主體特征的有效性。CLN網絡層使模型注重于抽取與主體特征聯系更為緊密客體及關系,能在一定程度上提升模型的準確率和召回率并增強模型魯棒性。
(1)使用BERT預訓練語言模型進行文本向量化,借助Transformer實現句子特征編碼。相較于Word2vec編碼的同類模型,JEER_PD取得了9.9個百分點的F1提升。
(2)使用DPL方法提升模型對3類關系重疊文本的抽取能力,較BIO標注策略的BERT模型最高取得17.61個百分點的F1提升。
(3)在客體關系聯合抽取任務中使用CLN網絡層融合主體特征,強化主體抽取和關系客體聯合抽取任務之間的聯系,進一步提升了模型的整體抽取性能。
(4)實驗證明,JEER_PD能夠對家禽診療知識文本中復雜的實體關系進行有效抽取(實驗F1達到96.74%)。JEER_PD抽取三元組的準確率高、性能穩定,可以為構建家禽養殖知識圖譜和信息化養殖體系賦能。