利用關係抽取構建知識圖譜的一次嘗試

關係抽取

  信息抽取(Information Extraction, IE)旨在從大規模非結構或半結構的天然語言文本中抽取結構化信息。關係抽取(Relation Extraction, RE)是其中的重要子任務之一,主要目的是從文本中識別實體並抽取實體之間的語義關係,是天然語言處理(NLP)中的一項基本任務。好比,咱們能夠從下面的一段話中,web

鴻海集團董事長郭臺銘25日表示,阿里巴巴集團董事局主席馬雲提的新零售、新制造中的「新制造」,是他給加上的。網易科技報導,郭臺銘在2018深圳IT領袖峯會談到工業互聯網時表示,眼睛看的、腦筋想的、嘴巴吃的、耳朵聽的,都在隨着互聯網的發展而蓬勃發展,固然互聯網不是萬能的,好比說剛纔李小加要水喝,在手機上一按就能出一瓶水嗎?固然作不到,仍是得有實體經濟。算法

能夠抽取出以下三元組,用來表示實體之間的關係:數據庫

['鴻海集團', '董事長', '郭臺銘']
['阿里巴巴集團', '主席', '馬雲']

而且可以造成以下的簡單的知識圖譜(Knowledge Graph)。微信

  關於知識圖譜,筆者已經在文章SPARQL入門(一)SPARQL簡介與簡單使用中給出了一些介紹,而利用關係抽取,咱們能夠從一些非結構化數據中,提取出實體之間的關係,造成知識圖譜,這在很大程度上能夠幫助咱們減輕構建知識圖譜的成本。非結構化數據越多,關係抽取效果越好,咱們構建的知識圖譜就會越龐大,實體之間的關係也會越豐富。網絡

如何作好關係抽取?

   目前,網絡上有許多與關係抽取相關的公開比賽,好比:學習

  經常使用的關係抽取語料以下:測試

  • MUC關係抽取任務數據集;
  • ACE關係抽取任務數據集;
  • TAC-KBP數據集。

  現階段,關係抽取的辦法主要以下:網站

  • 基於規則的模式匹配;
  • 基於監督學習的方法;
  • 半監督和無監督學習方法;
  • 遠程監督的方法;
  • 深度學習模型。

  接着,筆者想說下,爲何最近會研究關係抽取。在一個偶然的機會,筆者看到了這個網站:https://www.wisers.ai/zh-cn/browse/relation-extraction/demo/ ,截圖以下:人工智能

這個圖給人以一種很是炫酷的感受,所以,筆者就被它所吸引了。但筆者在這個demo網站上嘗試了幾篇新的語料,有些效果好,有些效果不盡如人意,所以,筆者決定本身動手實現一個關係抽取的模型!
  雖然網上已經有許多現成的很好的關係抽取的模型,但筆者仍是但願可以按照本身的意願和想法來實現一下,固然,僅僅是做爲一次嘗試。筆者的思路以下:3d

  • 以句子級別進行標註,標註出句子中的主語,謂語,賓語,造成標註序列;
  • 利用標註好的語料,採用bert+dl的方法進行訓練;
  • 對新的語料,預測主語,謂語,賓語,而後利用必定的策略,造成實體關係;
  • 對新語料的實體關係進行可視化展現。

若是你對筆者的嘗試感興趣,請嘗試這閱讀下去。

如何標註?

  按照筆者的慣例,仍是本身進行標註。那麼,對於關係抽取,該如何進行標註呢?好比,下面這句話:

應日本國首相安倍晉三邀請,出席二十國集團領導人第十四次峯會。

咱們須要的實體關係應該是: 日本國-->首相-->安倍晉三,那麼咱們能夠選擇主語爲日本,謂語爲首相,賓語爲安倍晉三,造成的標註序列以下:

應   O
日   B-SUBJ
本   I-SUBJ
國   I-SUBJ
首   B-PRED
相   I-PRED
安   B-OBJ
倍   I-OBJ
晉   I-OBJ
三   I-OBJ
邀   O
請   O
,   O
出   O
席   O
二   O
十   O
國   O
集   O
團   O
領   O
導   O
人   O
第   O
十   O
四   O
次   O
峯   O
會   O
。   O

對於句子中出現多主語,多謂語,多賓語的狀況,也能夠照此進行標註,好比下面這句:

齊鵬飛同志任中共中國人民大學委員會常委、副書記。

造成的標註序列以下:

