SemEval-2020自由文本关系抽取冠军方案解读 (附NLP竞赛常用技巧总结)
本文將回顧平安人壽近期在PaperWeekly ×?Biendata直播間進行的主題為「SemEval-2020自由文本關(guān)系抽取冠軍方案解讀(附NLP競賽常用技巧總結(jié))」的技術(shù)分享,由平安人壽AI團隊資深算法工程師謝舒翼老師主講。
全文框架概覽
1. 賽題介紹
SemEval 由 ACL(國際計算語言學(xué)協(xié)會)主辦,是全球范圍影響力最強、規(guī)模最大、參賽人數(shù)最多的詞匯與語義計算領(lǐng)域權(quán)威賽事,迄今已舉辦 14 屆,歷屆吸引了卡內(nèi)基梅隆大學(xué)、TCS Research、百度、美團、科大訊飛等國內(nèi)外一流高校、頂級科研機構(gòu)和知名企業(yè)參與。
1.1 任務(wù)簡介
本次我們參賽任務(wù)為DeftEval: Extracting term-definition pairs in free text(自由文本定義抽取)。在該任務(wù)中,我們團隊以滿分成績奪得了關(guān)系抽取賽道冠軍。
?
?
主辦方提供了兩萬多條從專業(yè)工具書篩選的句子,覆蓋生物、歷史、物理、心理學(xué)、金融、社會、政治等多個專業(yè)領(lǐng)域。該任務(wù)包含以下三個子任務(wù):
?
Subtask1:給定一個句子,判斷該句子里是否包含定義
Subtask2:在給定tag schema下的詞粒度BIO標簽預(yù)測
Subtask3:在給定relation schema下的關(guān)系抽取
?
其中,Subtask2的tag schema包含以下六種:
Term: A primary term.
Alias?Term: A secondary or less common name for the primary term. Links to a term tag.
Referential Term: A noun phrase(NP) reference to a previously mentioned term tag. Typically?this/that/these + NP?following a sentence boundary.
Definition: A primary definition of a term. May not exist without a matching term.
Referential Definition: NP reference to a previously mentioned definition tag. See Referential Term.
Qualifier: A specific date, location, or other condition under which the definition holds true. Typically seen at the clause level.
?
Subtask3的relation schema包含以下五種:
Direct-defines: Links definition to term.
Indirect-defines: Links definition to referential term or term to referential definition.
Refers-to: Links referential term to term or referential definition to definition.
AKA: Links alias term to term.
Supplements : Links qualifier to term.
?
1.2?數(shù)據(jù)集格式
訓(xùn)練數(shù)據(jù)集如下圖所示有8列,用tab分隔,句子之間有空行,段落用2個空行分隔。
?
TOKEN是句子里的單詞;
SOURCE標識當(dāng)前句子來源于哪篇文章;
START/END是單詞在文章中的起始位置;
TAG則是來自于前面所述tag schema里的標簽,符合BIO標注格式;
TAG_ID是TAG標簽的一個唯一標識,如果O標簽則為-1;
ROOT_ID是指在關(guān)系中當(dāng)前TAG_ID所關(guān)聯(lián)的TAG_ID,下面表格中T10是對T9的一個定義,所以T10的ROOT_ID為T9;
RELATION則是上文relation schema里介紹的關(guān)系,表中的例子為Direct-Defines關(guān)系。
?
Subtask1判斷一句話是否包含定義,Subtask2,已知前四列信息,預(yù)測第五列Tag,Subtask3,已知前六列信息,預(yù)測ROOT_ID和關(guān)系。
?
1.3?評估方法
以下是本次比賽三個任務(wù)的評測方案。
?
Subtask 1: 句子分類官方將對正負樣本的準確率,召回率和F1值進行評估,但官方排名只看正樣本的F1值。
Subtask 2: 序列標注官方將評估每個標簽類別的準確率,召回率和F1值,以及所有類別的整體macro- and micro-averaged F1 。但官方排名只看所有評估類別的macro-averaged F1。被評估的類別包括:Term, Alias-Term, Referential-Term, Definition, Referential-Definition, and Qualifier。
Subtask 3: 關(guān)系抽取官方將評估每個關(guān)系類別的準確率,召回率和F1值,以及所有關(guān)系類別的整體macro- and micro-averaged F1 。但官方排名只看所有評估關(guān)系類別的macro-averaged F1。被評估的關(guān)系類別包括:Direct-defines, Indirect-defines, Refers-to, AKA, and Supplements。
也即任務(wù)1只看正樣本的F1值,任務(wù)2,3則以所有類別的Macro-F1為評價指標,其中Macro-F1是指分別計算每個類別的F1,然后做平均(各類別F1的權(quán)重相同),此種評價標準對小樣本數(shù)據(jù)類別的準確率有較高的要求。
?
2. 任務(wù)分析
?
2.1 EDA (Exploratory Data Analysis)
通過統(tǒng)計的方法,分析訓(xùn)練樣本句式,各類標簽占比。我們發(fā)現(xiàn)40%左右的常見定義句式都是Term be Definition和Definition be called Term這兩種格式。
?
比如:
Term is/are Definition 在definition句子中占比約為27.31%
示例:The small intestine is the organ where the digestion of protein , fats , and carbohydrates is completed.
Definition be called Term 在definition句子中占比約為13.12%
示例:The process by which capital ages and loses value is called depreciation.
?
?
經(jīng)過統(tǒng)計發(fā)現(xiàn),包含定義的句子在所有句子里占比23%左右,也即任務(wù)1的正樣本數(shù)量不到負樣本的三分之一,這對我們后面模型損失函數(shù)的超參數(shù)設(shè)計有一定指導(dǎo)作用。關(guān)系標簽里占比最多的是直接定義,占到85-89%的比例,其他的關(guān)系標簽都屬于小樣本標簽,這些都是后續(xù)數(shù)據(jù)增強重點關(guān)注類別。
?
另外我們還對句子長度,跨句關(guān)聯(lián)比例,段落句子個數(shù),噪音文本等特征進行了統(tǒng)計。其中兩個關(guān)聯(lián)標簽分布在相鄰兩個句子的情況,是本次賽題的難點。
?
對train/dev/test統(tǒng)計分析如下:
train/dev中跨距關(guān)聯(lián)語句占比約為0.02,大部分都是本句關(guān)聯(lián)的
train/dev/test語句長度約在26個單詞左右
train/dev/test中每個段落大約由4個句子組成
訓(xùn)練集里段落開頭的數(shù)字單句要清洗
?
針對不同領(lǐng)域中不同標簽占比進行統(tǒng)計分析發(fā)現(xiàn),訓(xùn)練集/驗證集/測試集在不同領(lǐng)域內(nèi)的不同標簽分布基本相同,同時統(tǒng)計每個領(lǐng)域內(nèi)每個標簽的占比可知,government領(lǐng)域中只有13.16%的數(shù)據(jù)帶有標簽,而biology領(lǐng)域中大約有33.79%的數(shù)據(jù)帶有標簽,遠大于government。且biology領(lǐng)域內(nèi)Qualifier標簽遠大于其他領(lǐng)域,占比約為0.73%,其他領(lǐng)域均小于0.2%。這些是符合常理認知的。
?
?
通過統(tǒng)計分析,我們還發(fā)現(xiàn)句子之間的一些關(guān)聯(lián)性
一個句子如果包含定義,則一定含有Definition標簽
各種實體之間的關(guān)系都是圍繞定義或者實體本身
實體和定義可能不在同一句話里
指代定義通常是兩個相鄰的句子
?
2.2 數(shù)據(jù)增強
通常來說,英文文本的數(shù)據(jù)增強可以采用單復(fù)數(shù)、縮寫、上下位詞的替換,還可以通過隨機增加、刪除或者改寫來生成新的樣本?;刈g法也是常用的方法,就是先把英文翻譯成其他語言再回譯成英文。英文里使用nltk,wordnet可以獲取單詞的同義詞。
這里我們用到了Crafting Text Adversarial Samples的思想:一個單詞有高貢獻是指去掉它后文本將被分為當(dāng)前類的概率大幅減小。生成擴充語料的一個重要方面就是要保持樣本的語義 。
?
在我們的任務(wù)中定義專有名詞不能替換,句子要保持通順。
?
Subtask1可以用回譯法,Subtask2只能用同義詞替換保持句子單詞數(shù)一致。下圖中新句子里紅色的單詞是我們經(jīng)過替換產(chǎn)生的。
?
2.3 定義抽取關(guān)系抽取傳統(tǒng)方法
傳統(tǒng)的定義抽取方法一般有規(guī)則模版方法和基于特征工程的機器學(xué)習(xí)方法。我們基于觀察和統(tǒng)計,會發(fā)現(xiàn)很多定義都是有定義連接動詞的,但是有定義連接動詞的pattern匹配到的也未必是定義。另一方面,用規(guī)則模版,特征工程的方法并不能在保持準確率的同時具有良好的泛化性。
?
而傳統(tǒng)的關(guān)系抽取一般分兩步走,先識別出實體,再判斷出實體之間的關(guān)系。實體識別通常有雙指針方法以及深度學(xué)習(xí)模型+CRF等方法,關(guān)系抽取可以轉(zhuǎn)化為分類問題。
?
?
3.?模型構(gòu)建
?
3.1 多任務(wù)學(xué)習(xí)
本賽題多個任務(wù)存在較強的關(guān)聯(lián)性,Subtask2中如果預(yù)測出一些單詞為Definition,則對應(yīng)句子在Subtask1中應(yīng)屬于正樣本。為解決傳統(tǒng)方法的累積誤差,我們引入多任務(wù)聯(lián)合學(xué)習(xí)框架。多任務(wù)學(xué)習(xí)有以下三個好處:
?
隱式數(shù)據(jù)增強:有效地增加了我們用于訓(xùn)練模型的樣本量。由于所有數(shù)據(jù)都存在噪聲,因此在對某個任務(wù)A進行模型訓(xùn)練時,我們的目標是學(xué)習(xí)任務(wù)A的良好表示形式,理想情況下可以忽略與數(shù)據(jù)相關(guān)的噪聲并很好地進行概括。由于不同的任務(wù)具有不同的噪聲模式,僅學(xué)習(xí)任務(wù)A可能會過擬合任務(wù)A,而學(xué)習(xí)A和B則可以使模型通過平均噪聲模式獲得更好的表示。
更通用的文本表達:聯(lián)合訓(xùn)練模型傾向于學(xué)到每個子任務(wù)都能學(xué)到的表達,這也將有助于該模型將來推廣到新任務(wù),因為對于足夠多的訓(xùn)練任務(wù)而言表現(xiàn)良好的假設(shè)空間,只要它們來自同一環(huán)境,對于學(xué)習(xí)新穎任務(wù)也將表現(xiàn)良好。
特征選擇雙重檢驗:如果一個feature對多個任務(wù)都非常重要,則這個feature很有可能對通用文本表達非常重要。
?
通常來說,多任務(wù)學(xué)習(xí)分為hard parameter sharing和soft parameter sharing, 其中soft parameter sharing每個任務(wù)有自己的參數(shù),最后通過對不同任務(wù)的參數(shù)之間的差異加約束,表達相似性。
?
?
我們在建模過程中采用hard parameter sharing的方式,定義抽取任務(wù)和序列標注任務(wù)共享一個Shared Layer用以學(xué)習(xí)句子單詞通用的表達,然后不同的任務(wù)各自有自己的Task Specific Layer。
?
關(guān)于損失函數(shù)的設(shè)計,我們定義
其中是第i個單詞標簽為的概率,是CRF里轉(zhuǎn)移矩陣標簽到的概率,序列標注的損失函數(shù)為最大路徑得分除以所有路徑得分再取log的負數(shù)。?
分類任務(wù)的損失函數(shù)為
其中y是正確標簽,是預(yù)測概率,我們在交叉熵的基礎(chǔ)上增加了兩個超參數(shù),用來控制正負樣本的權(quán)重和容易分類樣本對整體損失貢獻的權(quán)重。當(dāng)樣本為正的時候,標簽y=1,損失函數(shù)第二項為0,alpha的大小控制著正樣本的權(quán)重,alpha越大,把正樣本分錯產(chǎn)生的損失也越大。當(dāng)一個正樣本比較容易分類,預(yù)測值會非常接近1,當(dāng)gamma越大的時候,容易分類樣本貢獻的損失也會越小,難分類樣本貢獻的損失會越大。
訓(xùn)練過程我們采用先訓(xùn)練Subtask2,再訓(xùn)練Subtask1,交替訓(xùn)練的方法。為解決訓(xùn)練數(shù)據(jù)不足,我們引入Pseudo-Label的技巧,但控制數(shù)量占比不超過有標簽數(shù)據(jù)的十分之一。所謂Pseudo-Label,就是先用有標簽數(shù)據(jù)訓(xùn)練一個模型,然后預(yù)測無標簽數(shù)據(jù),將概率較高的無標簽數(shù)據(jù)打上偽標簽,然后加入到訓(xùn)練數(shù)據(jù)中重新訓(xùn)練模型。
?
3.2 關(guān)系抽取模型
我們提出Enhancement Inference BERT模型對關(guān)系進行抽取 。模型輸入兩個實體,其中詞向量取BERT最后四層hidden states的token embedding求平均。計算兩個實體之間單詞的Attention,然后通過TextB里詞向量乘以一個歸一化參數(shù)得到TextA的交互表達,同樣的方式得到TextB的交互表達,最后通過差積,點積等操作,經(jīng)過MLP,Softmax層輸出關(guān)系label。
?
模型融合方面,我們采用五個預(yù)訓(xùn)練模型,五折交叉驗證得到25個預(yù)測結(jié)果,然后采用hard voting的方式輸出結(jié)果。其中XLM-Roberta是一個多語言訓(xùn)練模型,不需要傳入額外的參數(shù)來指定當(dāng)前輸入的語言,模型可以通過input_id自己識別。
?
模型融合之后,我們會輔助一些實體糾正規(guī)則,用來解決一些嵌套NER,一詞多tag的情況。
?
4.?總結(jié)
?
4.1比賽總結(jié)
本次比賽我們使用多任務(wù)聯(lián)合訓(xùn)練框架,對定義抽取和詞粒度BIO標注兩項任務(wù)進行聯(lián)合建模。提出Enhancement Inference BERT對實體關(guān)系進行分類,加上規(guī)則輔助對關(guān)系抽取任務(wù)進行預(yù)測。最終在關(guān)系抽取任務(wù)中獲得第一。
?
數(shù)據(jù)集存在多重定義以及長距離的指代關(guān)系,同一句話存在不同的實體標注和關(guān)系,當(dāng)前討論的實體在前文或后文中描述過,需要結(jié)合上下文信息才能預(yù)測出結(jié)果,這些都對準確識別提出了很高的要求。光靠模型很難學(xué)習(xí)到一句多義的情況。因此本次比賽采用實體規(guī)則對模型預(yù)測實體結(jié)果進行糾正,實驗結(jié)果如下所示:
?
?
4.2?NLP競賽常用解題技巧總結(jié)
?
拿到賽題,我們首先需要理解題目和評測目標,瀏覽訓(xùn)練數(shù)據(jù)格式,分析數(shù)據(jù)各個類別占比,數(shù)據(jù)集的大小,會影響 Epoch 的數(shù)量,而很多學(xué)習(xí)率衰減策略是直接與 Epoch 相關(guān)的。異常點檢測有3σ原則,Isolation Forest等方法 。1-2萬的數(shù)據(jù)量,經(jīng)驗規(guī)則預(yù)訓(xùn)練模型Epoch 10-20次。
?
先保證baseline的合理性,后期再加入數(shù)據(jù)增強。效果第一,用大模型(中文BERT,ERNIE,NEZHA,英文BERT,Roberta,XLNET等)去擬合小數(shù)據(jù),正則化,Batch不用太大。固定隨機 seed,始終使用固定的隨機 seed 能保證很多屬性,例如在我們兩次運行相同代碼時能得到相同的輸出。這能消除變化因子,進行合理的判斷。
?
構(gòu)建合理的Local CV至關(guān)重要,在test數(shù)據(jù)集放出來之前,我們通過五折交叉驗證拆分訓(xùn)練集和驗證集,把dev數(shù)據(jù)集作為test數(shù)據(jù)集。本地評估體系是驗證新模型,新方案的有效手段。
?
過擬合,典型的表現(xiàn)為訓(xùn)練集損失遠遠小于驗證集損失。除了常規(guī)的正則化,early stop等方法外,這里介紹一種Adversarial Training的方法,一般用于test數(shù)據(jù)集發(fā)布之后,訓(xùn)練一個分類器用于區(qū)分訓(xùn)練集和測試集,選取最像測試數(shù)據(jù)的前k個訓(xùn)練數(shù)據(jù)作為最終模型的驗證數(shù)據(jù)。
?
模型輸入也有許多優(yōu)化方法,BPE(Byte-Pair Encoding)是其中一種,這種方法可以擴大詞匯表,使unknown出現(xiàn)的少。對于字向量與詞向量如果要采用相加的形式組合在一起,可以把詞向量重復(fù)n次,n表示的是當(dāng)前詞有多少個字。
?
Ensemble里單模型的Diversity越大,最終Model的Bias就越低。在實際中很有可能表現(xiàn)相近的Model只有寥寥幾個而且它們之間相關(guān)性還不低,但是實踐告訴我們即使在這種情況下Ensemble還是能大幅提高成績。
打 NLP 比賽像是搜索解空間,不斷尋找下一個更優(yōu)解,直到比賽結(jié)束。這樣看來,快速構(gòu)建一個 baseline,建立可靠的 Local CV 系統(tǒng),然后不斷嘗試并驗證新想法,收獲好成績似乎也有跡可循。
?
?
5.?應(yīng)用價值
?
此次參賽所應(yīng)用到的創(chuàng)新技術(shù),在實際業(yè)務(wù)場景中,可支持保險信息抽取、保險實體識別、文本挖掘等技術(shù)應(yīng)用,對搭建壽險垂直領(lǐng)域的知識圖譜起到重要推動作用,能大幅提升對話式機器人的響應(yīng)效率和服務(wù)體驗。
?
目前對話式機器人作為平安人壽智能轉(zhuǎn)型的利器之一,在代理人賦能和客戶服務(wù)兩大業(yè)務(wù)體系中已大規(guī)模落地,覆蓋招聘、培訓(xùn)、銷售支持、客服等業(yè)務(wù)場景,并將持續(xù)發(fā)揮價值。
# 資料獲取 #
本期直播視頻及資料獲取方式如下:
?1 / 掃碼關(guān)注?
長按識別二維碼,關(guān)注「平安壽險PAI」
?
? 2?/ 回復(fù)暗號?
在后臺回復(fù)“關(guān)系抽取”即可獲取下載鏈接
更多閱讀
????
現(xiàn)在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關(guān)注」訂閱我們的專欄吧
關(guān)于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學(xué)術(shù)平臺。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結(jié)
以上是生活随笔為你收集整理的SemEval-2020自由文本关系抽取冠军方案解读 (附NLP竞赛常用技巧总结)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 9000 人参与施工,“中国重载第一路”
- 下一篇: 百度机器翻译已经进化到什么程度?