信息抽取新SOTA!首个结构化生成式信息抽取预训练模型,一统信息抽取四大任务...
?PaperWeekly 原創 ·?作者 | 樊潤澤
單位 | 中科院計算技術研究所
研究方向 | 信息抽取
前兩天在 arxiv 刷到了一篇已被 ACL 2022 主會接受的文章,題名《Unified Structure Generation for Universal Information Extraction》,簡單看了摘要后整個震驚。作者采用生成式 text to structure 結構統一了信息抽取的四個任務,并且在 13 個數據集上采用全監督、低資源和少樣本設置下均取得了 SOTA。
論文標題:
Unified Structure Generation for Universal Information Extraction
論文作者:
Yaojie Lu, Qing Liu, Dai Dai, Xinyan Xiao, Hongyu Lin, Xianpei Han, Le Sun, Hua Wu
作者單位:
中科院軟件所中文信息處理實驗室,百度
收錄會議:
ACL 2022
論文鏈接:
https://arxiv.org/abs/2203.12277
Demo鏈接:
https://universal-ie.github.io/
研究背景與動機
文章主要針對信息抽取的四個任務:命名實體識別、關系抽取、事件抽取和觀點抽取。信息抽取旨在從無結構的自然語言文本中抽取出結構化的信息,但是不同的信息抽取任務都有不同的結構,且差異較大。如圖 1 所示,實體識別任務一般是采用 span 及其實體類別表示,關系抽取任務一般采用三元組(triplet)結構表示,事件抽取任務一般采用記錄(record)表示,觀點抽取任務采用三元組(triplet)來表示。
▲ 圖1:信息抽取任務的不同結構與統一化信息抽取模型
不同的輸出結構使得很難對所有信息抽取任務統一化建模,這樣就產生了三個問題:
由于不同的任務、不同的設置(全監督、低資源、少樣本、零樣本)、不同的作用場景(醫學、金融等),研究人員需要設計大量針對特定情況的模型,這是一件極其耗費資源的事情。
不同的任務有很多可以公用的知識,比如從圖 1 中的(a)圖可以看出,關系抽取需要用到命名實體識別的結果,事件抽取中的論元也是實體,而現在存在大量的針對特定任務的模型無法做到共享這些實體知識。
信息抽取的數據標注是一件極其耗費時間和人力的事情,但由于任務之間的獨立,需要對每一個任務都標注數據。
針對上述問題,文章做了如下貢獻:
設計了一種結構化抽取語言(Structural Extraction Language, SEL),它能夠將四種信息抽取任務的不同結構統一描述,使得模型的輸出結構針對不同任務都是一致的。
由于模型可以做多個任務,所以需要一種方式去指導模型做指定的任務,因此作者設計了結構化模式指導器(Structural Schema Instructor, SSI),其實這就是一種 prompt。
由于模型的輸出都是符合 SEL 語法的結構化信息,而目前常用的生成式預訓練模型如 T5、BART 都是以生成自然語言為主,若直接采用這種預訓練模型會影響到模型性能,因此作者專門針對 text to structure 的結構來預訓練了一個大模型。
如何統一每一個信息抽取任務?
這一節主要介紹作者如何采用 SEL 和 SSI 來統一化建模信息抽取任務。
2.1 統一信息抽取任務輸出結構的結構化抽取語言SEL
作者發現四種信息抽取任務的目標都可以拆解成兩個原子操作:
Spotting:指在輸入的原句中找到目標信息片段,比如說實體識別中某個類型的實體,事件抽取中的觸發詞和論元,他們都是原句中的片段。
Associating:指找出 Spotting 輸出的信息片段之間的關系,比如關系抽取中兩個實體之間的關系,或事件抽取中論元和觸發詞之間的關系。
而每個信息抽取任務都可以用這兩個原子操作去完成,因此作者設計了結構化抽取語言 SEL 可以對這兩個原子操作進行表示,不同的任務只要組合不同的原子操作對應結構即可統一表示。
▲ 圖2:SEL統一建模信息抽取任務的例子
如圖 2(a)所示,作者使用三種形式來表示:(1)Spot Name:指目標信息片段的類別,在實體抽取中指實體類別,在事件抽取中可以指事件類型和論元類別。(2)Info Span:Spotting 操作的輸出,即原句子中的目標信息片段。(3)Asso Name: 指兩個信息片段之間的關系類型,也就是 Associating 操作的輸出。
如圖 2(b)所示,每個信息抽取任務都可以統一的用 SEL 語法描述,這里都是以“Steve became CEO of Apple in 1997.”為例。其中藍色部分表示關系抽取任務,采用(Spot Name:Info Span(Asso Name:Info Span))格式,這里的關系指第一個括號里的實體和第二個括號里的實體的關系。
其中紅色部分指事件抽取任務,采用(Spot Name:Info Span(Asso Name:Info Span)(Asso Name:Info Span)...)格式來表示,其中外括號里的 Spot Name 信息指的是事件類型及觸發詞,而中間的多個內括號指的是這個事件下多個論元的片段和類別?;疑糠种该麑嶓w識別任務,由多個(Spot Name:Info Span)組成,每一對括號都指一個實體片段及其類別。
綜上,可以看到 SEL 語法可以統一化描述每一個任務不同的輸出結構,并且由于擁有很強的結構性,使得解碼過程非常簡單。
2.2 指導模型做特定任務的結構化模式指導器SSI
有了 SEL 語法,模型統一了不同任務的輸出結構,但是當我們輸入一個句子后,如何讓模型去做我們想要的任務呢?因此作者提出了 SSI(Structural Schema Instructor),是一種基于 Schema 的 prompt。當我們輸入句子時,在句子前面拼接上對應的 Prompt,即可讓模型做對應的任務。
▲ 圖3:UIE模型總架構圖
如圖3所示,第一個藍色部分是關系抽取,它的 SSI 格式是:[spot] 實體類別 [asso] 關系類別 [text],這種形式可以告訴模型哪些做 spotting 操作,哪些做 associating 操作。第二個灰色部分是事件抽取,SSI 格式是:[spot] 事件類別 [asso] 論元類別 [text]。第三個綠色部分是實體識別,SSI 格式是:[spot] 實體類別 [text]。文章的附錄中列出了每一個數據集每一個任務對應的 SSI,因為不同的數據集所設置的 Schema 是不同的,因此每個數據集都有不同的 SSI,雖然例子中只列出了部分類別,但是在使用時 SSI 就是將所有的類別都列舉出來,部分示例如圖 4 所示。
▲ 圖4:不同任務不同數據集的SSI示例
注意:作者在實際使用中并不是用 [spot],而是采用 <spot>,asoc 同理。
以下用 表示 SSI,用 表示需要輸入的原始句子,UIE 表示 UIE 模型,它由 transformer 的 Encoder 和 Decoder 組成,形式化定義如式(1):
輸出 ?就是采用 SEL 語法描述的結構化數據,其中 表示如式(2):
詳細來說,首先將 輸入至 Encoder,得到每一個 token 的隱層表示,形式化表示如式(3):
接下來使用隱層表示在 Decoder 端生成目標結構化信息,表示如式(4)所示:
預訓練與微調
這一節將介紹 UIE 是如何預訓練的,以及如何將其應用于下游任務去微調。作者采用的模型是 T5-v1.1-base 和 T5-v1.1-large 作為 UIE-base 和 UIE-large,模型的參數初始化直接使用了 T5-v1.1 的參數,也就是說直接基于其進行了二次預訓練。
3.1 預訓練數據
主要由 Wikipedia、Wikidata 和 ConceptNet 三部分組成,作者通過這三部分數據構造了如下三種形式的預訓練數據:
:(token sequence ,structured record ),數據表示為
:只有基于 SEL 語法的結構性 record,數據表示為 ?
:只有無結構的原始文本數據,做 masked language model tasks,數據表示為 。
3.2 預訓練任務
針對上述三種類型的數據,分別設計了三種預訓練任務:
1. 針對 ,輸入數據為 SSI+ 原始文本 ,使其生成結構化的數據 record,不同的是作者在 record 中不僅加入了原本存在的正樣本,也加入了一些負樣本作為噪音,比如(Spot Name: [NULL]),此任務計算的 Loss 如式(5)所示。
2. 針對 ,這部分輸入只有結構化數據 record,輸入前面的部分,使其生成剩余部分,并且只訓練 UIE 的 decoder 部分,使其學會 SEL 語法,計算的 Loss 如式 (6)所示。
3. 針對 ,這部分做的是無監督的 masked language model 任務,和 T5 中的預訓練任務一樣,在原始句子中 MASK 掉 15% 的 tokens,然后生成 MASK 的部分,輸入中已經呈現的部分輸出 MASK,計算的 Loss 如式(7)所示。
最終將三個 Loss 相加作為最終 Loss。
值得注意的是,作者并不是分開做這三個預訓練任務的,而是將其統一化,全部表示為三元組 ,其中 是加在輸入句子前面的 prompt, 是輸入的原始句子, 是需要生成的目標句子,在每一個 batch 中隨機抽取每一個任務的數據去訓練。 數據表示為 , 數據表示為 , 數據表示為 ,這樣無論是哪種任務都是輸入一個三元組,即可統一訓練。
3.3 微調
微調部分和預訓練任務的 類似,數據形式是 ,微調的 Loss 計算方式如式(9)所示。
微調部分依然加入了負樣本,如圖 5 所示,表格上部分為輸入,下部分為第一行為正樣本的輸出,第二行為加入了負樣本。隨機插入一些原標簽中沒有的信息,即 (Spot Name:[NULL])或(Asso Name:[NULL]),圖 5 中輸入句子中并沒有 facility 的實體,而標簽中插入了(facility:[NULL])。
▲ 圖5:微調階段加入負樣本的例子
實驗
實驗基于 4 個任務:命名實體識別、關系抽取、事件抽取和觀點抽取,13 個數據集,具體如圖 6 所示。
4.1 全監督實驗
這部分是在訓練階段采用所有的數據,實驗結果如圖 6 所示,最右邊的 SEL 列是指基于 T5-v1.1-large 進行微調得到的結果,UIE 是指基于 UIE-large 進行微調的結果,可以看到幾乎在全部數據集上都取得了 SOTA 的結果,但是通過對比 SEL 和 UIE 發現預訓練部分對結果的提升并不大,通過這個可以看出作者設計的 SEL 語法和 SSI 還是很強大的,另一方面也說明 T5 本身的生成能力就很強大。
▲?圖6:全監督設置下的實驗結果
4.2 低資源(Low-resource)實驗
這部分是在 6 種設置下做的:1/5/10-shot 和 1/5/10% ratio。因為少樣本情況下隨機性很大,所以作者在每一個設置下都采樣了 10 次,報告 10 次結果的平均,結果如圖 7 所示,從這個結果中可以看出,UIE 真正強大的地方是小樣本情況下,泛化能力非常強,遠超基于 T5 的微調結果,在全監督設置下預訓練部分的能力沒有體現出來,但在低資源下針對性的預訓練可以非常好的提升泛化能力。同樣,全部任務下都取得了 SOTA。
▲ 圖7:低資源設置下的實驗結果
4.3 消融實驗
如圖 8 所示,首先是預訓練部分的消融實驗,分別去掉三個預訓練任務,觀察其最終結果可以看到:(1)對于關系抽取和觀點抽取的兩個數據集來說, 和 非常重要,因為從 T5 到移除了 后,結果在關系抽取中從 72.12 升到了 75.70,在觀點抽取中從 72.03 升到了 74.28,可以看到 和 帶來了非常大的性能提升。(2)? 對于事件抽取這種復雜任務非常重要,若移除 ,觸發詞識別的結果從 72.63 降到了 70.89,論元識別的結果從 57.27 降到了 54.16。(3)? 對模型的抽取能力幫助很大,移除掉 以后,關系抽取性能下降了 0.90,事件抽取下降了 1.43/1.48,觀點抽取下降了 0.46。
▲ 圖8:預訓練部分的消融實驗結果
此外,對小樣本情景下,通過消融實驗驗證了插入負樣本的有效性,結果如圖 9 所示,這種插入負樣本的方式在小樣本情況下影響顯著,無論是基于 T5 還是 UIE,precision 平均能提高 13.16。
▲ 圖9:小樣本情景下對rejection機制的消融實驗結果
總結
這篇文章提出了第一個結構化生成的通用信息抽取預訓練語言模型,性能直接刷爆了 13 個數據集的 SOTA,特別是在小樣本/低資源情景下,提升顯著,這也為我們提供了一個思路,如果想在小樣本情況下取得較好的性能,而預訓練任務和下游任務 gap 較大時,可以自己去設計和下游任務相近的預訓練任務,基于現有的預訓練模型進行二次預訓練。
其實這篇文章的動機也不是作者偶然性想到的,2021 年一作 Yaojie Lu 就將 text to structure 結構應用于了事件抽取任務,并且中了 ACL 2021,本篇文章也是他將這種結構擴展到了整個信息抽取領域。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝?稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的信息抽取新SOTA!首个结构化生成式信息抽取预训练模型,一统信息抽取四大任务...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7怎么看硬盘型号 win7查看硬盘
- 下一篇: 华硕怎么设置快捷启动 华硕电脑快捷启动设