齊   B-OBJ
鵬   I-OBJ
飛   I-OBJ
同   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
常   B-PRED
委   I-PRED
、   O
副   B-PRED
書   I-PRED
記   I-PRED
。   O

對此,咱們但願造成兩個三元組,分別爲:中共中國人民大學委員會-->常委-->齊鵬飛, 中共中國人民大學委員會-->副書記-->齊鵬飛。
  筆者利用本身的標註平臺(後續會在Github開源),一共標註了950分語料,其中80%做爲訓練集,10%做爲驗證集,另外10%做爲測試集。固然,標註的過程是很痛苦的,這些標註量也還遠遠不夠,後續會持續不斷地更新。

模型訓練

  因爲是小樣本量的標註數量,所以,在模型的選擇上,須要預訓練模型,筆者的預訓練模型選擇BERT。在預訓練的基礎上,選擇BiLSTM+CRF深度學習模型,對上述語料進行訓練,共訓練100次,在驗證集和測試集上的效果以下:

驗證集:

項目 precision recall f1
所有 71.08% 78.27% 74.50%
賓語 78.95% 88.24% 83.33%
謂語 68.00% 74.56% 71.13%
主語 67.18% 73.33% 70.12%

測試集

項目 precision recall f1
所有 75.07% 82.18% 78.46%
賓語 78.33% 85.45% 81.74%
謂語 73.23% 82.30% 77.50%
主語 73.88% 79.20% 76.45%

效果並無達到很好,一方面是標註策略的問題,另外一方面是標註的數量問題(由於這是一個通用模型),後續咱們能夠看看,當標註數量提上去後,模型訓練的效果是否會有提高。

模型預測

  接着,咱們利用剛纔訓練好的模型,對新的句子進行預測,記住,預測的級別爲句子。固然,預測的結果,只是序列標註模型識別出的結果,咱們還要採用必定的策略,將其造成三元組。好比如下的句子:

英媒稱,美國農業部長桑尼·珀杜在6月25日播出的一個訪談節目中認可,美國農民是特朗普總統對華貿易戰的「受害者」。

預測的結果以下:

[{'word': '美國', 'start': 4, 'end': 6, 'type': 'SUBJ'}, {'word': '農業部長', 'start': 6, 'end': 10, 'type': 'PRED'}, {'word': '桑尼·珀杜', 'start': 10, 'end': 15, 'type': 'OBJ'}, {'word': '美國', 'start': 34, 'end': 36, 'type': 'SUBJ'}]

能夠看到,模型識別出主語爲美國,謂語爲農業部長,賓語爲桑尼·珀杜,這是一個完美的三元組。

  咱們再來對下面的語句進行預測:

6月25日,華爲常務董事、運營商事業部總裁丁耘表示,華爲已在全球範圍內得到50個5G商用合同,其中2/3是由華爲協助其構建的。

預測結果爲:

[{'word': '華爲', 'start': 6, 'end': 8, 'type': 'SUBJ'}, {'word': '常務董事', 'start': 8, 'end': 12, 'type': 'PRED'}, {'word': '運營商事業部', 'start': 13, 'end': 19, 'type': 'SUBJ'}, {'word': '總裁', 'start': 19, 'end': 21, 'type': 'PRED'}, {'word': '丁耘', 'start': 21, 'end': 23, 'type': 'OBJ'}, {'word': '華爲', 'start': 26, 'end': 28, 'type': 'SUBJ'}, {'word': '華爲', 'start': 54, 'end': 56, 'type': 'SUBJ'}]

這就須要必定的策略,才能識別出具體的三元組了。筆者採用的策略以下:

  • 按主語,謂語,賓語進行歸類,造成主體集合{華爲, 運營商事業部},謂語集合{常務董事, 總裁}以及賓語集合{丁耘}
  • 接着,按照各個元素在句子出現的位置進行組合,好比華爲的位置,離常務董事捱得近,那麼造成一個三元組['華爲', '常務董事', '丁耘'],同理,造成另外一個三元組['運營商事業部', '總裁', '丁耘'];
  • 將句子按照逗號進行分割,造成小句子集合,看三元組的三個元素是否都在一個小句子中,若是是,則提取該三元組,若是不是,則放棄該三元組。

