目錄web
一般,早期的信息抽取將實體抽取和關係抽取看做串聯的任務,這樣的串聯模型在建模上相對更簡單,但這樣將實體識別和關係抽取看成兩個獨立的任務明顯會存在一系列的問題:算法
所以,近年來有許多工做都考慮將實體識別與關係抽取任務進行聯合建模,這種 end-to-end 的模型直覺上會有更優的效果。網絡
原文連接:https://www.aclweb.org/anthology/P16-1105/架構
該論文是經典的 end-to-end 實體關係聯合抽取模型,在此以前,聯合抽取模型一般都是基於人工構造特徵的結構化學習方法,而該論文采用了端到端的神經網絡結構來進行建模,該模型基於詞序信息以及依存樹結構信息來抽取實體以及實體關係,其主要模型結構以下圖所示:
框架
該模型主要分爲以下三個部分:機器學習
將實體識別任務看做是一個序列標註任務,實體標籤採用 BILOU(Begin, Inside, Last, Outside, Unit) 的標註方式,而實體類別接續在實體標籤以後 (標準方法能夠參考我關於序列標註的第一篇文章)。利用兩個全鏈接層來實現實體識別
\[\begin{aligned} h^{(e)}_t &= tanh(W^{(e_h)}[s_t; v_{t-1}^{(e)}] + b^{(e_h)})\\ y_t &= softmax (W^{(e_y)}h^{(e)}_t + b^{(e_y)}) \end{aligned}\]ide
Dependency layer:該層主要關注兩個實體在依存樹的最短路徑(shortest path),最短路徑在作個關係分類研究中已被證實是十分有效的。做者採用了雙向樹結構的 BiLSTM 來捕捉兩個實體之間的關係。從論文中的表達式來看,樹結構的 LSTM 與傳統 LSTM 的區別在於,其接受多個子節點的隱藏信息,而不只僅是上一個時刻的隱藏信息。做者提出一種新的基於樹結構的 LSTM,其相同類型的子節點共享參數矩陣,同時容許可變數量的子節點(感興趣的讀者能夠去原文看看模型細節,公式較多這裏就不作詳細介紹了)。該層以對應 Sequence Layer 對應時刻的隱藏狀態、依存關係嵌入和實體標籤嵌入的拼接做爲模型輸入,即
\[x_t = [s_t; v_t^{(d)}; v_t^{(e)}]\]函數
做者將 Dependency layer 堆疊在 Sequence layer 上,所以 Dependency layer 能夠依賴 Sequence layer 的輸出,或者說實體識別的結果間接地對關係分類的結果加以影響。工具
對於構造的樹結構的 BiLSTM,存在兩個傳輸方向,即從子節點到根節點方向 "\(\uparrow\)",和從根節點到子節點方向 "\(\downarrow\)",最終用於關係分類的輸入,爲根節點位置 \(\uparrow\) 方向上的隱藏狀態,和兩個實體的 \(\downarrow\) 方向上的隱藏狀態的拼接,即
\[d_p = [\uparrow h_{pa}; \downarrow h_{p1}; \downarrow h_{p2}]\]性能
此外,考慮到每一個輸出都是隻考慮到單詞之間的關係,而沒法利用整個實體的信息,爲了緩解這個問題,做者將 Sequence layer 上對應實體的隱藏層求平均拼接到 \(d_p\) 上,即
\[d_p' = [d_p;\frac{1}{|I_{p_1}|}\sum_{i\in I_{p_1}}s_i;\frac{1}{|I_{p_2}|}\sum_{i\in I_{p_2}}s_i]\]
其中,\(I_{p_1}\) 和 \(I_{p_2}\) 分別表示實體 1 和實體 2 的單詞集合,將該向量直接輸入與 Sequence layer 中相似的分類器進行分類,即
\[\begin{aligned} h^{(r)}_p &= tanh(W^{(r_h)}d_p' + b^{(r_h)})\\ y_p &= softmax (W^{(r_y)}h^{(r)}_t + b^{(r_y)}) \end{aligned}\]
小結:總的來講,該任務經過在實體識別和關係抽取任務中共享 Embedding layer 和 Sequence layer 參數的方法,增強兩個任務之間的相關性,確實存在必定的創新,且設計了樹結構的 LSTM 模型用於關係分類任務中。可是其模型設計上還存在很大的缺陷,如實體抽取任務上忽略了標籤之間的長依賴關係,此外實體與關係的抽取仍是存在前後性,兩個任務並非徹底同步進行的。這篇論文首次將神經網絡模型用於解決實體關係聯合抽取任務,屬於這塊領域的開山之做,以後不少工做都在此基礎上進行改進,或與該工做的結果進行對比
原文連接:https://arxiv.org/abs/1706.05075
該篇論文被評爲 ACL2017 傑出論文,其主要作法是將實體關係聯合抽取任務看做一個序列標註任務來處理,取得了很是好的效果。
做者認爲,以前的作法多數都須要大量複雜的特徵工程,而且十分依賴其餘的 NLP 工具,這將致使偏差傳播問題。雖然 Model 1 經過共享參數的方法將兩個任務整合到同一個模型當中,可是實體抽取與關係識別任務仍然是兩個分離的過程,這將形成產生大量的冗餘信息。
做者認爲,實體關係聯合抽取的關鍵就是要獲得實體對以及它們之間關係組成的三元組。所以做者的作法是直接對三元組進行建模,而不是分別提取實體和關係。爲了解決這個問題,做者設計了一種新穎的標註方案,它包含實體信息和它們所持有的關係,對於系列標註問題,很容易使用神經網絡來建模,而不須要複雜的特徵工程。
論文的主要貢獻有以下幾點:
下面簡單介紹一下論文如何將提取問題轉換爲基於本文標註方法的標註問題,簡單的標註實例如上圖所示
端到端模型的基本架構如上圖所示,主要包括以下幾個部分:
LSTM Decoding Layer: 從圖中能夠清楚的看到差異,LSTM Decoding Cell 與經典的 LSTM 的區別在於,其當前時刻的輸入除了上一時刻的隱藏狀態 \(h^{(2)}_{t-1}\) 以及當前時刻的輸入 \(h_t\) 以外,還包括上一時刻的預測標籤表示 \(T_{t-1}\),即
\[h_t^{(2)} = LSTM(h_t, [h^{(2)}_{t-1}, T_{t-1}])\]
對於時刻 \(t\) 的隱藏狀態,經過一個全鏈接層獲得標籤表示:
\[T_t = W_{ts}h_t^{(2)} + b_{ts}\]
最終將標籤表示輸入經典的全鏈接層分類器進行分類:
\[\begin{aligned} y_t &= W_yT_t + b_y\\ p_t^i&=\frac{exp(y_t^i)}{\sum_{j=1}^{N_t}exp(y_t^j)} \end{aligned}\]
The Bias Objective Function: 定義了一個標籤偏置函數
\[ L = max\ \sum_{j=1}^{|D|}\sum_{t=1}^{L_j}(log(p_t^{(j)}=y_t^{(j)}|x_j, \Theta)\cdot I(O) + \alpha \cdot log(p_t^{(j)}=y_t^{(j)}|x_j, \Theta)\cdot (1- I(O)))\]
上式中,\(|D|\) 是訓練集的大小,\(L_j\) 是句子 \(x_j\) 的長度,\(y_t^{(j)}\) 是單詞 \(x_j\) 中詞 \(t\) 的標註,\(p_t^{(j)}\) 是模型輸出的歸一化標註機率。此外,\(I(O)\) 是一個開關函數,以區分標註 ‘O’ 與 其餘標註。他被定義以下:
\[I(O) = \begin{cases} 1,\ if\ tag = 'O'\\ 0,\ if\ tag \ne 'O' \end{cases}\]
簡單來講,就是使得模型對於實體標籤與其餘標籤的關注程度不同,而參數 \(\alpha\) 就是偏置權重,\(\alpha\) 越大,模型對於實體的相關標註的偏向性就越大。
小結:這篇論文經過巧妙的設計將實體與關係聯合抽取任務看成一個序列標註任務來處理,大大簡化了工做的複雜性,且其模型性能優於以前的工做。此外,模型的缺陷也是比較明顯的,其沒法考慮到實體關係重疊的問題,也就是說一個實體在上下文中可能與多個實體有不一樣的關係。
原文連接:https://arxiv.org/abs/1804.07847
論文指出了目前的實體關係抽取任務存在的一些問題:
該論文創新點在於其將實體關係聯合抽取問題看做是一個 multi-head selection 的問題,即任何一個實體均可能與其餘實體存在關係,目的是解決關係重疊問題。
該論文提出的模型如上圖所示,包括如下結構:embedding layer,BiLSTM layer,CRF layer,sigmoid scoring layer。
Embedding layer:Embedding layer 主要用於生成詞表徵,包括字符級別的向量和詞級別的向量兩個部分,構造方式以下所示,引入字符級別的向量是由於字符級別的向量能夠融入一些形態學特徵
BiLSTM encoding layer:利用 多層的 BiLSTM 來對句子進行編碼,每個時刻的輸出爲兩個方向的向量的拼接:
\[h_i = [\overrightarrow{h}_i; \overleftarrow{h}_i], i = [0, ..., n]\]
Label Embedding:構造一個 Label Embedding 層,用來獲取標籤相應的向量表徵,也是可訓練的,用 \(g_i\) 表示第 \(i\) 個 token 的預測標籤向量
multi-head selection problem:將關係抽取看做一個 multi-head selection problem,multi-head 的含義是每一個 實體 與其餘全部 實體 都存在關係,在判斷關係的時候,爲了不形成信息冗餘,只判斷每一個實體的最後一個 token 與其餘實體的最後一個 token 的關係,而每一個實體的最後一個 token 被稱做 head。對於每一個 head ,須要預測元組 \((\hat{y}_i, \hat{c}_i)\),其中 \(\hat{y}_i\) 表示當前 token 的關係對象,\(\hat{c}_i\) 表示二者之間的關係。對於給定的 token 向量 \(w_i\) 和 \(w_j\),其關係爲 \(r_k\) 的分數爲:
\[s^{(r)}(z_j, z_i, r_k) = V^{(r)}f(U^{(r)}z_j + W^{(r)}z_i + b^{(r)})\]
其中,\(z_i = [h_i; g_i]\),\(f(·)\) 爲激活函數,\(U^{(r)}, W^{(r)}\) 至關於先將向量進行降維,\(V^{(r)}\) 是一個一維向量,最後輸出的是一個分數值,以後再將分數映射爲機率值
\[Pr(head=w_j, label=r_k|w_i)=\sigma(s^{(r)}(z_i, z_j, r_k))\]
關係抽取過程的損失函數定義爲:
\[L_{rel} = \sum_{i=0}^{n}\sum_{j=0}^{m}-log\ Pr(head=y_{i,j}, relation=r_{i,j}|w_i)\]
整個模型的損失函數即爲 \(L_{ner} + L_{rel}\)
在預測階段,能夠經過認爲輸出的預測機率超過某一個閾值就認爲這個關係是有效的。注意,該模型對兩個詞之間過個關係的預測並非採用的 softmax 函數,而是對每一個關係採用了 sigmoid 函數,區別在於 softmax 是將全部類別看做是互斥關係,將全部分數歸一化爲和爲 1 的形式,而 sigmoid 與 softmax 的區別在於,其獨立的將每一個類別的判斷看做是獨立二分類的問題,即各個類別不存在互斥關係,這樣跟有利於判斷出兩個實體之間存在的多種關係的狀況。
小結:這篇文章的關鍵創新點在於其將關係抽取任務看成一個 multi-head selection problem 的問題,從而使得每一個實體可以與其餘全部實體判斷關係,此外,再也不將關係抽取任務看成一個每一個關係互斥的多分類任務,而是看做每一個關係獨立的多個二分類任務,從而可以判斷每一對實體是否可能有多個關係存在。此外,該組在同一年還發布了一篇以該論文爲 baseline,在訓練過程當中加入對抗擾動的論文,分數達到新高,有興趣的同窗能夠關注一下
原文連接:https://kexue.fm/archives/6671
這個模型是蘇神提出的 DGCNN 用於實體關係抽取的模型,一直感受這個模型設計的挺巧妙的,這裏也記錄下。數據集是百度給出的中文信息抽取數據集(須要的話能夠去蘇神博客裏找,有下載連接)。
首先,做者發現數據主要有如下幾個特色:
由上可知,數據集的質量很是高,且狀況也十分複雜。做者由此調研了當時主要的信息抽取模型,發現沒有一個模型能很好地覆蓋這5個特色。因而自行設計了一個基於機率圖思想的抽取方案,而後從效率出發,利用 CNN+Attention 的架構完成了這個模型。
做者設計的抽取方案借鑑了 seq2seq 的機率圖思路。在 seq2seq 解碼器的解碼過程是層次遞歸進行的的,其其實是在建模
\[P(y_1,y_2,...,y_n|x)=P(y_1|x)P(y_2|x,y_1)...P(y_n|x,y_1,y_2,…,y_{n−1})\]
而對於信息抽取任務,三元組的抽取過程也可以轉化爲上述層次遞歸的方式進行抽取,對於三元組 (s, o, p),其抽取過程能夠建模爲:
\[P(s,p,o)=P(s)P(o|s)P(p|s,o)\]
即首先預測 \(s\),而後根據 \(s\) 來預測該 \(s\) 所對應的 \(o\) 及 \(p\)。因爲抽取 \(s\) 以及抽取 \(s\) 所對應的 \(o\) 及 \(p\) 的過程均是非惟一性的,所以,做者採用了 MRC 中經常使用的指針網絡的抽取方法,即僅抽取答案的開始和結束位置,且把預測開始和結束位置的任務轉化爲了預測每個位置是否爲開始位置或結束位置(將softmx換成sigmoid)。模型的總體結構以下圖所示
咱們這裏只關注做者信息抽取的思路,更多的模型細節能夠去做者的博客裏瞭解。總的來講,整個模型包括以下幾個部分:
做者的思路相比於以前的模型很好的解決了關係重疊問題,且主要架構是基於 CNN 和 Self-Attention,所以模型訓練速度很是快。做者在博客結尾提到了下面要介紹的這篇論文,大體思想與做者的論文相相似,可是是經過將其轉化爲一個多輪問答的形式將信從而將抽取過程建模爲層次遞歸的。
原文連接:https://www.aclweb.org/anthology/P19-1129/
過去大部分論文都將實體關係聯合抽取的任務看做是一個三元組抽取任務,而這樣的處理將存在以下幾個問題
這個篇文章的創新點在於其將實體關係聯合抽取的任務看成一個多輪問答類問題來處理,即每種實體和每種關係都用一個問答模板進行刻畫,從而這些實體和關係能夠經過回答這些模板化的問題來從上下文中進行抽取。下面簡單給出一個問答模版:
可見,問題主要有以下幾個特色:
這樣的處理方法主要有以下幾個優勢:
將實體關係抽取任務轉化爲多輪問答任務的算法如上所示,整個算法分以下幾個部分:
關於問題模版的生成方式能夠參考原文中的方法,這裏就不贅述了。
咱們知道現階段常見的 MRC 模型都是經過指針網絡的方式,僅預測答案在 Context 中的開始和結束位置,僅適用於單答案的狀況。但對於實體識別任務,在一段 Context 中可能有多個答案,因此這種方法並不合適。做者的作法是將其看成以問題爲基礎的序列標註問題,或者說將 2 個 N-class 分類任務轉換成 N 個 5-class 分類任務,其中 N 爲句子長度。
做者將 BERT 做爲 baseline。訓練時,損失函數爲兩個子任務的疊加,即:
\[L = (1-\lambda)L(head_entity) + \lambda L(tail_entity, rel)\]
爲了進一步優化模型性能,還採用了強化學習的方法來進一步優化,這一塊暫時也不作研究了,感興趣的同窗能夠去原文參考一下
原文連接:https://arxiv.org/abs/1909.03227
這篇文章在 WebNLG 和 NYT 數據集上取得了 SOTA 的效果,模型的總體思路與蘇神的模型很是相似。該論文指出,當前處理關係重疊的模型仍然存在一系列問題,具體來講,它們都將關係視爲要分配給實體對的離散標籤。 這種表述使關係分類成爲困難的機器學習問題。 例如,當在相同上下文中的同一實體參與多個(在某些狀況下超過五個)有效關係(即重疊的三元組)時,分類器須要大量的監督學習才能肯定上下文與關係的對應關係。
做者設計了一種 Hierarchical Binary Tagging 的框架來解決這個問題,這個框架將三元組的抽取任務建模爲三個級別的問題,從而可以更好解決三元組重疊的問題。其核心觀點就是再也不將關係抽取的過程看做實體對的離散標籤,而是將其看做兩個實體的映射關係,即\(f(s, o) -> r\),整個三元組的過程能夠歸納爲
實體抽取的方法與上一片論文以及蘇神的作法差很少,即採用 Point Net 的指針形式進行抽取。這樣的建模方式明顯更容易學習。實驗結果代表即使使用隨機初始化的 BERT 做爲編碼層,仍然可以取得 SOTA 的效果。
模型的總體結構如上圖所示,主要包括以下幾個部分:
Subject Tagger:該部分用於識別全部可能的 subject 對象。其經過對每個位置的編碼結果用兩個分類器進行分類,來判斷其是不是實體的開始或結束位置,即
\[ p^{start\_s}_i = σ(W_{start}x_i + b_{start}) \\ p^{end\_s}_i = σ(W_{end}x_i + b_{end}) \]
其中,\(x_i\) 爲第 i 個詞經過 BERT 的編碼輸出,\(W, b\) 爲全鏈接層分類器的參數,激活函數爲 sigmoid。對於句子中存在多個 subject 的狀況,開始指針與結束指針經過就近匹配原則進行配對
早期聯合抽取模型的架構主要可分爲兩個部分:
其將關係分類看做兩個實體間的離散標籤多分類問題,這樣的問題學習起來是十分困難的,或者說沒法很好的學習到兩個標籤之間的相關性。近年來的模型大多都將其建模爲層次遞歸的模型,其直接爲每一個關係類別構建獨立的模型,用於學習這種關係映射關係,主要能夠分爲下面兩個部分
這種將實體關係看成一種函數映射來學習的方式顯然可以獲得更好的效果。
參考連接
https://zhuanlan.zhihu.com/p/74886839
https://mp.weixin.qq.com/s?__biz=MzI2NjkyNDQ3Mw==&mid=2247486614&idx=2&sn=46b8a011a29803fc59f14431e91b8fbd&chksm=ea87f440ddf07d564cb3ce680ea52277c12bce882419428c581b95abbf58d75265fd3fb01942&scene=21#wechat_redirect
https://blog.csdn.net/qq_32782771/article/details/86062586
https://zhuanlan.zhihu.com/p/65870466