基於醫藥知識圖譜的智能問答系統
- 這是一個基於Python模塊REfO實現的知識庫問答初級系統. 該問答系統可以解析輸入的自然語言問句生成SPARQL 查詢,進一步請求後台基於TDB知識庫的Apache Jena Fuseki 服務, 進而得到問題的結果。
- 提供疾病症狀、疾病用藥、藥品查詢等功能。
- demo演示


需要環境
- python3.5.2開發環境
- 安裝jieba中文分詞組件
- 安裝sparqlwrapper,python與Apache Jena Fuseki服務的交互組件
- Django,Web應用框架,用於交互展示
- Apache Jena,是一個開源的Java語義網框架(open source Semantic Web Framework for Java),用於構建語義網和鏈接數據應用
- apache-jena-fuseki,開啟Apache Jena Fuseki 服務
- Java環境,Apache Jena需要在Java環境下運行
- 數據
怎麼運行
- 下載TDB藥品疾病知識庫數據& clone項目代碼
- 開啟Apache Jena Fuseki 服務
- 將TDB數據和Apache Jena Fuseki放在同一個目錄下。
- 進入Apache Jena Fuseki文件夾,運行fuseki-server.bat,然後退出。程序為我們在當前目錄自動創建“run”文件夾
- 將項目代碼apache_configuration文件夾下的kgdrug.tll和rules.tll文件移動到“run”文件夾下。
- kgdrug.tll:知識庫本體文件
- rules.tll:規則推理配置文件
- 將項目代碼apache_configuration文件夾下的fuseki_conf.ttl文件移動到“run”文件夾下。
- fuseki_conf.ttl:Fuseki配置文件,主要配置上述兩個文件的路徑和TDB知識庫路徑
- 上述操作配置好後,再次運行fuseki-server.bat,開啟Apache Jena Fuseki 服務
- 安裝python環境需要的包
pip install requirements . txt
- 這裡需要修改項目代碼中setting.py文件中的字典導入路勁,因為我們的文件路徑可能不一樣。
- 運行KB_query文件夾中的query_main.py,開啟命令行模式。
- 在項目根目錄下運行manage.py,開啟項目的web模式
python manage.py runserver
可能遇到的問題
- 第二次開動Apache Jena Fuseki 服務時,如果啟動失敗,需要到TDB文件把prefix前綴的文件全部刪除掉。
- 代碼運行錯誤,應該大部分集中在路徑錯誤上,請仔細閱讀報錯信息。
項目不足
- 只支持一問一答式的對話。
- 只支持查詢知識庫有的數據,知識庫不包含的數據則查詢不到。
- 頁面UI設計交簡陋
後期更新
- 加入藥品、疾病的同義詞,增加系統的魯棒性
- 增加疾病推斷功能
- 增加多輪式對話功能
- 重新設計頁面UI
參考
基於REfO 的KBQA 實現及示例