實體關系抽取

代碼地址
實體關系抽取是信息抽取任務中非常基礎且必要的工作。實體關系主要有一對一、多對一、多對多等。今天從實踐的角度介紹一下實體關系抽取的相關工作。僅為了簡單介紹實體關系抽取相關的實踐過程,模型我沒有進行深度調優,故不適用實際生產中。僅在此介紹下方法,模型主要結構使用的雙向GRU網絡, 以及BERT。

Joint entity recognition and relation extraction as a multi-head selection problem
模型依據論文“Joint entity recognition and relation extraction as a multi-head selection problem”進行改造而成,舍棄了Label Embeddings部分;沒有使用CRF層進行實體的識別,主要是沒有發現與TF2.0搭配的CRF庫,進而用Softmax代替。

數據來源

百度2019語言與智能技術競賽信息抽取

模型要求

Tensorflow-gpu=2.0.0
transformers

一、實體關系聯合抽取

目的是提取三元組[subject, predicate,object];
基本簡單再簡單的原則,實體標簽{O:0, B:1, I:2}, 進行subject,object提取;
關系部分,是一個多頭選擇策略(本文主要也是介紹這種方法),對任一序列,構建[sequence_length, sequence_length]數組,Subject頭位置[第N行]對應Object頭位置[第M列],該處數字表示第C種關系。

模型一

使用雙向GRU構建實體關系聯合抽取模型。
使用字向量,首先制作字典,選取前4996個字;
構建模型輸入數據,最大長度128,構建文本token,實體label, 關系label;
雙向GRU輸出+softmax提取實體;雙向GRU輸出+sigmoid提取關系。

模型使用64000條訓練數據,最后對測試集前100進行驗證,最大F1值是51%;
主要原因是單靠雙向GRU的學習能力不夠。

模型二

使用BERT構建實體關系聯合抽取模型。
構建模型輸入數據,最大長度128,BERT輸入又三部分構成[文本token, mask_token, segment_token],實體label, 關系label;
BERT輸出+softmax提取實體;BERT輸出+sigmoid提取關系。

模型使用3000條訓練數據,最后對測試集前100進行驗證,最大F1值是81.8%;
模型太重,沒有取過多數據訓練,應該還可以繼續提高的。

二關系抽取

模型一

不進行實體提取,當做已有實體直接進行關系預測。
使用雙向GRU構建關系抽取模型。
使用字向量,首先制作字典,選取前4996個字;
構建模型輸入數據,最大長度128,構建文本token,實體label, 關系label;雙向GRU輸出+sigmoid提取關系。

模型使用64000條訓練數據,最后對測試集前100進行驗證,關系提取最大F1值是81.8%,跟模型一對比,也驗證了單靠雙向GRU進行聯合。

模型二

使用BERT構建關系抽取模型。
構建模型輸入數據,最大長度128,BERT輸入又三部分構成[文本token, mask_token, segment_token],實體label, 關系label;
BERT輸出+sigmoid提取關系。

模型使用3000條訓練數據,最后對測試集前100進行驗證,模型沒有跑完,前10個epoch時,模型F1已經超過85%。

總結

本文的目的就是讓大家了解下多頭選擇策略下的關系抽取問題。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。