關係抽取可視化

  對於關係抽取後的節後,咱們將三元組導入至Neo4J中,查看可視化的效果。咱們一共選擇三篇文章進行測試,爲了取得較好的效果,咱們選擇了程序處理+人工check(過濾)的過程,稍微有點工做量。
  第一篇文章來自微信公衆號,標題爲:哈工大社會計算與信息檢索研究中心(HIT-SCIR)擬於7月20日在哈工大舉辦首屆事理圖譜研討會, 訪問網址爲:https://mp.weixin.qq.com/s/9H7rxsPdo5S5trwz_CASZw, 咱們抽取出來的實體關係(帶原文)以下:

原文,s,p,o
2017年10月,研究中心主任劉挺教授在中國計算機大會(CNCC)上正式提出事理圖譜的概念,2018年9月,在研究中心丁效老師的主持下,研製出中文金融事理圖譜1.0版本。,研究中心,老師,丁效
2017年10月,研究中心主任劉挺教授在中國計算機大會(CNCC)上正式提出事理圖譜的概念,2018年9月,在研究中心丁效老師的主持下,研製出中文金融事理圖譜1.0版本。,研究中心,教授,劉挺
2017年10月,研究中心主任劉挺教授在中國計算機大會(CNCC)上正式提出事理圖譜的概念,2018年9月,在研究中心丁效老師的主持下,研製出中文金融事理圖譜1.0版本。,研究中心,主任,劉挺
白碩(上海證券交易所前任總工程師,中科院計算所博導),上海證券交易所,前任總工程師,白碩
荀恩東(北京語言大學信息學院院長),北京語言大學信息學院,院長,荀恩東
趙軍(中科院自動化所研究員),中科院自動化所,研究員,趙軍
吳華(百度技術委員會主席),百度技術,主席,吳華
吳華(百度技術委員會主席),百度技術,委員,吳華
宋陽秋(香港科技大學助理教授),香港科技大學,助理教授,宋陽秋
李金龍(招商銀行人工智能實驗室負責人),招商銀行人工智能實驗室,負責人,李金龍
李世奇(北京西亞財信人工智能科技有限責任公司CEO),北京西亞財信人工智能科技有限責任公司,CEO,李世奇

