[中文事件抽取] Doc2EDAG: An End-to-End Document-level Framework for Chinese Financial Event Extraction

EMNLP2019 Doc2EDAG: An End-to-End Document-level Framework for Chinese Financial Event Extraction
Author Shun Zheng, Wei Cao, Wei Xu, Jiang Bian
url https://www.aclweb.org/anthology/D19-1032.pdf
Code https://github.com/dolphin-zs/Doc2EDAG

大多數現有的事件抽取方法只抽取句子範圍的事件參數。但是這種句子級別的事件抽取方法難以解決新興應用(如金融、法律、衛生等)數量激增的文檔。它們的事件論元分散在不同的句子中,甚至多個事件實例在同一文檔中同時存在。爲了解決這些問題,我們提出了一種新的端到端模型Doc2EDAG,它可以生成一個基於實體的有向無環圖來有效地實現文檔級事件抽取。此外,我們提出了一個無觸發詞設計的文檔級事件抽取任務,以簡化文檔級事件標註。爲了證明模型的有效性,我們構建了一個包含有上述挑戰的中國財務公告的大型真實數據集。綜合分析的大量實驗證明了Doc2EDAG相對於最新方法的優越性。

1 Introduction

鑑於金融領域文檔及業務的特殊性,在做事件抽取的過程中存在一些挑戰:

  • 事件元素分散(Arguments-scattering):指事件論元可能在不同的句子(Sentence)中
  • 多事件(Muti-event):指一個文檔中可能包含多個事件
    在這裏插入圖片描述
    以該圖爲例,一個文檔中有兩個股權質押的事件實例,對應Event Table of Equity Pledge表中也就有兩條Event record。該事件的角色包括抵押者、抵押的股權量、承押者、開始時間、結束時間、持有股份總數、持有股份佔公司股份的比例。
    我們以ID作爲句子索引,用相應的標記代替實體提及,將關鍵事件語句範圍之外的事件參數顏色顯示爲紅色。則每個事件的論元都可能分佈在多個句子中,且大概率是分散分佈的。

現如今的研究多是在句子範圍內標記事件論元,我們把這類任務稱爲句子級事件抽取,它顯然忽略了我們上面提到的挑戰。

在本文中,我們提出了一個新的端到端模型Doc2EDAG,以解決文檔級事件抽取(DEE)的獨特挑戰。該模型的核心思想是將事件錶轉換爲基於實體的有向無環圖(EDAG)。EDAG的形式可以將困難的事件表填充任務轉換爲多個基於實體的順序路徑擴展子任務,這些子任務更容易處理。
爲了有效地支持EDAG的生成,Doc2EDAG使用文檔級上下文對實體進行編碼,並設計了路徑擴展的記憶機制。此外,爲了簡化基於遠程監督的文檔級事件標註,我們提出了一種新的DEE形式化方法。該方法去除了觸發詞標註,並將DEE視爲直接基於文檔填充事件表。這種無觸發詞設計不依賴任何預定義的觸發詞集或啓發式來過濾多個候選觸發詞,並且仍然完全符合DEE的最終目標,即將文檔映射到底層事件表。

總的來說,本文的貢獻在於:

  • 提出了一個新的模型Doc2EDAG,它可以直接基於文檔生成事件表,有效地解決DEE的獨特挑戰。
  • 重新定義了一個沒有觸發詞的DEE任務,以簡化基於遠程監督的文檔級事件標記。
  • 爲DEE建立了一個大規模的真實世界數據集,該數據集面臨着參數分散和多事件的獨特挑戰,大量的實驗證明了Doc2EDAG的優越性。

2 Preliminaries

我們首先闡明幾個基本概念:

  • entity mention:實體提及是指一個實體對象的文本塊
  • event role:事件角色對應事件表的預定義字段
  • event argument:事件論元是扮演特定事件角色的實體
  • event record:事件記錄對應於事件表的一條記錄,包含多個所需角色的論元

爲了更好地闡述和評估我們提出的方法,我們在本文中利用了ChFinAnn數據。ChFinAnn文檔包含中國股市上市公司的第一手官方信息,有數百種類型,如年報和盈利預測。在進行這項工作時,我們將重點放在那些與事件相關的,頻繁,有影響力且主要由自然語言表達的事件上。

3 文檔級事件標註

作爲DEE的前提工作,我們首先在文檔級別進行基於遠程監督的事件標註。更具體地說,我們將表格記錄從事件知識庫映射到文檔文本,然後將較爲匹配的記錄視爲該文檔所表示的事件。此外,我們採用了無觸發詞設計,並相應地重新設計了新的DEE任務,以實現端到端模型設計。

Event Labeling:
爲了保證標記質量,我們對匹配的記錄設置了兩個約束

  • 預定義鍵的事件角色的論元必須存在
  • 匹配的論元的個數要大於某個閾值

