本文主要詳細解讀關(guān)系抽取SOTA論文Two are Better than One:Joint Entity and Relation Extraction with Table-Sequence Encoders[1], 順帶簡要介紹關(guān)系抽取的背景,方便完全不了解童鞋。
信息抽取
我們說的信息抽取一般是指從文本數(shù)據(jù)中抽取特定數(shù)據(jù)結(jié)構(gòu)信息的一種手段。對于不同結(jié)構(gòu)形式的數(shù)據(jù)如結(jié)構(gòu)化文本,半結(jié)構(gòu)化文本,自由文本,有各自對應的方案,其中從自由文本中抽取難度最大。總之,我們的目的是希望在海量文本中,快速抽出我們關(guān)注的事實。
了解信息抽取必須要知道關(guān)系抽取。
關(guān)系抽取
大部分情況下,我們喜歡用三元組的數(shù)據(jù)結(jié)構(gòu)來描述抽取到的信息
三元組
三元組的表達能力非常豐富,幾乎所有事情都可以自然或者強行的表達成三元組,比如隨便一句”今天天氣真冷“ 表達為天氣-狀態(tài)-冷。
三元組與后續(xù)的知識圖譜工作非常適配,如Neo4j等圖數(shù)據(jù)庫就是以三元組為存儲單位,圖譜的查詢推斷等工具使用三元組比普通的關(guān)系型數(shù)據(jù)庫來的方便的多。
三元組千千萬,我應該怎么抽?
Schema
當我們拿到一個信息抽取的任務,需要明確我們抽取的是什么,”今天天氣真冷“,我們要抽的天氣的狀態(tài)天氣-狀態(tài)-冷,而非今天-氣候-冷(雖然也可以這樣抽),因此一般會首先定義好我們要抽取的數(shù)據(jù)結(jié)構(gòu)模式shcema, 會確定謂詞以及主語并與的類型
一個三元組schema的例子,其中Subject_type代表主語類型,Predicate是謂詞,Object_type指賓語類型:
Subject_type:人物 Predicate:出生地 Object_type:地點
確定了schema,我們一般如何抽取呢?
常規(guī)RE方案
目前主流關(guān)系抽取一般兩種解決方法
pipline兩步走:將關(guān)系抽取分解為NER任務和分類任務,NER任務標注主語或賓語,分類主要針對定義的schema中的有限個謂詞進行分類。根據(jù)具體任務不同,有些可能是兩步走或者三步走,pipline任務的順序先分類還是先標注也會有差異
Pipline優(yōu)勢:每一步分別針對各個任務進行,表征是task-specific, 相對來說精度較高
Pipline缺陷:- 任務有順序會存在誤差傳遞問題,即在預測時下一步任務會受上一步誤差影響,而在訓練階段沒有這種誤差,因此存在訓練和預測階段的gap- 分開的任務在一句話中多個實體關(guān)系時,比較難解決實體和關(guān)系的對應問題,以及重疊關(guān)系
joint learning:joint learing可以理解為采用多任務的方式,同時進行NER和關(guān)系分類任務, 在眾多joint learning中最出眾的是采用tabel filled 方式,即任務的輸出是filled一張有text-sequence構(gòu)成的表,在表中的位置表達除了詞與詞的連接,該位置的標注則標出了謂語(如下圖)
優(yōu)勢:1. 兩個任務的表征有交互作用可能輔助任務的學習2. 不用訓練多個模型,一個模型解決問題,不存在訓練與預測時的gap
缺陷:1. 兩個任務的表征可能沖突,影響任務效果2. 解決了主謂賓之間的對應關(guān)系,無法解決重疊問題3. Fill table本質(zhì)仍然是轉(zhuǎn)成sequence來fill,未能充分利用table結(jié)構(gòu)信息(下文會解釋)
下面重點解讀table fill方式的一篇SOTA,解決了joint learning的多任務表征沖突以及為利用table結(jié)構(gòu)信息
RE with Table Sequence
終于來到本篇的主題啦,為了解決一般filled table的問題, 作者提出table-sequence encoder的方法,分別對table和sequence做表征,本文的最大貢獻在于
分別對table和sequence做表征(encoder),并設計了一個Table-Guided Attention來對table和sequence進行交互,這樣即不會完全共享表征導致對不同的任務表征沖突,也不會丟失表征的相互指導作用
在table encoder中采用多維GRU來捕獲更多的句子結(jié)構(gòu)信息
在架構(gòu)上table encoder和 sequence encoder多層交互
下面仔細介紹各個部分,看看它是如何神奇做到SOTA的
Text Embedder
在上圖的結(jié)構(gòu)圖中,Text Embedder采用類似FLAT分別做了基于lstm的char()和word(),以及基于bert的word ()作為預訓練的embedding ,并拼接起來
圖中
Table Encoder
整個Table Encoder部分由多個Table Encoding的單元組成,每個Encoding單元的輸入分別是起始輸入,對應senquence結(jié)構(gòu)的輸入,以及上一個Tabel Encoding單元的輸出,Table Encoding 采用MDRNN結(jié)構(gòu)提取輸入的特征信息,作者在這選擇MDGRU(多維度GRU),tabel結(jié)構(gòu)本身有2維,加上前后層實際有4維,但是層的維度信息單向流動,實際上是只用到了3個方向()
如圖所示,是來自sequence的輸入,作者分別測了使用所有方向和分別使用幾個方向,發(fā)現(xiàn)上圖中a,c效果類似,這種多維GRU全面的考慮了整個table的結(jié)構(gòu)信息,即一個詞的狀態(tài)跟其他所有詞的狀態(tài)相關(guān),并且受其他詞的不同程度的影響,這種影響程度由GRU門控機制控制
Sequence Encoder
sequence Encoder 也由多個sequence encoding夠成,sequence encoding結(jié)構(gòu)直接采用transformer中的encoder
只不過將其中的self attention替換為table-guide attention,這種attention的改造非常巧妙,能更好捕捉word-word之間的關(guān)系
正常的dot attention如上圖
Table-Guided attention具體來說:
為參數(shù)矩陣
采用加性
是table encoder中的table的隱藏節(jié)點,該節(jié)點由多個方向的經(jīng)過GRU編碼得到,不管是哪個方向它的來源始終是由構(gòu)造而來,理論上是可以由擬合而來,因此這里直接由 來代替 ,也就是這個attention,其實是計算了table 結(jié)構(gòu)中各個位置對該的權(quán)重,是一個四面八方attention
剩下就是transform中正常的LayerNorm 和殘差結(jié)構(gòu)了
輸出和loss
輸出比較常規(guī),loss采用常規(guī)
輸出:
loss:
實驗 and 效果
作者在各個數(shù)據(jù)集上進行實驗,對比各個目前SOTA分別有一定的提高,且時效果最佳,模型參數(shù)量不到5M,要什么自行車,附上開源地址[2],作者的代碼與論文在attention計算有一丟丟不一致,但是并不影響效果
責任編輯:xj
原文標題:關(guān)系抽取一步到位!
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
深度學習
+關(guān)注
關(guān)注
73文章
5554瀏覽量
122442 -
自然語言
+關(guān)注
關(guān)注
1文章
291瀏覽量
13594 -
nlp
+關(guān)注
關(guān)注
1文章
490瀏覽量
22466
原文標題:關(guān)系抽取一步到位!
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
SPI協(xié)議,寄存器解讀
老板必修課:如何用NotebookLM 在上下班路上吃透一篇科技論文?

AFE5801細調(diào)增益不起作用的原因?怎么解決?
AFE5801細調(diào)增益不起作用是什么原因?qū)е碌模?/a>
Mamba入局圖像復原,達成新SOTA

請問AMC1203文檔中的OSC過采樣率和sinc3濾波器中的抽取率是不是同一個概念?
ADS1299用ADS采集數(shù)據(jù),ADS可以不抽取看原始得數(shù)據(jù)嗎?
求助,關(guān)于AMC1306M25抽取率OSR的疑問求解
TLV320AIC3254內(nèi)部中的ADC處理模塊和minidsp到底是什么關(guān)系?
關(guān)于\"OPA615\"的SOTA的跨導大小的疑問求解
求助,AD7190關(guān)于Σ-Δ ADC其中的抽取濾波器的數(shù)據(jù)轉(zhuǎn)換問題求解
防水和防振動功能2.5 英寸SAS/SATA硬盤抽取盒 非常適合車載數(shù)據(jù)存儲

評論