對於這篇文章,咱們沒有抽取出李斌陽(國際關係學院副教授)中的實體關係,而且吳華(百度技術委員會主席這句爲抽取有誤,正確的應爲:百度技術委員會,主席,吳華。
  將上述關係修改下,導入至Neo4J中,獲得的實體關係圖以下:

  第二篇文章爲鳳凰網的新聞,標題爲南陽「水氫車」風波:一箇中部城市的招商突圍戰,訪問網址爲:https://news.ifeng.com/c/7ntawxhCDvj ,咱們抽取出來的實體關係(帶原文)以下表:

原文,s,p,o
2017年,因巴鐵所屬企業北京華贏凱來資產管理有限公司涉嫌非法集資活動,北京警方將「巴鐵之父」白丹青依法刑拘。,巴鐵,之父,白丹青
南陽「神車」下線以後,界面新聞約訪南陽市委書記張文深,被告知張文深與市長雙雙出差,工做人員並不肯定張文深什麼時候回到南陽,他的手機則處於忙線狀態。,南陽,市委書記,張文深
南陽洛特斯新能源汽車有限公司實際控制人龐青年說,水氫汽車並未下線,媒體的報道使他措手不及。,南陽洛特斯新能源汽車有限公司,實際控制人,龐青年
從2006年開始,前湖北工業大學學者董仕節帶領的團隊開始研發一項車載鋁合金水解制氫技術,並得到國家973前期研究項目和國家天然基金的支持。,湖北工業大學,學者,董仕節
南陽市高新區投資公司負責人尹召翼在接受央視採訪時表示,龐青年常常拿「水氫」來混淆「水解制氫」的概念。,南陽市高新區投資公司,負責人,尹召翼
南陽市招商局招商二科科長趙懌接受界面新聞採訪時表示,他只知道這個項目不是招商科引進的。,南陽市招商局招商二科,科長,趙懌
龐青年告訴界面新聞,南陽市高新區投資有限公司已經爲他提供了9600萬元,用途是南陽高新區投資有限公司給南陽市洛特斯新能源汽車有限公司的註冊資金,佔股49%。,南陽高新區投資有限公司,南陽市,洛特斯新能
曾前後在南陽市委黨校、南陽市發改委任職的退休幹部張一江(化名)說,「走工業突圍道路的衝動在南陽早已有之,因此這幾年的巴鐵神車項目、加水就能跑的神車項目能被引進南陽,我以爲算不上奇怪。」,南陽市發改委,退休幹部,張一江
以這次南陽神車項目爲例,南陽市科技局局長張梅明確告訴界面新聞,龐青年的企業進入南陽時未有任何部門邀請科技局鑑別其「新能源技術」。,南陽市科技局,局長,張梅
官方報道顯示,2012年6月18日,一位時任南陽市委主要領導在南陽賓館會見了青年汽車董事局主席龐青年一行,雙方就如何發揮自身優點,謀求合做雙贏進行了交流,「南陽的發展須要大項目的帶動和支撐,咱們歡迎中國青年汽車集團這樣有實力、有影響的大企業來南陽投資興業。,青年汽車,董事局主席,龐青年
早在當年5月,在第十九屆中國北京國際科技博覽會上,時任南陽市副市長鄭茂傑與巴鐵科技發展有限公司總工程師宋有洲簽署戰略合做協議。,巴鐵科技發展有限公司,總工程師,宋有洲
早在當年5月,在第十九屆中國北京國際科技博覽會上,時任南陽市副市長鄭茂傑與巴鐵科技發展有限公司總工程師宋有洲簽署戰略合做協議。,南陽市,副市長,鄭茂傑

對於這篇文章,咱們沒有抽取出一些關係,好比南陽市發展和改革委員會主任喬長恩受訪時認可,招商引入南陽洛斯特以前「掌握這個狀況。」等,而且龐青年告訴界面新聞,南陽市高新區投資有限公司已經爲他提供了9600萬元,用途是南陽高新區投資有限公司給南陽市洛特斯新能源汽車有限公司的註冊資金,佔股49%。這句爲抽取有誤,應當刪除。
  將上述關係修改下,導入至Neo4J中,獲得的實體關係圖以下:

  最後一篇爲長篇小說——著名做家路遙的《平凡的世界》第一部。利用咱們的關係抽取模型,一共在該小說中抽取了169對實體關係,其中有效實體關係100對。因爲咱們在該小說中抽取的實體關係過多,所以只展現前10條原文及抽取的實體關係:

原文,s,p,o
天天來回二十里路,與他一塊上學的金波和大隊書記田福堂的兒子潤生都有自行車,只有他是兩條腿走路。,田福堂,兒子,潤生
不過,他對潤生的姐姐潤葉倒懷有一種親切的感情。,潤生,姐姐,潤葉
「金波是金俊海的小子。」,金俊海,小子,「金波
腦子裏把先後村莊未嫁的女子一個個想過去,最後選定了雙水村孫玉厚的大女子蘭花。,雙水村孫玉厚,大女子,蘭花
玉亭是大隊黨支部委員、農田基建隊隊長、貧下中農管理學校委員會主任,一身三職,在村裏也是一我的物。,貧下中農管理學校,主任,玉亭
玉亭是大隊黨支部委員、農田基建隊隊長、貧下中農管理學校委員會主任,一身三職,在村裏也是一我的物。,農田基建隊,隊長,玉亭
玉亭是大隊黨支部委員、農田基建隊隊長、貧下中農管理學校委員會主任,一身三職,在村裏也是一我的物。,大隊,黨支部委員,玉亭
會戰總指揮是公社副主任徐治功,副總指揮是公社武裝專幹楊高虎。,公社,武裝,楊高虎
會戰總指揮是公社副主任徐治功,副總指揮是公社武裝專幹楊高虎。,公社,副主任,徐治功
這時候,雙水村婦女主任賀鳳英,正領着本村和外村的一些「鐵姑娘」,忙碌地佈置會場。,雙水村,婦女主任,賀鳳英
……

  將上述關係修改下,導入至Neo4J中,獲得的實體關係圖以下:

總結

  本次關係抽取僅僅做爲筆者的一次嘗試,在實際的應用中還存在着許多的不足之處,好比:

  • 對語料的標註,是否能夠採用其餘更好的辦法;
  • 做爲通用模型,標註的數量還遠遠不夠;
  • 模型的選擇方面,是否能夠其餘更好的模型;
  • 對預測的結果,如何能更好地提取出三元組;
  • 將三元組掃入至圖數據庫中,可否作到實體對齊,且能作一些實體關係的分析與推理。

  本文用到的語料以及模型會在後續的文章中公開,但願你們能繼續關注~   注意:不妨瞭解下筆者的微信公衆號: Python爬蟲與算法(微信號爲:easy_web_scrape), 歡迎你們關注~

相關文章
相關標籤/搜索