醫療知識圖譜NLP項目,實體規模4.4萬,實體關係規模30萬
- 2019 年 10 月 28 日
- 筆記
- 基於垂直網站數據的醫藥知識圖譜構建
- 基於醫藥知識圖譜的自動問答
項目最終效果


項目運行方式
1、配置要求:要求配置neo4j資料庫及相應的python依賴包。neo4j資料庫用戶名密碼記住,並修改相應文件。 2、知識圖譜數據導入:python build_medicalgraph.py,導入的數據較多,估計需要幾個小時。 3、啟動問答:python chat_graph.py
詳細方案
一、醫療知識圖譜構建
1.1 業務驅動的知識圖譜構建框架

2 腳本目錄
prepare_data/datasoider.py:網路資訊採集腳本 prepare_data/datasoider.py:網路資訊採集腳本 prepare_data/max_cut.py:基於詞典的最大向前/向後切分腳本 build_medicalgraph.py:知識圖譜入庫腳本
1.3 醫藥領域知識圖譜規模
1.3.1 neo4j圖資料庫存儲規模

1.3.2 知識圖譜實體類型

1.3.3 知識圖譜實體關係類型

1.3.4 知識圖譜屬性類型

二、基於醫療知識圖譜的自動問答
2.1 技術架構

2.2 腳本結構
question_classifier.py:問句類型分類腳本 question_parser.py:問句解析腳本 chatbot_graph.py:問答程式腳本
2.3 支援問答類型

問答結果展示

總結
1、本項目完成了從無到有,以垂直網站為數據來源,構建起以疾病為中心的醫療知識圖譜,實體規模4.4萬,實體關係規模30萬。並基於此,搭建起了一個可以回答18類問題的自動問答小系統,總共耗時3天。其中,數據採集與整理1天,知識圖譜構建與入庫0.5天,問答系統組件1.5天。總的來說,還是比較快速。 2、本項目以業務驅動,構建醫療知識圖譜,知識schema設計基於所採集的結構化數據生成(對網頁結構化數據進行xpath解析)。 3、本項目以neo4j作為存儲,並基於傳統規則的方式完成了知識問答,並最終以cypher查詢語句作為問答搜索sql,支援了問答服務。 4、本項目可以快速部署,數據已經放在data/medical.json當中,本項目的數據,如侵犯相關單位權益,請聯繫我刪除。本數據請勿商用,以免引起不必要的糾紛。在本項目中的部署上,可以遵循項目運行步驟,完成資料庫搭建,並提供搜索服務。 5、本項目還有不足:關於疾病的起因、預防等,實際返回的是一大段文字,這裡其實可以引入事件抽取的概念,進一步將原因結構化表示出來。這個可以後面進行嘗試。