售前電話
135-3656-7657
售前電話 : 135-3656-7657
這是 阿拉燈神丁Vicky 的第 23 篇文章
1、項(xiàng)目背景
為通過項(xiàng)目實(shí)戰(zhàn)增加對(duì)知識(shí)圖譜的認(rèn)識(shí),幾乎找了所有網(wǎng)上的開源項(xiàng)目及視頻實(shí)戰(zhàn)教程。
果然,功夫不負(fù)有心人,找到了中科院軟件所劉煥勇老師在上的開源項(xiàng)目,基于知識(shí)圖譜的醫(yī)藥領(lǐng)域問答項(xiàng)目。
用了兩個(gè)晚上搭建了兩套,Mac版與版,哈哈,運(yùn)行成功?。?!
從無到有搭建一個(gè)以疾病為中心的一定規(guī)模醫(yī)藥領(lǐng)域知識(shí)圖譜,以該知識(shí)圖譜完成自動(dòng)問答與分析服務(wù)。該項(xiàng)目立足醫(yī)藥領(lǐng)域,以垂直型醫(yī)藥網(wǎng)站為數(shù)據(jù)來源,以疾病為核心,構(gòu)建起一個(gè)包含7類規(guī)模為4.4萬的知識(shí)實(shí)體,11類規(guī)模約30萬實(shí)體關(guān)系的知識(shí)圖譜。 本項(xiàng)目將包括以下兩部分的內(nèi)容:1、基于垂直網(wǎng)站數(shù)據(jù)的醫(yī)藥知識(shí)圖譜構(gòu)建
2、基于醫(yī)藥知識(shí)圖譜的自動(dòng)問答
2、項(xiàng)目環(huán)境
2.1 系統(tǒng)
搭建中間有很多坑,且行且注意。
配置要求:要求配置neo4j數(shù)據(jù)庫(kù)及相應(yīng)的依賴包。neo4j數(shù)據(jù)庫(kù)用戶名密碼記住,并修改相應(yīng)文件。
安裝neo4j,neo4j 依賴java jdk 1.8版本以上:
根據(jù)neo4j 安裝時(shí)的端口、賬戶、密碼配置設(shè)置設(shè)置項(xiàng)目配置文件:.py & .py (下載項(xiàng)目時(shí)根據(jù)個(gè)人需要也可使用git)
數(shù)據(jù)導(dǎo)入: .py,導(dǎo)入的數(shù)據(jù)較多,估計(jì)需要幾個(gè)小時(shí)。
.py導(dǎo)入數(shù)據(jù)之前,需要在該文件main函數(shù)中加入:.py
啟動(dòng)問答: .py
2.2 Mac系統(tǒng)
mac本身自帶、java jdk環(huán)境,可直接安裝neo4j圖數(shù)據(jù)庫(kù),項(xiàng)目運(yùn)行步驟與基本一樣。
問題解答:安裝過程中如遇問題可聯(lián)系: -sbb。
2.3 Neo4j數(shù)據(jù)庫(kù)展示
2.4 問答系統(tǒng)運(yùn)行效果
3、項(xiàng)目介紹
該項(xiàng)目的數(shù)據(jù)來自垂直類醫(yī)療網(wǎng)站尋醫(yī)問藥,使用爬蟲腳本.py,以結(jié)構(gòu)化數(shù)據(jù)為主,構(gòu)建了以疾病為中心的醫(yī)療知識(shí)圖譜,實(shí)體規(guī)模4.4萬,實(shí)體關(guān)系規(guī)模30萬。的設(shè)計(jì)根據(jù)所采集的結(jié)構(gòu)化數(shù)據(jù)生成醫(yī)療問答python,對(duì)網(wǎng)頁的結(jié)構(gòu)化數(shù)據(jù)進(jìn)行xpath解析。
項(xiàng)目的數(shù)據(jù)存儲(chǔ)采用Neo4j圖數(shù)據(jù)庫(kù),問答系統(tǒng)采用了規(guī)則匹配方式完成,數(shù)據(jù)操作采用neo4j聲明的。
項(xiàng)目的不足之處在于疾病的引發(fā)原因、預(yù)防等以大段文字返回,這塊可引入事件抽取,可將原因結(jié)構(gòu)化表示出來。
3.1 項(xiàng)目目錄
.
├── .md
├── \\編譯結(jié)果保存目錄
│ ├── .-36.pyc
│ ├── .-36.pyc
│ └── .-36.pyc
├── .py
├── .pyc
├── .py \\知識(shí)圖譜數(shù)據(jù)入庫(kù)腳本
├── .py \\問答程序腳本
├── data
│ └── .json \\本項(xiàng)目的全部數(shù)據(jù),通過.py導(dǎo)neo4j
├── dict
│ ├── check.txt \\診斷檢查項(xiàng)目實(shí)體庫(kù)
│ ├── deny.txt \\否定詞庫(kù)
│ ├── .txt \\醫(yī)療科目實(shí)體庫(kù)
│ ├── .txt \\疾病實(shí)體庫(kù)
│ ├── drug.txt \\藥品實(shí)體庫(kù)
│ ├── food.txt \\食物實(shí)體庫(kù)
│ ├── .txt \\在售藥品庫(kù)
│ └── .txt \\疾病癥狀實(shí)體庫(kù)
├──
│ ├── chat1.png \\系統(tǒng)運(yùn)行問答截圖01
│ ├── chat2.png \\系統(tǒng)運(yùn)行問答截圖01
│ ├── .png \\知識(shí)圖譜構(gòu)建框架
│ ├── .png \\問答系統(tǒng)框架圖
├── img \\.md中的所用圖片
│ ├── chat1.png
│ ├── chat2.png
│ ├── .png
│ ├── .png
│ └── .png
├──
│ ├── .py \\數(shù)據(jù)庫(kù)操作腳本
│ ├── .py \\網(wǎng)絡(luò)資訊采集腳本
│ └── .py \\基于詞典的最大向前/向后腳本
├── .py \\問句類型分類腳本
├── .pyc
├── .py \\問句解析腳本
├── .pyc
3.2 知識(shí)圖譜的實(shí)體類型
3.3 知識(shí)圖譜的實(shí)體關(guān)系類型
3.4 知識(shí)圖譜的屬性類型
3.5 問答項(xiàng)目實(shí)現(xiàn)原理
本項(xiàng)目的問答系統(tǒng)完全基于規(guī)則匹配實(shí)現(xiàn),通過關(guān)鍵詞匹配,對(duì)問句進(jìn)行分類,醫(yī)療問題本身屬于封閉域類場(chǎng)景,對(duì)領(lǐng)域問題進(jìn)行窮舉并分類,然后使用的match去匹配查找neo4j,根據(jù)返回?cái)?shù)據(jù)組裝問句回答,最后返回結(jié)果。
問句中的關(guān)鍵詞匹配:
根據(jù)匹配到的關(guān)鍵詞分類問句
問句解析
查找相關(guān)數(shù)據(jù)
根據(jù)返回的數(shù)據(jù)組裝回答
3.6 問答系統(tǒng)支持的問答類型
4、項(xiàng)目總結(jié)
基于規(guī)則的問答系統(tǒng)沒有復(fù)雜的算法,一般采用模板匹配的方式尋找匹配度最高的答案,回答結(jié)果依賴于問句類型、模板語料庫(kù)的覆蓋全面性,面對(duì)已知的問題,可以給出合適的答案,對(duì)于模板匹配不到的問題或問句類型,經(jīng)常遇到的有三種回答方式:1、給出一個(gè)無厘頭的答案;
2、婉轉(zhuǎn)的回答不知道,提示用戶換種方式去問;
3、轉(zhuǎn)移話題,回避問題;
例如,本項(xiàng)目中采用了婉轉(zhuǎn)的方式回答不知道:
基于知識(shí)圖譜的問答系統(tǒng)的主要特征是知識(shí)圖譜,系統(tǒng)依賴一個(gè)或多個(gè)領(lǐng)域的實(shí)體,并基于圖譜進(jìn)行推理或演繹,深度回答用戶的問題,基于知識(shí)圖譜的問答系統(tǒng)更擅長(zhǎng)回答知識(shí)性問題,與基于模板的聊天機(jī)器人有所不同的是它更直接、直觀的給用戶答案。對(duì)于不能回答、或不知道的問題,一般直接返回失敗,而不是轉(zhuǎn)移話題避免尷尬。