近日,在全球權威NLP大賽SemEval-2020 中,平安人壽AI團隊斬獲自由文本信息抽取(DeftEval: Extracting term-defination pairs in free text)競賽關係抽取賽道冠軍。該賽題任務包含了定義抽取、實體標註、關係抽取三項NLP技術難點。在比賽中,壽險AI團隊圍繞解決三個賽題子任務,提出了一整套信息抽取技術方案,綜合運用聯合訓練框架、上下文實體定義位置捕獲、數據增強等前沿技術手段,大幅提升算法模型對專業概念名詞和複雜句式的理解和處理的能力,最終以滿分成績奪得關係抽取賽道排名第一。本文將對壽險AI團隊的完整解題思路和技術細節進行詳解。
圖1.1 平安人壽AI團隊位列關係抽取賽道榜單第一
1.比賽介紹
1.1背景簡介
定義抽取是信息抽取的一個重要分支,是自然語言處理研究中的一個熱門領域,其目的是識別非結構化文本中的術語及相應的定義。目前自由文本和半結構化文本中Term-Definition Pair的定義抽取是一個極具挑戰性的領域。
1.2 賽題介紹
本次賽題旨在從DEFT語料庫中提取術語定義對。該語料庫包含了從cnx.org(課程資源平臺)的各種專業教科書中提取出來的大約7000組句子集。每個句子集反映一個上下文窗口,原始文本的作者在該窗口周圍標記一個黑體字以標示一個關鍵術語。每個分組可能有多個術語定義對,也可能沒有術語定義對。其中Train和Dev數據都是以類似CONLL制表符的格式提供的。每一行代表一個token及其特性,每個句子之間用一個空行分隔,每個上下文窗口之間用兩個空行分隔,每個token特性表示如下所示: [token][SOURCE][START_CHAR][END_CHAR][TAG][TAG_ID][ROOT_ID][RELATION]
其中:
SOURCE:表示摘錄的原始txt文件。
START_CHAR / END_CHAR:表示token字符的開始、結束索引邊界。
TAG:表示token的標籤(B-[TAG]、I-[TAG]分別表示開始和中間標籤,O表示不屬於任務關係定義)。
TAG_ID:表示與此標記關聯的ID(如果沒有,則為0)。
ROOT_ID :表示與此關係的根相關聯的ID(如果沒有關係即TAG為O,則ROOT_ID為1;如果是根,則ROOT_ID為0;如果不是根,則ROOT_ID為根的TAG_ID)。
RELATION:表示token之間的TAG關係(如果沒有,則為0)。
本次賽題主要包含三個子任務:
Subtask1: 句子分類任務,給定一個句子,對它是否包含定義進行分類,若包含定義則預測結果為1,否則為0,評價指標為F1值,這是傳統的定義抽取任務。
Subtask2: 序列標註任務,根據語料庫的標記規範,用BIO標記標註每個標記,即通過給定的token、SOURCE、START_CHAR 、END_CHAR信息,對TAG標籤進行預測。該子任務中,預測的標記類別包括:術語(Term)、別名術語(Alias-Term)、引用術語(Referential-Term)、定義(Definition)、引用定義(Referential-Definition)和限定符(Qualifier)。評估指標基於macro-averaged F1。
Subtask3: 關係抽取任務,給定標記序列標籤,根據語料庫的關係規範標記每個標記之間的關係,即通過給定的token、SOURCE、START_CHAR 、END_CHAR、TAG、TAG_ID信息,對ROOT_ID 及RELATION進行預測。該子任務中,評價關係包括:直接定義(Direct-Defines)、間接定義(Indirect-Defines)、引用(Refers-To)、別名引用(AKA)和限定關係(Supplements)。評估指標基於macro-averaged F1。
1.3比賽挑戰
本次比賽任務難度非常大,一方面數據集涉及生物、歷史、物理、心理學、金融、社會、政治等非常多的專業領域的概念,很多的專業概念的理解對於人來說挑戰都很大,需要具備深厚的知識背景;另一方面數據集句子句式非常複雜,存在大量排比、倒裝、跨句指代、交叉引用、別名引用等複雜句式,而在實體的定義描述上存在直接定義、間接定義、補充定義、指代定義等多種關係。除此之外,部分數據集存在多重定義以及長距離的指代關係,同樣一句話存在不同的實體標註和關係,當前討論的實體在前文或者後文描述過,這些都對準確識別提出了很高的要求。
2.解決方案介紹
本次比賽,基於賽題任務的深度理解,平安人壽AI團隊提出了一整套的解決方案,最終取得了關係抽取賽道第一名的成績。
1、建模過程中,提出了多任務聯合訓練框架,設計出共享參數層,將多個任務的不同損失函數和評價指標融合在一起進行聯合訓練。
2、將底層BERT,ROBERTA,ALBERT,XLMROBERTA等基礎模型交叉驗證與最優尋參;最終產生20幾個模型進行融合;並將結果當作CRF的輸入,來學習到BIO序列標註的約束條件。
3、對BERT的輸入進行改造,用以捕獲長距離實體與定義之間的位置關係,並挖掘出了存在不同標註關係的句式結構,結合上下文實體信息對模型預測出來的結果做最後修正。
本次比賽定義抽取任務和實體序列標註任務在同一階段進行,
關係抽取任務在第二階段進行,因此我們分為兩部分對比賽的技術細節進行闡述。
2.1 定義抽取及序列標註方案
2.1.1模型結構設計
本次賽題的前兩個任務是分類任務、序列標註任務,為了將兩個任務特徵信息進行互補,我們提出了多任務聯合訓練框架,將定義分類任務和實體標註任務進行聯合訓練,設計出比單個模型魯棒性更強的集成模型,結構圖如下所示:
圖2.1.1-模型網絡結構
其中輸入部分,分類任務的輸入除了包含文本特性信息還包括實體抽取任務的標籤,同理實體抽取任務的輸入除了包含文本特性信息還包括分類任務的標籤。然後經過多層transformers模型,將輸入進行編碼,得到每個token對應的embedding vector。共享參數層可以是BERT,XLNET,ALBERT,ROBERTA等預訓練模型,如果基模型採用XLNET,這裡就是經過多層transformers-xl模型,最後送入特定任務網絡層。
對於實體標註任務,我們在最後一層使用CRF模型來學習序列間的約束信息,這些約束可以由CRF層在訓練數據集自動學習。
我們通過對數據進行概率統計,得到轉移矩陣如下:
直觀上來看,可以發現以下一些約束條件:
句子中第一個單詞的標籤應該是「B-[tag]」或「O」,而不是「I-[tag]」一個實體信息的第一個標籤應該「B-[tag]」而不是「I-[tag]」「B-tag1 I-tag2 I-tag3 …」中,tag1, tag2, tag3 …應該是相同的信息標籤基模型會得到發射概率,而CRF會訓練轉移矩陣得分,隨著訓練迭代,慢慢會學到一些標籤約束。模型得分為兩者之和如下所示:
其中為預測標籤序列,為第個位置softmax輸出為的概率,是從到的轉移概率,注意tag數為t時,增加開始結束位置之後轉移概率矩陣的維度為(t+2)*(t+2)。歸一化之後可以得到概率值:
2.1.2損失函數設計
聯合訓練的難點在於損失函數的設計,傳統的方法基本有基於直接加和的方式,我們提出一種基於任務的不確定性去捕捉分類任務和序列標註問題的權重係數,從而解決兩種任務不同的損失函數造成的不同的尺度問題。
假設真實序列標記為,序列標註的對數損失函數如下:
分類損失函數表示為:
利用同方差不確定性作為加權損失的基礎,我們在損失函數加入一個噪聲作為縮放因子:
序列標註的損失函數如上節公式(3)所示,聯合這兩個任務最小化目標為:
其中幅度和各自任務不確定性有關,決定了離散分布的均勻性。
2.1.3模型融合與調參
為了提升模型的泛化效果,解決數據偏少帶來的過擬合問題,我們使用了多模型rank average的方案,將底層BERT,ROBERTA,ALBERT,XLMROBERTA等基礎模型經過交叉驗證與最優尋參產生20幾個模型進行融合。最終輸出定義抽取和實體標註的結果。
同時訓練初期階段,由於模型權重變化較大,為了避免模型過擬合現象,保持分布的平穩,訓練初期暫時frozen某一任務權重,並減小另一個任務的學習率,調整warm-up比例。最終對比效果如下所示:
2.2實體關係抽取方案
在關係抽取任務中,使用BERT,ROBERTA,XLNET作為基模型對關係抽取任務進行建模,再進行結果融合,我們以BERT為例,其網絡輸入輸出格式如下圖所示,為了捕捉到長距離實體與定義的位置信息,模型輸入階段,我們在實體與定義的前後插入特殊字符#,輸入句子的構成設計為:[[CLS] sentence [#] definition1 [#]sentence [#] entity1 [#] sentence [#] entity2 [#] sentence]。
圖2.2 關係抽取網絡輸入輸出結構圖
輸入編碼除了包含新加的實體標註信息,類別標註信息,還包括TAG_ID,輸出等三部分特徵,最終預測ROOT_ID和關係類別。
圖中對於三個BIO TAG的特徵,Bert輸出對應位置隱藏向量分別如下:
其中向量為Bert對應於第一個BIO TAG序列中各個token所產生的隱藏狀態向量,向量為Bert對應於第二個BIO TAG序列中各個token產生的隱藏狀態向量,向量為Bert對應於BIO TAG序列中各個token產生的隱藏狀態向量。為某一個token對應的隱藏向量,對BIO TAG序列裡每一個token信息求一個平均然後接入tanh激活函數,同時權重係數為共享參數,偏置也為共享參數:。此外,我們在語句中的詞級別上添加了注意力機制,主要體現在實體和定義上,讓經過BERT編碼後的語義向量在語句中定義相關的詞上有了重心。
接著,我們對start,end較為接近的三個BIO TAG特徵輸出需要兩兩判斷是否屬於五類關係之一,對特徵向量算cosine餘弦距離,大於某個閾值則輸出1,否則輸出0,然後將對應標籤為1的情況進行關係匹配進而確定TAG_ID對應的ROOT_ID,最後根據匹配的ROOT_ID和TAG_ID進行關係類別的映射。
同時考慮到本次任務要考慮上下文信息,因此以文本窗口為單位進行擴充輸入。
由於本次賽題句式比較複雜,很多句子實體關係都是跨句定義的,需要結合上下文信息進行判斷預測,同時也存在一個相同的句子或句式結構對應不同的實體關係等問題,模型很難區分處理。因此,我們通過上下文實體標註及語法樹分析對一些特殊情況ROOT_ID的預測進行修正,再通過BIO_TAG,TAG_ID和ROOT_ID來確定實體關係,需要注意的是同一個定義對應的關係會隨著ROOT_ID的標註不同而隨著變化。
2.3數據增強
另一個值得一提的小技巧是數據增強,提升模型的泛化效果,同時解決用於數據類別不均衡問題。在本賽題裡,我們對於訓練數據較少的標籤,如Qualifier,Referential-Definition等進行了數據擴充,用到的方法包括基於詞向量的同義詞替換,單複數替換,代詞替換等。通過一定的數據增強方法,使得模型在小類別樣本上的泛化能力有一定的提升。
3.應用價值
平安人壽AI團隊此次參賽所應用到的創新技術,在實際業務場景中,可支持保險信息抽取、保險實體識別、文本挖掘等技術應用,對搭建壽險垂直領域的知識圖譜起到重要推動作用,能大幅提升對話式機器人的響應效率和服務體驗。目前對話式機器人作為平安人壽智能轉型的利器之一,在代理人賦能和客戶服務兩大業務體系中已大規模落地麼,覆蓋招聘、培訓、銷售支持、客服等業務場景,並將持續發揮價值。
Reference:
1 Kendall A , Gal Y , Cipolla R . Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics[J]. 2017.
2 Wu S , He Y . Enriching Pre-trained Language Model with Entity Information for Relation Classification[J]. 2019.
3 Giorgi J , Wang X , Sahar N , et al. End-to-end Named Entity Recognition and Relation Extraction using Pre-trained Language Models[J]. 2019.
4 Soares L B , Fitzgerald N , Ling J , et al. Matching the Blanks: Distributional Similarity for Relation Learning[J]. 2019.
5 Sasha Spala, Nicholas A Miller, Yiming Yang, Franck Dernoncourt, Carl Dockhorn. DEFT: A corpus for definition extraction in free- and semi-structured text[J]. 2019. Association for Computational Linguistics
6 Fahmi, I., and Bouma, G.. Learning to identify definitions using syntactic features. In Proceedings of the Workshop on Learning Structured Information in Natural Language Applications[J]. 2006.