NLP(二十七)開放領域的三元組抽取的一次嘗試

  當我寫下這篇文章的時候,個人心裏是激動的,這是由於,自從去年6月份寫了文章利用關係抽取構建知識圖譜的一次嘗試 後,我就一直在試圖尋找一種在開放領域可以進行三元組抽取的辦法,也有不少讀者問過我這方面的問題,今天,筆者將給出答覆,雖然不是正確答案(如今也沒有正確答案),但至少,我寫下了本身的答案。
  離我想出這個抽取系統雖然纔過去不久,但個人心情,已經由開始的激動狂喜,轉化爲後來的平淡,直到如今的不滿。事實證實,開放領域的三元組抽取實在太難,以筆者我的的努力和智商,實在無法給出完美的答案,因此,文章的題目是嘗試,僅僅做爲嘗試,並不能解決好這個問題。但,我仍是想寫些什麼,但願可以對筆者有一點點啓發,同時,也是對本身近半年的探尋作一個總結。
  關於三元組抽取的基本介紹和經常使用辦法,筆者以前已經在很多文章中描述過,這裏再也不過多介紹,有興趣的讀者能夠參考文章利用關係抽取構建知識圖譜的一次嘗試NLP(二十六)限定領域的三元組抽取的一次嘗試 。本文將會介紹筆者在開放領域作三元組抽取的一次嘗試。
   本項目已經開源至Github,文章最後會給出相應的網址。本項目的項目結構以下:
項目結構
本項目一共分爲四部分,主要模塊介紹以下:html

  • extract_example: 利用訓練好的模型對基本小說和新聞進行三元組抽取,造成知識圖譜例子;
  • sequence_labeling:訓練標註,對標註的實體數據進行序列標註算法訓練;
  • spo_tagging_platform:標註平臺,標註subject,predicate和object以及三元組是否有效;
  • text_classification:文本分類,用於判別抽取的三元組是否有效。

  本項目的抽取系統流程圖以下:
抽取系統流程圖
  接下來筆者將逐一介紹。git

標註平臺

  筆者用tornado搭建了簡易的標註平臺,在標註頁面中,標註人員須要輸入標註的句子(句子級別的抽取)以及subject,predicate,object,點擊「顯示SPO」,將有效的三元組標註爲1,無效的三元組標註爲0。之因此採起這種標註方法,是由於咱們能夠在句子中標註subject,predicate,object,這些標註的實體就會造成可能的三元組組合,再利用0,1來標註這種三元組是否有效,這樣就能作到在開放領域進行三元組抽取。
  一個簡單的標註例子以下:
標註例子
再對以上的標註結果作一些說明,咱們的標註是以句子爲單位,進行句子級別的標註,不一樣要素在標註的時候加#區分,標註了兩個subject,1個predicate(共用)和2個object,其中predidate是這些subject和object公用的,因此只須要標註一次。這樣,點擊「顯示SPO」,一共會顯示4個三元組,s,p,o用#隔開,0,1表示是不是有效三元組,默認爲0。
  筆者利用空餘時間,一共標註了3200多個樣本,對於序列標註來講,就是3200多個樣本,對於文本分類來講,就是9000多個樣本了。github

序列標註

  對於上述的標註例子,會造成以下的標註序列:算法

美    B-SUBJ
國    I-SUBJ
疾    I-SUBJ
控    I-SUBJ
中    I-SUBJ
心    I-SUBJ
主    B-PRED
任    I-PRED
雷    B-OBJ
德    I-OBJ
菲    I-OBJ
爾    I-OBJ
德    I-OBJ
(    O
左    O
圈    O
)    O
和    O
美    B-SUBJ
國    I-SUBJ
國    I-SUBJ
立    I-SUBJ
衛    I-SUBJ
生    I-SUBJ
研    I-SUBJ
究    I-SUBJ
院    I-SUBJ
過    I-SUBJ
敏    I-SUBJ
和    I-SUBJ
傳    I-SUBJ
染    I-SUBJ
病    I-SUBJ
研    I-SUBJ
究    I-SUBJ
所    I-SUBJ
主    B-PRED
任    I-PRED
福    B-OBJ
西    I-OBJ
(    O
右    O
圈    O
)    O

  將數據集分爲訓練集和測試集,比例爲8:2.採用經典的深度學習模型ALBERT+Bi-LSTM+CRF進行實體識別,設置最大文本長度爲128,訓練100個epoch。關於該模型的介紹,能夠參考文章NLP(二十五)實現ALBERT+Bi-LSTM+CRF模型
  在測試集上的訓練結果以下:微信