這些約束的配置是特定於事件的。在實踐中,我們可以對它們進行優化從而直接確保文檔級別的標籤質量。我們把滿足這兩個約束條件的記錄視爲匹配較好的記錄,這些記錄充當了受遠程監督的基本事實。除了標記事件記錄之外,我們將論元的角色分配給匹配的token,作爲token-level實體標籤。注意,我們沒有顯式地標記觸發詞。除了不影響DEE功能之外,這種無觸發詞的設計的另一個好處是基於遠程監督的標註更容易,它不依賴於預定義的觸發詞詞典或者手動引導的啓發式方法來過濾多個潛在的觸發詞。

DEE Task Without Trigger Words:
我們將DEE的一個新任務重新定義爲基於文檔直接填充事件表,通常需要三個子任務:

  • 實體抽取:抽取實體提及作爲候選論元
  • 事件檢測:判斷一個文檔是否觸發某個事件類型
  • 事件表填充:將論元填充到觸發的事件對應的表中

這種新穎的文檔級的事件抽取和傳統的句子級事件抽取任務有很大不同,但是和上述基於遠程監督的事件標籤的簡化方法是一樣的。

4 模型

在這裏插入圖片描述
Doc2EDAG的核心思想是將表格式的事件記錄轉換爲EDAG,並讓模型基於文檔級上下文學習生成該EDAG。根據Figure 2中的示例,Figure 3描述了EDAG生成的過程。Figure 4顯示了Doc2EDAG的總體工作流程,其中包括兩個關鍵階段:文檔級實體編碼和EDAG生成。在詳細介紹它們之前,我們首先描述兩個預處理模塊:輸入表示和實體識別。

輸入表示:
本文中,我們將文檔表示爲一系列句子。查找token embedding表VRdwVV \in \mathbb{R} ^ {d_w * |V|},我們把文檔表示爲句子序列[s1;s2;...;sNs][s_1;s_2;...;s_{N_s}],每一個句子siRdwNws_i \in \mathbb{R} ^ {d_w * N_w} 都是由token embeddings的序列組成的,如[wi,1,wi,2,...,wi,Nw][w_{i,1},w_{i,2},...,w_{i,N_w}]。其中V|V|是詞典的大小,NsN_sNwN_w分別是句子序列和token序列的最大長度,wi,jRdww_{i,j} \in \mathbb{R} ^ {d_w}是第ii個句子中的第jj個token的維度大小爲dwd_w的嵌入。

實體識別:
實體識別是一項典型的序列標註任務。我們在句子層面執行這項任務,並使用一種經典的方法BI-LSTM-CRF,該方法首先對標記序列進行編碼,然後添加一個條件隨機場層,以便進行序列標註。唯一的區別是,我們使用Transformer而不是原始的編碼器。Transformer通過多頭自注意力機制對嵌入序列進行編碼,在它們之間交換上下文信息。由於Transformer的優越性能,我們將其作爲本文的主要上下文編碼器,並將本階段使用的Transformer模塊命名爲Transformer-1。
對於每一個句子張量siRdwNws_i \in \mathbb{R} ^ {d_w * N_w} ,我們通過hi=Transformer1(si)h_i = Transformer-1(s_i)得到編碼結果,其中hiRdwNwh_i \in \mathbb{R} ^ {d_w * N_w}具有相同的嵌入維度dwd_w和序列長度NwN_w。在訓練過程中,我們使用經典的BIO標註體系來對匹配的論元進行實體標註,並用CRF層包裝hih_i得到實體識別的損失函數LerL_{er}。最後使用維特比算法進行解碼得到最優的標記序列。

4.1 文檔級實體編碼

爲了有效地解決論元分散的問題,必須利用全局上下文來更好地確定實體是否扮演特定的事件角色。因此,我們使用文檔級的實體編碼來對這些上下文中提取的實體提及進行編碼,併爲每個具有不同實體名稱的實體提及生成大小爲dwd_w的嵌入。

Entity & Sentence Embedding:
由於一個實體提及通常覆蓋多個長度可變的token,我們首先通過對其覆蓋的token執行最大池化操作,獲得每個實體提及的固定大小的嵌入。比如,給定第ii個句子中覆蓋第jj個到第kk個token的第ll個實體提及,我們對[hi,j,...,hj,k][h_{i,j},...,h_{j,k}]進行最大池化,得到實體提及嵌入elRdwe_l \in \mathbb{R}^{d_w}。對於每個句子sis_i,我們也對編碼的token序列進行最大池化操作,得到一個嵌入ciRdwc_i \in \mathbb{R}^{d_w}。經過這些操作之後,實體提及和句子都被嵌入到dwd_w維。

Document-level Encoding:
儘管我們得到了所有句子和實體提及的嵌入,但這些嵌入只對語句範圍內的局部上下文進行編碼。爲了實現文檔級上下文的感知,我們使用了第二個Transformer模塊Transformer-2,以促進所有實體提及和句子之間的信息交換。在將它們輸入到Transformer-2之前,我們添加了位置嵌入,以表示句子順序。經過Transformer編碼之後,我們再次使用max-pooling操作將具有相同實體名稱的多個實體提及嵌入合併到單個嵌入中。在這一階段之後,我們得到文檔級上下文感知的實體提及ed=[e1d,...,eNed]e^d=[e_1^d,...,e_{N_e}^d]句子嵌入cd=[e1d,...,eNsd]c^d=[e_1^d,...,e_{N_s}^d],其中NeN_e是不同實體名稱的數目。這些彙總的嵌入可用於下一步直接填充事件表。

