【文本信息抽取與結構化】詳聊如何用BERT實現關係抽取

經常在想,天然語言處理到底在作的是一件什麼樣的事情?到目前爲止,我所接觸到的NLP其實都是在作一件事情,即將天然語言轉化爲一種計算機可以理解的形式。這一點在知識圖譜、信息抽取、文本摘要這些任務中格外明顯。不一樣的任務的差別在於目標的轉化形式不同,於是不一樣的任務難度、處理方式存在差別。web


這個系列文章【文本信息抽取與結構化】,在天然語言處理中是很是有用和有難度的技術,是文本處理與知識提取不可或缺的技術。算法


BERT這麼強大的預訓練模型,固然會想着把他利用起來,本篇介紹如何利用BERT進行關係抽取。微信


做者&編輯 | 小Dream哥app

前述
機器學習

關係分類與提取是一個重要的NLP任務,其主要目標是提取出實體以它們之間的關係。在BERT以前,最有效的關係分類方法主要是基於CNN或RNN。最近,預訓練BERT模型在許多NLP的分類和序列標註任務中都得到了很是好的結果。svg


所以,必然會有工做考慮利用BERT來自關係抽取。關係提取與分類的主要難點在於,其不只僅依賴於兩個目標實體的信息,還依賴於句子自己的語義及語法信息。利用BERT強大的編碼能力,預期可以同時抽取到文本中的兩種特徵。事實上也正是如此,目前效果最好的關係抽取模型正是基於BERT的工做,本片介紹幾個利用BERT來作關係抽取的工做。函數

R-BERT模型
性能

R-BERT(做者這樣稱呼),是我調研到的第一篇用BERT作RE的模型,因此筆者先介紹這個模型。學習


1) 模型結構優化

Wu S , He Y . Enriching Pre-trained Language Model with Entity Information for Relation Classification[J]. 2019.

如上圖所示,是R-BERT的模型結構在模型中,須要注意一下三點:

1.爲了使BERT模型可以定位兩個實體的位置,做者在每一個句子的開頭添加 "[CLS]" ,在第一個實體先後添加特殊字符 "$" ,在第二個實體先後添加特殊字符"#"


2.R-BERT利用了BERT三部分特徵進行最後的關係分類:

    (1)[CLS]最終隱含狀態向量,這部分提取了句子

             的語義特徵

    (2)兩個實體的隱含狀態向量,這部分提取了實體 

             特徵


3.最後,利用拼接三個特徵進行關係分類,接一個softmax進行分類

2) 模型運算

下面來說一講如何獲取這三個特徵,對於[CLS]特徵,利用BERT輸出的第一個編碼向量,作如下的處理便可獲得:

對於兩個實體的特徵,在訓練時,拿到BERT輸出對應位置的隱藏向量後作以下的處理便可獲得:


獲取到3個特徵以後,如何進行關係分類呢?模型將上述3個特徵拼接起來,而後接一個DENSE層,在經過softmax進行分類,具體運算過程以下:

做者還作了去除了實體先後的標識符的實驗,發現模型的F1值從89.25%降到87.98%,代表標識符能夠幫助提供實體信息;假如僅僅使用BERT輸出層的[CLS]句子向量,會使得模型F1值從89.25%降到87.99%;上述實驗證實在關係分類任務中,明確實體的位置,可以提高模型的性能。


可是這僅僅是一個關係分類的模型,在前面的文章咱們介紹過,在關係抽取模型中,其實end-to-end模型纔是更合理的方式,下面介紹一種端到端的BERT關係抽取模型。

2  End-to-End BERT RE

1) 模型結構

Giorgi J , Wang X , Sahar N , et al. End-to-end Named Entity Recognition and Relation Extraction using Pre-trained Language Models[J]. 2019.

如上圖所示是該模型的結構示意圖,模型能夠分爲兩個部分:實體抽取模塊和關係分類模塊。


1. 實體識別模塊

實體抽取模塊和咱們前面介紹的實體抽取模塊基本相同,感興趣的同窗能夠看以下的文章:

【NLP-NER】如何使用BERT來作命名實體識別

該模型中差別僅僅在於,文本通過BERT進行特徵抽取以後,接一個Feed-Forward層和sonftmax,而不是CRF。


2. 關係分類模塊

咱們重點來看關係抽取的模塊,該模塊的輸入由2個部分組成:實體抽取信息以及BERT編碼信息。將實體抽取模塊輸出的BIOES類別信息,編碼成固定維度的向量。而後將該向量與BERT的編碼向量拼接起來,做爲關係抽取模塊的輸入,以下公式所示:

該輸入並行的經過了兩個FFN層,稱爲FFN-head和FFN-tail,如上面的模型結構圖所示,獲得兩個向量。

隨後,將這兩個向量經過一個 Biaffine層,預測出屬於每一個關係的類別:

這裏U的維度是m*C*m,W的維度是C*2m。m是FFN層輸出的向量的維度,C是關係的類別數。

2)損失函數

如上公式所示,是該模型採用的損失函數,其中S_r是模型預測的樣本中真正有的關係的預測得分,即r in R(樣本標籤裏的關係)。S_r_c表示模型預測樣本有某一個關係的得分,r in C。


固然,NER模型和RE模型要一塊兒優化,因此總的損失函數爲:

這個模型的特色是端到端的實現了實體抽取和關係抽取,同時也可以預測多個關係類別。

總結


文本信息抽取與結構化是目前NLP中最爲實際且效益最大的任務,熟悉這個任務是一個NLP算法工程師必須要作的事情。


讀者們能夠留言,或者加入咱們的NLP羣進行討論。感興趣的同窗能夠微信搜索jen104,備註"加入有三AI NLP羣"


下期預告:詳述關係識別模型

知識星球推薦

掃描上面的二維碼,就能夠加入咱們的星球,助你成長爲一名合格的天然語言處理算法工程師。


知識星球主要有如下內容:

(1) 聊天機器人;

(2) 知識圖譜;

(3) NLP預訓練模型。


轉載文章請後臺聯繫

侵權必究

往期精選


本文分享自微信公衆號 - 有三AI(yanyousan_ai)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索