「NLP」如何利用BERT來做基於閱讀理解的信息抽取

2019-12-25     有三AI

信息抽取 (Information Extraction: IE)是把文本里包含的信息進行結構化處理,變成計算機能夠處理的結構,實體抽取、關係抽取、事件抽取等都屬於信息抽取的範疇。在NLP領域,信息抽取的應用場景十分的廣泛,是一個非常重要的基礎任務。

作者 | 小Dream哥

編輯 | 言有三

1 傳統的信息抽取

信息抽取是將非結構化的信息轉化為結構化信息的過程,可以分為三類:

命名實體識別(NER):從文本中抽取人物、機構、文件名等實體。

關係抽取(RE):得到實體後,抽取實體間的關係,一般抽取得到一個(實體,關係,實體)的三元組。

事件抽取:抽取多個實體和事件關係,一般得到一個trigger和多個arguments的多元組。

很多時候,信息抽取會包括上面的幾種,例如上面的三元組抽取,會包括實體抽取和關係抽取。傳統的做法包括pipline和joint方法:

pipline方法:先抽取實體再抽取關係,就像一個流水線一樣。這種方法容易在關係抽取時引入實體抽取時的誤差,從對整體效果造成不好的影響。

joint方法:即通過類似於端到端的方法,一次性抽取出實體和關係,避免誤差的累積。

但是上述兩種方法都無法處理一些複雜的問題,例如,「喬布斯在1977年至1983年擔任了蘋果公司的CEO,在1986年至1996年擔任皮克斯動畫工作室的CEO」。這裡存在7個實體,相互間都有關係,非常複雜。傳統的信息抽取方法難以處理。

今天我們介紹基於閱讀理解的信息抽取,能夠較好的處理一些複雜的問題,特別是在抽取一些比較長的信息時,效果比較明顯。

2 基於閱讀理解的信息抽取

先來回顧一下NLP中「機器閱讀理解」這個任務。機器閱讀理解是給定一段文本Paragraph和問題Question,得到答案Answer。通常假定Answer就包含在原文中,因此機器閱讀理解任務的目標就是得到一個span(start, end),start表示Answer的開始字符在Paragraph中的位置,end表示Answer的結束字符在Paragraph中的位置。

在BERT出來之前,機器閱讀理解主要用LSTM等特徵抽取分別對Paragraph和Question進行表征,抽取特徵。再將二者的特徵進行一些運算,得到相應的輸出表征。這裡不做詳細的介紹,我們介紹今天的重點,利用BERT來做基於閱讀理解的信息抽取

3 基於BERT的方案

如上圖所示,展示了如何用BERT來做信息抽取任務的結構圖。注意一下幾點即可:

1.將Question和Paragraph分別作為BERT的text1和text2輸入。

2.start/end span在Paragraph對應的輸出位置表示。

通常輸出會通過2個dense網絡,接到start輸出和end輸出序列。

假設Paragraph為「周杰倫出生於台灣」,Question為「周杰倫出生於哪裡?」,則laebl為:start[0,0,0,0,0,1,0],end[0,0,0,0,0,0,1]。

將上述start輸出和end輸出序列接一個sigmod層,然後用binary_crossentropy函數即可進行訓練。

如果想要輸出一個Answer是否正確的機率,可用將[CLS]的輸出表征利用起來,非常的簡單。

總結

怎麼樣?用BERT來處理問題,通常非常的直接和簡單,不需要接特別複雜的下游網絡就能夠取得不錯的效果。這是BERT的優勢,大巧不工。感興趣的同學可以自己實踐一下。

讀者們可以留言,或者加入我們的NLP群進行討論。感興趣的同學可以微信搜索jen104,備註"加入有三AI NLP群"

下期預告:暫無

文章來源: https://twgreatdaily.com/zh/R_KZO28BMH2_cNUgIAJp.html