醫(yī)療知識圖譜問答系統(tǒng)探究(一)

這是?阿拉燈神丁Vicky?的第?23?篇文章

1趾浅、項目背景

為通過項目實(shí)戰(zhàn)增加對知識圖譜的認(rèn)識弛作,幾乎找了所有網(wǎng)上的開源項目及視頻實(shí)戰(zhàn)教程涕蜂。

果然,功夫不負(fù)有心人映琳,找到了中科院軟件所劉煥勇老師在github上的開源項目机隙,基于知識圖譜的醫(yī)藥領(lǐng)域問答項目QABasedOnMedicaKnowledgeGraph。

項目地址:https://github.com/liuhuanyong/QASystemOnMedicalKG

用了兩個晚上搭建了兩套萨西,Mac版與Windows版有鹿,哈哈,運(yùn)行成功;迅4邪稀!

從無到有搭建一個以疾病為中心的一定規(guī)模醫(yī)藥領(lǐng)域知識圖譜源梭,以該知識圖譜完成自動問答與分析服務(wù)娱俺。該項目立足醫(yī)藥領(lǐng)域,以垂直型醫(yī)藥網(wǎng)站為數(shù)據(jù)來源咸产,以疾病為核心,構(gòu)建起一個包含7類規(guī)模為4.4萬的知識實(shí)體仲闽,11類規(guī)模約30萬實(shí)體關(guān)系的知識圖譜脑溢。 本項目將包括以下兩部分的內(nèi)容:

1、基于垂直網(wǎng)站數(shù)據(jù)的醫(yī)藥知識圖譜構(gòu)建

2赖欣、基于醫(yī)藥知識圖譜的自動問答

2屑彻、項目環(huán)境

2.1 windows系統(tǒng)

搭建中間有很多坑,且行且注意顶吮。

配置要求要求配置neo4j數(shù)據(jù)庫及相應(yīng)的python依賴包社牲。neo4j數(shù)據(jù)庫用戶名密碼記住,并修改相應(yīng)文件悴了。

安裝neo4j搏恤,neo4j 依賴java jdk 1.8版本以上:

java jdk安裝方法可參考:windows系統(tǒng)下安裝JDK8,下載地址:https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-windows-x64.exe

安裝neo4j可參考博文:windows安裝neo4j湃交,下載地址:https://go.neo4j.com/download-thanks.html?edition=community&release=3.4.1&flavour=winzip

安裝python可參考:Windows環(huán)境下安裝python2.7

根據(jù)neo4j 安裝時的端口熟空、賬戶、密碼配置設(shè)置設(shè)置項目配置文件:answer_search.py &? build_medicalgraph.py (github下載項目時根據(jù)個人需要也可使用git)

數(shù)據(jù)導(dǎo)入python build_medicalgraph.py搞莺,導(dǎo)入的數(shù)據(jù)較多息罗,估計需要幾個小時。

python build_medicalgraph.py導(dǎo)入數(shù)據(jù)之前才沧,需要在該文件main函數(shù)中加入:


?build_medicalgraph.py

啟動問答python chat_graph.py

2.2 Mac系統(tǒng)

mac本身自帶python迈喉、java jdk環(huán)境绍刮,可直接安裝neo4j圖數(shù)據(jù)庫,項目運(yùn)行步驟與windows基本一樣挨摸。

問題解答:

安裝過程中如遇問題可聯(lián)系Wechat: dandan-sbb孩革。

2.3 Neo4j數(shù)據(jù)庫展示

2.4 問答系統(tǒng)運(yùn)行效果

3、項目介紹

該項目的數(shù)據(jù)來自垂直類醫(yī)療網(wǎng)站尋醫(yī)問藥油坝,使用爬蟲腳本data_spider.py嫉戚,以結(jié)構(gòu)化數(shù)據(jù)為主,構(gòu)建了以疾病為中心的醫(yī)療知識圖譜澈圈,實(shí)體規(guī)模4.4萬彬檀,實(shí)體關(guān)系規(guī)模30萬。schema的設(shè)計根據(jù)所采集的結(jié)構(gòu)化數(shù)據(jù)生成瞬女,對網(wǎng)頁的結(jié)構(gòu)化數(shù)據(jù)進(jìn)行xpath解析窍帝。

項目的數(shù)據(jù)存儲采用Neo4j圖數(shù)據(jù)庫,問答系統(tǒng)采用了規(guī)則匹配方式完成诽偷,數(shù)據(jù)操作采用neo4j聲明的cypher坤学。

項目的不足之處在于疾病的引發(fā)原因、預(yù)防等以大段文字返回报慕,這塊可引入事件抽取深浮,可將原因結(jié)構(gòu)化表示出來。


3.1 項目目錄

.

├── README.md

├── __pycache__? ? ? \\編譯結(jié)果保存目錄

│? ├── answer_search.cpython-36.pyc

│? ├── question_classifier.cpython-36.pyc

│? └── question_parser.cpython-36.pyc

├── answer_search.py

├── answer_search.pyc

├── build_medicalgraph.py? ? \\知識圖譜數(shù)據(jù)入庫腳本

├── chatbot_graph.py? ? \\問答程序腳本

├── data

│? └── medicaln.json \\本項目的全部數(shù)據(jù)眠冈,通過build_medicalgraph.py導(dǎo)neo4j

├── dict

│? ├── check.txt? ? \\診斷檢查項目實(shí)體庫

│? ├── deny.txt? ? ? \\否定詞庫

│? ├── department.txt? \\醫(yī)療科目實(shí)體庫

│? ├── disease.txt? ? \\疾病實(shí)體庫

│? ├── drug.txt? ? ? \\藥品實(shí)體庫

│? ├── food.txt? ? ? \\食物實(shí)體庫

