本文共669個字,預計閱讀時間需要3分鐘。
簡介
基於知識圖譜的問答系統,即KBQA。其中一個簡單的實現方法是根據用戶輸入的自然語言問句,轉化爲圖數據庫中的關係查詢,最終將數據庫中的實體及關係呈現給用戶。
下面給出了一個KBQA的Demo。
實現依賴
- Python 3.6+
- Apache Jena Fuseki
- SPARQLWrapper
- refo
- jiaba
實例數據
此知識圖譜的主題爲COVID-2019的知識查詢。三元組數據來自OpenKG的新冠數據集。
實現流程
- 數據提取:下載OpenKG提供的json-ld數據,通過腳本將json-ld數據轉化爲RDF格式的數據,RDF數據已經上傳至本實例中,用戶可以直接使用。
- 數據存儲:採用Apache Jena Fuseki,Apache Jena Fuseki是一個SPARQL服務,支持多種操作系統。可以存儲RDF數據,並通過SPARQL查詢語句查詢數據庫中的關係。這裏將上面給出的RDF數據導入至Jena中。
- Python編寫數據庫查詢語句與規則。規則採用refo,可以直接從Python中下載該包,這一步是自然語言轉爲結構化的規則的關鍵。
- 通過refo生成的SPARQL查詢語句傳遞到Jena中便可以查到相關的實體關係了,最終反饋給用戶。
需要注意的是此代碼實現倉促,編寫的規則內容較少,沒有對輸出進行規範表示。
代碼
https://github.com/xyjigsaw/COVID19-KBQA-DEMO
項目中包含了數據和代碼,數據需要自己導入到Jena中。爲了簡便系統,這裏沒有給出前端代碼。
前端代碼如頂部圖片所示。
參考
感謝前輩給出的參考:
https://blog.csdn.net/keyue123/article/details/85266355
更多內容訪問 omegaxyz.com
網站所有代碼採用Apache 2.0授權
網站文章採用知識共享許可協議BY-NC-SA4.0授權
© 2020 • OmegaXYZ-版權所有 轉載請註明出處