NLP資訊抽取-關係抽取
本文使用 Zhihu On VSCode 創作併發布
原文首發自 彼得攀的小站
ACL2020, CASREL [1]
Motivation
早期的工作,將關係抽取視為pipeline的任務:先做一個NER,識別出sentence中所有的entity;然後再對每個實體pair做relation classification(RC)
這種pipeline的方式存在錯誤傳遞,即NER出現錯誤,那麼顯然RC任務也必然出錯
也出現了一些做entity和關係聯合抽取的任務,但是針對關係抽取中overlapping(Entity Pair Overlap和Single Entity Overlap)問題做的不是很好,如下圖
存在overlap的問題,很難用唯一的tag來標註一個token
將關係抽取視作分類問題,會導致資料嚴重不平衡: 絕大多數實體pair都不存在關係,這相當於對關係抽取增加了過多的負例
Image
本文的觀點是將關係抽取視作一個對映函式:從subject 到 (object, relation)
先做實體識別,再做關係抽取:
本文的工作:
Method
模型如下:
Image
由圖(從下至上):
透過BERT編碼sentence
subject抽取:這裡是對subject做了一個span抽取,即兩個獨立的二分類器:當前token是否是subject的開始/結尾
object抽取:因為是希望做
,那麼做object抽取時需要融入subject資訊
subject資訊編碼:取subject span起始位置(訓練時,用的是golden label的span區間)兩個token對應的embedding,按位加之後求平均得到
,那麼token
對應的embedding變為
(這裡程式碼和論文有出入,介紹以程式碼為準)
object抽取:這裡對每個token做
個
獨立
的二分類, 即對每種relation,都做一次獨立的object span抽取
note:對於一個樣本,存在多個subject的情況,生成訓練資料時一個只會隨機取一個subject做對應的object抽取,猜測的原因如下: (可以理解為當epoch數足夠的時候,模型也會見到所有的訓練資料)
多個subject的資訊不容易融合(當然這不是根本問題,比如可以用attention來解決)
不容易將subject和object對應 & 因為subject的數目是動態變化的,不易處理
整體來看:
對於一個訓練樣本,模型會嘗試預測所有的subject,只會預測一個subject對應的(relation, object)
在模型做預測時,一個樣本預測得到n個suject,則對做n詞object的預測,從而得到全部的關係三元組
span抽取的結果轉label時,採取最近原則,即選取最近的(start, end) pair
Result
模型在NYT和WebNLG相較於之前的工作,有明顯的提升,如Table 2
同時作者對結果做了更細緻的分析:
將所有樣本根據overlap情況分成三類:1) normal: 不存在overlap, 2) EntityPairOverlap: 存在subject和object同,relation不同的情況, 3) SingleEntityOverlap: 存在subject和object僅有一個overlap
這三種情況抽取關係的難度遞增,但CASREL表現均較好,如Figure 3
探究模型在樣本中關係三元組數目不同情況下的表現,從結果來看(如table 4)三元組數目對結果基本沒有影響, 這裡我的理解是:
做span抽取的時候,是多個
獨立
的二分類器,本身分類器獨立 & 模型結構也能處理overlap的情況,那麼結果自然不受樣本關係三元組數目的影響
Image
Image
Image
Reference
1。 A Novel Cascade Binary Tagging Framework for Relational Triple Extraction