4.2 EDAG Generation

在這裏插入圖片描述
在文檔級實體編碼之後,我們可以通過對句子張量cdRdwNsc^d \in \mathbb{R}^{d_w * N_s}進行最大池化並在tt上堆疊線性分類器來對每種事件類型進行event-triggering classification,從而獲得文檔嵌入tRdwt \in \mathbb{R}^{d_w}。 接下來,對於每種觸發事件類型,我們將學習生成EDAG。

EDAG Building:
模型訓練之前,我們需要從表格事件記錄中建立EDAG。對於每個事件類型,我們首先手動定義一個事件角色順序。然後,我們按照此順序將每個事件記錄轉換爲論元的鏈接列表,其中每個論元節點要麼是實體,要麼是特殊的空論元NA。最後,我們通過共享相同的前綴路徑將這些鏈表合併到一個EDAG中。由於EDAG的每個完整路徑都對應事件表的一行,因此從給定的EDAG恢復表格式非常簡單。

Task Decomposition:
EDAG旨在將困難的表填充任務簡化爲幾個可處理的路徑擴展子任務。然後一個自然的問題是任務分解是如何進行的,這可以通過下面的EDAG恢復過程來回答。假設事件觸發作爲起始節點(初始EDAG),則會出現一系列路徑拓展子任務,並遵循預定義的事件角色順序。當考慮某個角色時,對於當前EDAG的每個葉子節點,都有一個路徑拓展子任務,該子任務決定擴展哪些實體。對於要展開的每個實體,我們爲當前角色創建該實體的一個新節點,並通過將當前葉子節點連接到新實體節點來展開路徑。如果沒有實體可用於展開,則創建一個特殊的NA節點。當前的所有子任務完成後,我們移動到下一個角色,重複直到最後一個角色。在這項工作中,我們利用上述邏輯從推斷時的路徑拓展預測中恢復EDAG,並在訓練時爲每個子任務設置相關標籤。

Memory:
爲了更好地完成每個路徑擴展子任務,關鍵是要知道路徑中已經包含的實體。因此,我們設計了一種記憶機制,在開始時用句子張量cdc^d初始化記憶張量mm,並在擴展路徑時通過爲NA論元附加相關實體嵌入或零填充實體來更新mm。通過這種設計,每個子任務可以擁有一個不同的記憶張量,對應於唯一的路徑歷史。

Path Expanding:
每次擴展事件路徑時,都對每個實體進行二分類,展開(1)或不展開(0),即判斷某個實體是否對應當前順序下的event role。如果是就將該實體添加到EDAG中,如果沒有任何實體能與當前event role匹配則將NA添加到EDAG中。爲了實現對當前路徑狀態歷史上下文當前事件角色的感知,我們首先將記憶張量mm和實體張量ede^d串聯起來,然後添加可訓練的event-role-indicator embedding,,並用第三個轉換模塊Transformer-3進行編碼,以便於上下文感知推斷。最後,我們從Transformer-3的輸出中提取豐富的實體張量ere^r,並在ere^r上疊加一個線性分類器進行路徑擴展分類。

Optimization:
對於事件觸發分類,我們計算交叉熵損失LtrL_{tr}。在EDAG生成過程中,我們計算每個路徑擴展子任務的交叉熵損失,並將這些損失相加作爲最終的EDAG-generation的損失LdagL_{dag}。最後,我們將LtrL_{tr}LdagL_{dag}和實體識別損失LerL_{er}相加作爲最終損失,Lall=λ1Ler+λ2Ltr+λ3LdagL_{all}=λ_1L_{er}+λ_2L_{tr}+λ_3L_{dag},其中λ1λ_1λ2λ_2λ3λ_3爲超參數。

Inference:
給定一個文檔,Doc2EDAG首先從語句中識別實體提及,然後用文檔級上下文對其進行編碼,最後通過執行一系列路徑擴展子任務爲每個觸發的事件類型生成一個EDAG。

Practical Tips:
在訓練期間,我們可以利用ground-truth實體token和給定的EDAG結構。 在推斷時,我們需要首先識別出實體,然後根據這些實體的嵌入順序擴展路徑以恢復EDAG。 訓練和推斷之間的這種差距可能會導致嚴重的錯誤傳播問題。 爲了緩解此類問題,我們利用計劃採樣(Bengio等人,2015)將文檔級實體編碼的輸入從ground-truth entity mentions逐步轉換爲模型識別的提及。 此外,對於路徑擴展分類,正樣本的錯誤分類比負樣本的錯誤分類更有害,因爲前者會導致完全錯誤的路徑。 因此,我們可以將γγ(> 1)設置爲相關的交叉熵損失的負類權重。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章