│? ├── producer.txt? ? \\在售藥品庫

│? └── symptom.txt? ? \\疾病癥狀實(shí)體庫

├── document

│? ├── chat1.png? ? \\系統(tǒng)運(yùn)行問答截圖01

│? ├── chat2.png? ? ? \\系統(tǒng)運(yùn)行問答截圖01

│? ├── kg_route.png? ? \\知識圖譜構(gòu)建框架

│? ├── qa_route.png? ? \\問答系統(tǒng)框架圖

├── img? ? \\README.md中的所用圖片

│? ├── chat1.png

│? ├── chat2.png

│? ├── graph_summary.png

│? ├── kg_route.png

│? └── qa_route.png

├── prepare_data

│? ├── build_data.py? ? \\數(shù)據(jù)庫操作腳本

│? ├── data_spider.py? ? \\網(wǎng)絡(luò)資訊采集腳本

│? └── max_cut.py? ? ? \\基于詞典的最大向前/向后腳本

├── question_classifier.py? ? \\問句類型分類腳本

├── question_classifier.pyc? ?

├── question_parser.py? ? \\問句解析腳本

├── question_parser.pyc

3.2 知識圖譜的實(shí)體類型

3.3 知識圖譜的實(shí)體關(guān)系類型

3.4 知識圖譜的屬性類型

3.5 問答項目實(shí)現(xiàn)原理

本項目的問答系統(tǒng)完全基于規(guī)則匹配實(shí)現(xiàn)飞苇,通過關(guān)鍵詞匹配,對問句進(jìn)行分類蜗顽,醫(yī)療問題本身屬于封閉域類場景布卡,對領(lǐng)域問題進(jìn)行窮舉并分類,然后使用cypher的match去匹配查找neo4j雇盖,根據(jù)返回數(shù)據(jù)組裝問句回答忿等,最后返回結(jié)果。

問句中的關(guān)鍵詞匹配:

根據(jù)匹配到的關(guān)鍵詞分類問句

問句解析

查找相關(guān)數(shù)據(jù)

根據(jù)返回的數(shù)據(jù)組裝回答

3.6 問答系統(tǒng)支持的問答類型

4崔挖、項目總結(jié)

基于規(guī)則的問答系統(tǒng)沒有復(fù)雜的算法贸街,一般采用模板匹配的方式尋找匹配度最高的答案,回答結(jié)果依賴于問句類型狸相、模板語料庫的覆蓋全面性匾浪,面對已知的問題,可以給出合適的答案卷哩,對于模板匹配不到的問題或問句類型蛋辈,經(jīng)常遇到的有三種回答方式:

1、給出一個無厘頭的答案;

2冷溶、婉轉(zhuǎn)的回答不知道渐白,提示用戶換種方式去問舞吭;

3拄踪、轉(zhuǎn)移話題,回避問題再榄;

例如苗胀,本項目中采用了婉轉(zhuǎn)的方式回答不知道:

基于知識圖譜的問答系統(tǒng)的主要特征是知識圖譜襟诸,系統(tǒng)依賴一個或多個領(lǐng)域的實(shí)體,并基于圖譜進(jìn)行推理或演繹基协,深度回答用戶的問題歌亲,基于知識圖譜的問答系統(tǒng)更擅長回答知識性問題,與基于模板的聊天機(jī)器人有所不同的是它更直接澜驮、直觀的給用戶答案陷揪。對于不能回答、或不知道的問題杂穷,一般直接返回失敗悍缠,而不是轉(zhuǎn)移話題避免尷尬。

整個問答系統(tǒng)的優(yōu)劣依賴于知識圖譜中知識的數(shù)量與質(zhì)量耐量。也算是利弊共存吧飞蚓!知識圖譜圖譜具有良好的可擴(kuò)展性,擴(kuò)展了知識圖譜也就是擴(kuò)展了問答系統(tǒng)的知識庫廊蜒。如果問句在射程范圍內(nèi)趴拧,可輕松回答,但如果不幸脫靶劲藐,則體驗(yàn)大打折扣八堡。

從知識圖譜的角度分析樟凄,大多數(shù)知識圖譜規(guī)模不足聘芜,主要原因還是數(shù)據(jù)來源以及技術(shù)上知識的抽取與推理困難。

個人博客:www.bobinsun.cn
題圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缝龄,一起剝皮案震驚了整個濱河市汰现,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌叔壤,老刑警劉巖瞎饲,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異炼绘,居然都是意外死亡嗅战,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驮捍,“玉大人疟呐,你說我怎么就攤上這事《遥” “怎么了启具?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長珊泳。 經(jīng)常有香客問我鲁冯,道長,這世上最難降的妖魔是什么色查? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任薯演,我火速辦了婚禮,結(jié)果婚禮上综慎,老公的妹妹穿的比我還像新娘涣仿。我一直安慰自己,他們只是感情好示惊,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布好港。 她就那樣靜靜地躺著,像睡著了一般米罚。 火紅的嫁衣襯著肌膚如雪钧汹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天录择,我揣著相機(jī)與錄音拔莱,去河邊找鬼。 笑死隘竭,一個胖子當(dāng)著我的面吹牛塘秦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播动看,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼尊剔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了菱皆?” 一聲冷哼從身側(cè)響起须误,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仇轻,沒想到半個月后京痢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡篷店,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年祭椰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡方淤,死狀恐怖侣监,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情臣淤,我是刑警寧澤橄霉,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站邑蒋,受9級特大地震影響姓蜂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜医吊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一钱慢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卿堂,春花似錦束莫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至穗慕,卻和暖如春饿敲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逛绵。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工怀各, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人术浪。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓瓢对,卻偏偏與公主長得像,于是被迫代替她去往敵國和親胰苏。 傳聞我的和親對象是個殘疾皇子硕蛹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361