【信息抽取】如何使用BERT进行关系抽取
事物、概念之間的關系是人類知識中非常重要的一個部分,但是他們通常隱藏在海量的非結構文本中。為了從文本中抽取這些關系事實,從早期的模式匹配到近年的神經網絡,大量的研究在多年前就已經展開。
然而,隨著互聯網的爆炸發展,人類的知識也隨之飛速的增長,因而對關系抽取(Relation Extraction, RE)提出了更高的要求,需要一個有效的RE系統,能夠利用更多的數據;有效的獲取更多的關系;高效的處理更多復雜的文本;具有較好的擴展性,能夠遷移到更多的領域。
本文首先介紹一種基于預訓練模型的關系抽取方法,即能夠引入現今最有效的預訓練模型BERT,來進行關系分類的方法。
作者&編輯 | 小Dream哥
1 預訓練模型?
預訓練模型是近一兩年來NLP領域取得的非常重要的進展。基于大型的預訓練模型finetune下游任務,是如今NLP領域非常流行的做法,在很多的NLP任務中都取得了SOTA的效果,我們在此前也寫了很多的文章進行介紹,感興趣的讀者可以看看:
【NLP】 深入淺出解析BERT原理及其表征的內容
【NLP】GPT:第一個引入Transformer的預訓練模型
【NLP】XLnet:GPT和BERT的合體,博采眾長,所以更強
【技術綜述】深度學習在自然語言處理中的應用
【每周NLP論文推薦】從預訓練模型掌握NLP的基本發展脈絡
既然預訓練模型這么有效,自然會有用它來做關系抽取和分類的了,我們今天就介紹基于BERT的關系抽取模型。
本文涉及的模型參考論文如下:
[1] Wu S , He Y . Enriching Pre-trained Language Model with Entity Information for Relation Classification[J]. 2019.
[2] Giorgi J , Wang X , Sahar N , et al. End-to-end Named Entity Recognition and Relation Extraction using Pre-trained Language Models[J]. 2019.
2 關系分類
引入BERT進行關系分類,主要目的是為了利用BERT預訓練時學到的大量語言本身的知識。基于此,結合關系分類任務的特點,下面介紹一種典型的基于BERT的關系分類模型,并做一些有益的討論。
1) 模型結構
如上圖所示,是該模型的結構,下面做一個簡單的介紹:
1.輸入層,跟典型的BERT輸入層無異。需要注意的是,在這個模型中,分別用特殊符號$和#號標識兩個實體的位置。
2.利用了BERT特征抽取后2個部分的特征:
BERT【CLS】位置的embeding和兩個實體相對應的embeding
3.將上述3個特征拼接起來,再接一個全連接層和softmax層輸出關系的分類。
論文中用到的模型參數如下,感興趣同學可以復現一下:
2) 模型結果
模型結構并不復雜,但是取得了不錯的效果:
我們可以認為模型對分類任務起到關鍵效果的部分有3個:
1.BERT【CLS】embedding,學習到了句子級的特征
2.BERT實體embedding,學習到了實體的語義特征
3.特殊符號,帶給了模型實體的邊界及位置信息
論文做了實驗來論證這3部分特征的作用,如下圖所示:
1.R-BERT-NO-SEP-NO-ENT 代表既沒有分隔符也沒有實體embedding特征的模型
2.R-BERT-NO-SEP代表既沒有分隔符的模型
3.R-BERT-NO-ENT代表既沒有實體embedding特征的模型
4.R-BERT代表完整的模型結構
結果可以看出,實體embedding和分隔符對模型效果貢獻了很大。這主要是因為,在關系分類的任務中,句子的語義信息和兩個實體的詞級信息均很重要。通過兩個分隔符,能夠幫助BERT學習兩個實體的位置,從而提高模型對實體的表征能力。
3 BERT Joint抽取模型
上述模型是一個單純的關系分類模型,在前面的關系抽取文章中我們提到過,聯合抽取通常具有更好的效果,下面介紹一種基于BERT的聯合抽取模型,即通過一個模型能夠得到輸入文本中的實體以及實體之間的關系,供讀者參考。
1) 模型結構
如上圖所示,是本文要介紹的聯合抽取模型的結構圖,可以把這個模型分成3個部分:
1.NER Module,實體抽取模塊。
2.RE Module,關系分類模塊。
3. BERT,共享特征抽取模塊。
對于實體抽取模塊,跟此前我們介紹的基于BERT的實體抽取模型沒有差別,不了解的同學可以出門左轉先看一下:
【NLP-NER】如何使用BERT來做命名實體識別
RE模塊相對復雜一點,我們詳細介紹一下,
RE模塊的輸入將兩個部分的輸入近拼接得到:
1.BERT對輸入序列編碼得到的特征序列;
2.NER模塊的輸出,經過argmax函數得到一個跟輸入序列長度相同的,轉化為固定維度的序列。
拼接得到的向量分別通過一個Feed Forward層,通過一個biaffine分類器,預測出實體之間的關系。
biaffine分類器的實際作用如下:
2) 模型結果
如上圖所示,該模型在幾個數據集中均取得了不錯的效果,感興趣的同學可以實現一下試試。
總結
目前,基于預訓練模型的關系抽取即分類模型均取得了SOTA的效果,在實際的生產中也都得到了一定的應用。從事NLP相關工作的讀者,務必要熟悉相關的模型。
下期預告:暫無
知識星球推薦
掃描上面的二維碼,就可以加入我們的星球,助你成長為一名合格的自然語言處理算法工程師。
知識星球主要有以下內容:
(1) 聊天機器人。
(2) 知識圖譜。
(3) NLP預訓練模型。
轉載文章請后臺聯系
侵權必究
其他內容
【完結】 12篇文章帶你完全進入NLP領域,掌握核心技術
【年終總結】2019年有三AI NLP做了什么,明年要做什么?
【NLP-詞向量】詞向量的由來及本質
【NLP-詞向量】從模型結構到損失函數詳解word2vec
【NLP-NER】什么是命名實體識別?
【NLP-NER】命名實體識別中最常用的兩種深度學習模型
【NLP-NER】如何使用BERT來做命名實體識別
【NLP-ChatBot】我們熟悉的聊天機器人都有哪幾類?
【NLP-ChatBot】搜索引擎的最終形態之問答系統(FAQ)詳述
【NLP-ChatBot】能干活的聊天機器人-對話系統概述
【知識圖譜】人工智能技術最重要基礎設施之一,知識圖譜你該學習的東西
【知識圖譜】知識表示:知識圖譜如何表示結構化的知識?
【知識圖譜】如何構建知識體系:知識圖譜搭建的第一步
【知識圖譜】獲取到知識后,如何進行存儲和便捷的檢索?
【知識圖譜】知識推理,知識圖譜里最“人工智能”的一段
【文本信息抽取與結構化】目前NLP領域最有應用價值的子任務之一
【文本信息抽取與結構化】詳聊文本的結構化【上】
【文本信息抽取與結構化】詳聊文本的結構化【下】
【信息抽取】NLP中關系抽取的概念,發展及其展望
【信息抽取】如何使用卷積神經網絡進行關系抽取
【NLP實戰】tensorflow詞向量訓練實戰
【NLP實戰系列】樸素貝葉斯文本分類實戰
【NLP實戰系列】Tensorflow命名實體識別實戰
【NLP實戰】如何基于Tensorflow搭建一個聊天機器人
【NLP實戰】基于ALBERT的文本相似度計算
總結
以上是生活随笔為你收集整理的【信息抽取】如何使用BERT进行关系抽取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【杂谈】如何使用有三AI生态学习计算机视
- 下一篇: 【杂谈】深度学习之模型设计书看完了完全不