論文筆記整理:申時榮,東南大學博士生。
來源:PAKDD 2020
鏈接:https://arxiv.xilesou.top/pdf/2002.05295.pdf
1.介紹:
事件分類是一個重要的信息抽取任務,其目的是根據事件的提及實例對事件類別進行分類。目前事件分類的主要方法是基於監督學習的方法。包括依據語義語法特徵的分類和依據深度神經網絡編碼實例特徵的分類。
監督學習中的訓練數據包括預定義的有限事件類型,以及對應的實例集合,這種方法存在明顯的弊端。當事件類型固定後模型就不可擴展,無法處理訓練數據中未出現的事件類型。而如果需要針對新的事件類型進行預測,就要重新標記數據並重新訓練模型。
事件數據的標記需要很大的成本,事實上,當前的事件抽取更類似於few-shot任務。每個實例依據少量的支撐數據作爲證據進行分類,這種方法也更接近人類的思維模式。Few-shot的具體做法就是依據帶有類別標記的支撐集作爲預測依據,典型的通過生成原型特徵向量和基於度量的分類方法對每個query選擇最合適類別進行預測。目前在事件分類領域還沒有使用few-shot方法訓練模型的先例。
但是目前的few-shot方法在訓練過程中只考慮到使用支撐集和查詢集之間的匹配關係進行訓練,這種方法是低效的。由於本身樣本的稀少這種方法不能很好的利用支撐集的信息。同時由於支撐集內部的每個實例之間存在差異,之前的方法並沒有很好的利用這些信息。
於是本文將事件分類抽象爲few-shot任務,並且在傳統的訓練方法上增加了支撐集內部的交互來提升訓練過程中支撐集數據的利用效率。並且在兩個典型的時間抽取數據集上都取得了提升。
2.方法:
首先,本文將事件分類定義爲few-shot任務:
其中數據格式如下:
K表示了每個類對應的shot數(訓練實例數),t表示了對應的類別標記,a表示了每個實例中trigger 的位置,s是實例序列(句子)。
本文的模型包括三個模塊:實例編碼模塊、原型模塊和分類模塊。
實例編碼模塊包括嵌入(預訓練的詞嵌入和位置嵌入)和編碼器兩個部分組成。其中本位爲了對比不同編碼器的影響,使用了CNN和Transformer兩種編碼器。
原型模塊主要是通過支撐集中某一類所有的句子向量來計算當前類的原型向量。目前有兩種主流的原型向量計算方法,一種是簡單平均所有句向量:
另一種是通過注意機制方法:
最後是分類模型,分類模型通過metric得到實例特徵和原型的得分來預測其屬於哪個類別:
對應的損失函數是:
本文使用而來三種度量學習方法進行比較,分別是餘弦距離,歐式距離和CNN生成距離。
此外,爲了充分利用支持集,在訓練過程中,除了上述的損失之外,額外的支撐集爲輔助支撐集和輔助查詢集,並且按照之前的模式計算損失,保證使用部分支撐集預測剩餘支撐集中的樣本的正確性,對應損失爲:
3.實驗:
作者在ACE2005和TAC KBP兩個數據集上進行了實驗,結果如下
可以看出,增加支撐集內部的交互對實驗結果有絕對提升。
OpenKG
開放知識圖譜(簡稱 OpenKG)旨在促進中文知識圖譜數據的開放與互聯,促進知識圖譜和語義技術的普及和廣泛應用。
點擊閱讀原文,進入 OpenKG 博客。