基於BERT的KBQA探索
引言
了解知識圖譜的基本概念,也做過一些demo的實踐,畢竟是做問答方向的,所以就比較關注基於知識圖譜的問答。其實構建知識圖譜的核心在於命名實體識別和關係抽取,圍繞這兩個方面也有很多細緻的工作,比如如何解決實體的歧義,進行實體消歧;如何進行多關係的抽取等。從最近各大公司舉行的比賽,我們也可以看出來,今年的主要工作就在這上面,這也是技術落地的一個重要標誌。最近也在搗鼓BERT,想著就將基於KB的QA流程擼一遍,於是就有了這個demo。
項目地址:
WenRichard/KBQA-BERT
數據集介紹[1]
NLPCC全稱自然語言處理與中文計算會議(The Conference on Natural Language Processing and Chinese Computing),它是由中國計算機學會(CCF)主辦的 CCF 中文信息技術專業委員會年度學術會議,專註於自然語言處理及中文計算領域的學術和應用創新。
此次使用的數據集來自NLPCC ICCPOL 2016 KBQA 任務集,其包含 14 609 個問答對的訓練集和包含 9 870 個問答對的測試集。 並提供一個知識庫,包含 6 502 738 個實體、 587 875 個屬性以及 43 063 796 個 三元組。知識庫文件中每行存儲一個事實( fact) ,即三元組 ( 實體、屬性、屬性值) 。各文件統計如下:
訓練集:14609
開發集:9870
知識庫:43063796
知識庫樣例如下所示:
"希望之星"英語風采大賽|||中文名|||「希望之星」英語風采大賽
"希望之星"英語風采大賽|||主辦方|||中央電視台科教節目中心
"希望之星"英語風采大賽|||別名|||"希望之星"英語風采大賽
"希望之星"英語風采大賽|||外文名|||Star of Outlook English Talent Competition
"希望之星"英語風采大賽|||開始時間|||1998
"希望之星"英語風采大賽|||比賽形式|||全國選拔
"希望之星"英語風采大賽|||節目類型|||英語比賽
原數據中本只有問答對(question-answer),並無標註三元組(triple),本人所用問答對數據來自該比賽第一名的預處理https://github.com/huangxiangzhou/NLPCC2016KBQA。構造Triple的方法為從知識庫中反向查找答案,根據問題過濾實體,最終篩選得到,也會存在少量噪音數據。該Triple之後用於構建實體識別和屬性選擇等任務的數據集。
問答對樣例如下所示:
<question id=1> 《機械設計基礎》這本書的作者是誰?
<triple id=1> 機械設計基礎 ||| 作者 ||| 楊可楨,程光蘊,李仲生
<answer id=1> 楊可楨,程光蘊,李仲生
==================================================
<question id=2> 《高等數學》是哪個出版社出版的?
<triple id=2> 高等數學 ||| 出版社 ||| 武漢大學出版社
<answer id=2> 武漢大學出版社
==================================================
<question id=3> 《線性代數》這本書的出版時間是什麼?
<triple id=3> 線性代數 ||| 出版時間 ||| 2013-12-30
<answer id=3> 2013-12-30
==================================================
技術方案[2]
基於知識圖譜的自動問答拆分為2 個主要步驟:命名實體識別步驟和屬性映射步驟。其中,實體識別步驟的目的是找到問句中詢問的實體名稱,而屬性映射步驟的目的在於找到問句中詢問的相關屬性。