accuracy:  93.69%; precision:  76.26%; recall:  82.33%; FB1:  79.18
OBJ: precision:  80.47%; recall:  88.81%; FB1:  84.44  927
PRED: precision:  76.89%; recall:  83.69%; FB1:  80.14  1021
SUBJ: precision:  71.72%; recall:  75.32%; FB1:  73.48  983

在測試集上的整體F1值接近80%。tornado

文本分類

  關於文本分類,須要多作一些說明。
  雖然本文的題目是關於在開發領域的三元組抽取的嘗試,但實際我在標註的時候,仍是更多地標註人物頭銜,人物關係,公司與人的關係,影視劇主演、導演信息等。造成的有效的文本分類的樣本爲9000多個,一共有關係1365個,數量最多的前20個關係以下圖:
數量最多的20個關係
  以上述的標註數據爲例,造成的標註數據以下:學習

美國疾控中心#主任#雷德菲爾德#1#美國疾控中心主任雷德菲爾德(左圈)和美國國立衛生研究院過敏和傳染病研究所主任福西(右圈)
美國疾控中心#主任#福西#0#美國疾控中心主任雷德菲爾德(左圈)和美國國立衛生研究院過敏和傳染病研究所主任福西(右圈)
美國國立衛生研究院過敏和傳染病研究所#主任#雷德菲爾德#0#美國疾控中心主任雷德菲爾德(左圈)和美國國立衛生研究院過敏和傳染病研究所主任福西(右圈)
美國國立衛生研究院過敏和傳染病研究所#主任#福西#1#美國疾控中心主任雷德菲爾德(左圈)和美國國立衛生研究院過敏和傳染病研究所主任福西(右圈)

在實際模型訓練的時候,會將原文中的subject用S*len(subject)代替,predicate用P,object用O。
  將數據集分爲訓練集和測試集,比例爲8:2。採用經典的深度學習模型ALBERT+Bi-GRU+ATT+FC,設置文本的最大長度爲爲128,訓練30個epoch,採用early stopping機制,訓練過程的loss和acc圖像以下:
訓練過程的loss和acc圖像
最終在測試集上的accuracy約爲96%。測試

新數據進行三元組抽取

  上述的模型訓練完畢後,咱們就能夠將其封裝成HTTP服務。對於新輸入的句子,咱們先利用序列標註模型預測出其中的subject,predicate和object,組合成三元組與句子的拼接,輸入到文本分類模型,判別該三元組是否有效,0爲無效,1爲有效。
  從網上找幾個例子,預測的結果以下:
例子1
例子2
例子3
  extract_example目錄中爲抽取的效果,包括幾本小說和一些新聞上的效果,關於這方面的演示,能夠參考另外一個項目:https://github.com/percent4/knowledge_graph_demo 。也能夠參考文章知識圖譜構建舉例 中給出的幾個知識圖譜的建構的例子。spa

總結

  本文寫的過程較爲簡單,也沒有代碼,這是由於筆者在以前的文章中作了大量的鋪墊,主要是集中在模型方面。何況,這個項目比較大,也不適合在這裏詳細講述,筆者只在這裏給出思路和大概的處理流程,具體的實現代碼能夠參考下方的Github地址。
  在實際的抽取過程當中,一些句子也存在抽取出大量無用的三元組的狀況,致使召回率高,這是由於本項目針對的是開放領域的三元組抽取,所以效果比不會有想象中的那麼好,提高抽取效果的辦法以下:.net

  • 增長數據標註量,目前序列標註算法的樣本僅3200多個;
  • 模型方面:如今是pipeline形式,各自的效果還行,但整體上不如Joint形式好;
  • 對於本身想抽的其餘三元組的情形,建議增長這方面的標註;
  • 文本預測耗時長(該問題已經解決)。

  本項目做爲筆者在開放領域的三元組抽取的一次嘗試,在此以前關於這方面的文章或者項目還不多,所以能夠說是探索階段。

  源碼和數據已經在Github項目中給出,網址爲 https://github.com/percent4/spo_extract_platform

  本人的微信公衆號爲Python爬蟲與算法,歡迎關注~

參考文獻

  1. 利用關係抽取構建知識圖譜的一次嘗試: https://www.cnblogs.com/jclia...
  2. NLP(二十六)限定領域的三元組抽取的一次嘗試: https://blog.csdn.net/jclian9...
  3. NLP(二十五)實現ALBERT+Bi-LSTM+CRF模型: https://blog.csdn.net/jclian9...
  4. 知識圖譜構建舉例: https://blog.csdn.net/jclian9...
  5. NLP(二十一)人物關係抽取的一次實戰:https://blog.csdn.net/jclian9...
  6. 《知識圖譜 方法、實踐與應用》 王昊奮、漆桂林、陳華鈞著,中國工信出版集團、電子工業出版社出版。
相關文章
相關標籤/搜索