于洋翊 虎俊瑤 劉呈祥 邵以傲 詹華杰
摘 要:尋醫(yī)問藥的過程中,往往會遇到看病難、掛號難,本項目探索醫(yī)藥領(lǐng)域知識圖譜的構(gòu)建并研究其應(yīng)用來幫助患者解決就醫(yī)難的問題。首先分析大量醫(yī)藥網(wǎng)站的結(jié)構(gòu)和信息價值,利用python爬蟲在互聯(lián)網(wǎng)中收集醫(yī)藥信息;對采集的數(shù)據(jù)進(jìn)行xpath解析,并輸出Json數(shù)據(jù),接下來對數(shù)據(jù)進(jìn)行清洗和預(yù)處理;對比較正規(guī)的json數(shù)據(jù)進(jìn)行實體、關(guān)系以及屬性的知識抽取,用獲取到的信息構(gòu)造知識圖譜,保存于Neo4j圖數(shù)據(jù)庫中;完成圖譜構(gòu)建后,將基于知識圖譜進(jìn)一步研究其應(yīng)用。
關(guān)鍵詞:醫(yī)藥;知識圖譜;Neo4j;圖數(shù)據(jù)庫
一、知識圖譜的概念
知識圖譜的概念在二零一二年被提出,并被廣泛運用在搜索引擎中。至此,知識圖譜已經(jīng)給學(xué)術(shù)界及各應(yīng)用領(lǐng)域帶來了廣泛的應(yīng)用成果,并適用于智能搜索、推薦系統(tǒng)等方面,在許多應(yīng)用領(lǐng)域都起到了無法取代的地位。
現(xiàn)如今我國在認(rèn)知圖像的開發(fā)方面突飛猛進(jìn),黃恒琪等人在認(rèn)知圖像的形成時通過對各種數(shù)據(jù)信息源完成了實物提取,進(jìn)而對加工后的內(nèi)容完成了實物對齊與認(rèn)知融合,并通過相應(yīng)的信息加工而產(chǎn)生了認(rèn)知圖像,他們把知識圖譜后續(xù)的發(fā)展方向定位在知識圖譜分布式存儲和解決知識圖譜使用率和重用率不高的問題上。
國內(nèi)現(xiàn)如今缺少開源的中文醫(yī)藥領(lǐng)域的知識圖譜,中國醫(yī)藥的發(fā)展博大精深,各種藥物之間的配合更是經(jīng)歷數(shù)千年歷史都沒有研究透徹,相互之間復(fù)雜的使用規(guī)則也使得構(gòu)建醫(yī)藥圖譜變得很困難。如何獲取高質(zhì)量的數(shù)據(jù)源以及如何有效處理醫(yī)藥之間的關(guān)系成為構(gòu)建圖譜的重要環(huán)節(jié)。
本項目主要研究了知識圖譜的構(gòu)建,知識圖譜是一個基于圖形的數(shù)據(jù)結(jié)構(gòu),由節(jié)點和標(biāo)注好的邊組成。實質(zhì)上是一個實物間關(guān)聯(lián)的語言網(wǎng)絡(luò)。在圖譜中的節(jié)點可以代表不同的實物,而圖表中的邊是實物之間各種各樣豐富的關(guān)聯(lián)。認(rèn)識圖像的組成單位,基本上為"實物-關(guān)系-實物"三元組,包括與各個實物相對應(yīng)的基本屬性,實物之間利用這些關(guān)聯(lián)線相互連接,從而形成網(wǎng)狀的知識結(jié)構(gòu)。實物是最基礎(chǔ)的組成部分,如藥物、病理、疾病癥狀和食品等;屬性是實物所具有的基本特性,如病因、疾病名稱、診斷周期和處理方式等;關(guān)聯(lián)則是產(chǎn)生在各個基本實體間的基本關(guān)聯(lián),如病癥所宜吃食品、病癥使用藥、病癥所需檢查方法等,具體如圖1所示。
二、知識圖譜的構(gòu)建
知識圖譜的形成可分成三個方式即自頂向下、自底向上以及相互混合方式。由頂往下的解決辦法,是在設(shè)計初期就構(gòu)造出知識圖譜的模式層或本體結(jié)構(gòu),先定好了知識圖譜總體的組織架構(gòu)。由底往上的方法是初期沒有預(yù)期定義好的組織架構(gòu),但是經(jīng)過對數(shù)據(jù)源的大數(shù)據(jù)分析,在數(shù)據(jù)源的模式層中不斷尋找實體屬性之間的關(guān)系。使用數(shù)據(jù)層來對模式層加以指導(dǎo)。自頂向下和自底向上混合方式,是指在初期有了預(yù)定的組織結(jié)構(gòu),并且同時通過對數(shù)據(jù)源的分析,更新概念直接的關(guān)系,從而是知識圖譜的更為可靠與完備。本項目中所構(gòu)建的醫(yī)藥知識圖譜采用了自底向上的構(gòu)建方法,現(xiàn)在網(wǎng)絡(luò)中收集數(shù)據(jù),建立可靠的數(shù)據(jù)源,然后對其進(jìn)行知識圖譜建立。
三、主要設(shè)計
(一)數(shù)據(jù)收集
目前網(wǎng)絡(luò)中還沒有公開的比較優(yōu)秀的醫(yī)藥數(shù)據(jù)集,因此考慮通過編寫爬蟲腳本來自動化的采集網(wǎng)絡(luò)數(shù)據(jù)。通過分析調(diào)查,選擇了“求醫(yī)網(wǎng)”和“尋醫(yī)問藥網(wǎng)”這兩個醫(yī)藥網(wǎng)站作為醫(yī)藥數(shù)據(jù)的信息來源。該網(wǎng)站收集到數(shù)據(jù)比較全面,格式也具有統(tǒng)一性。目標(biāo)網(wǎng)站均是多以動態(tài)網(wǎng)站的方式呈現(xiàn),對于動態(tài)網(wǎng)頁的爬取利用到了python語言中的urllib包解析網(wǎng)頁內(nèi)容,requests庫和bs4庫獲取網(wǎng)頁信息。如圖2所示。
在收集數(shù)據(jù)的過程中發(fā)現(xiàn),網(wǎng)站本身具有限制訪問IP的機(jī)制,當(dāng)同個IP多次訪問同一地址時,該反爬蟲機(jī)制將會中斷腳本的運行。對此設(shè)計了如下兩個對策,第一種是在腳本編寫過程中設(shè)計user-agent集合,使腳本在對網(wǎng)站的每次請求中都會隨機(jī)取一個user-agent值,從而模仿不同用戶的訪問。第二種方法是準(zhǔn)備IP連接池,每次請求都會在IP連接池中去一個IP進(jìn)行訪問。
(二)數(shù)據(jù)清洗和預(yù)處理
經(jīng)過數(shù)據(jù)收集,抓取了近10000條疾病信息和5000條用藥相關(guān)事宜和輔助信息,這些數(shù)據(jù)保存在事先設(shè)置好的MySQL數(shù)據(jù)庫中。經(jīng)檢測發(fā)現(xiàn),爬取的過程中將一些與實體無關(guān)的內(nèi)容收集了下來,數(shù)據(jù)清洗就是要去除這部分無關(guān)信息。如在爬取“病癥信息”時將網(wǎng)頁中的“醫(yī)生信息”也爬了下來。對數(shù)據(jù)進(jìn)行xpath解析,最終得到12類實體信息,分別標(biāo)記為疾病、藥品、疾病癥狀、治療周期、疾病原因、預(yù)防措施、易感人群、疾病簡稱、疾病名稱、醫(yī)療科目、飲食注意、用藥方法。將整理好的保存為Json格式,方便下一步構(gòu)建知識圖譜的進(jìn)行。數(shù)據(jù)處理的流程如圖3所示。
(三)知識圖譜的存儲
先對數(shù)據(jù)進(jìn)行知識抽取,來實現(xiàn)以實體、屬性和關(guān)系的三元組的組織形式。實現(xiàn)以后知識圖譜的初步形式就建立成功了,下面要考慮存儲知識圖譜的問題。
通過比較,選擇用了當(dāng)下最熱門的Neo4j圖數(shù)據(jù)庫來保存知識圖譜。對于Neo4j數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)入可以采用以下三種方法,第一種方法是通過Cypher語句,Cypher語句是Neo4j特有的操作語句,可以將我們的數(shù)據(jù)編寫成語句以后逐句運行,導(dǎo)入到圖數(shù)據(jù)庫中形成圖譜。第二種方法是通過構(gòu)建csv格式的數(shù)據(jù)文件,通過load csv進(jìn)行一鍵導(dǎo)入,Neo4j將會把csv文件轉(zhuǎn)化為圖知識圖譜。第三種方法是通過Neo4j-import工具導(dǎo)入數(shù)據(jù)形成圖知識圖譜。
(四)應(yīng)用研究
基于構(gòu)造出來的醫(yī)藥知識圖譜,進(jìn)一步研究其應(yīng)用和實用價值。
1.多向查詢功能
本項目以知識圖譜作為系統(tǒng)的數(shù)據(jù)基礎(chǔ)。知識圖譜中存儲了實體、關(guān)系和屬性等知識要素。本項目所建立的醫(yī)藥知識圖譜,包括了多個知識圖譜實體類別、多個知識圖譜關(guān)聯(lián)類別,以及多個知識圖譜的屬性類別。也就是說,在進(jìn)行過數(shù)據(jù)處理的知識庫中查詢不再只局限于“藥品”,也可基于“疾病”“病癥”等。反饋信息也不再只局限于“對癥下藥”,同時可包括“疾病所需檢查”、“疾病忌吃食物”、“疾病并發(fā)疾病”等。
2.智能問答系統(tǒng)
基于知識圖譜可以研究多種應(yīng)用或研究不同系統(tǒng)的移植,如可以采用Bi-LSTM+CRF網(wǎng)絡(luò)模型設(shè)計智能問答功能,構(gòu)建過程可以分為四步:問題分類和分詞、命名實體識別、模板匹配和模板翻譯查詢。具體描述如下,首先對由人提出的自然語言問題進(jìn)行類型區(qū)域的劃分,確定問題類型后對其進(jìn)行保存;接著利用 Lucene 支持的 IKAnlyzer工具包對這些問題進(jìn)行分詞操作,為后續(xù)步驟中的實體識別構(gòu)建詞向量;接下來是最重要的命名實體識別過程,可以采用 Bi-LSTM+CRF 網(wǎng)絡(luò)模型標(biāo)注實體序列,再從全局角度考慮問題的實體識別,并在其過程中引入注意力模型用于提高語義分析的準(zhǔn)確性,該階段后就是模板匹配和翻譯,最終得到問題答案。該功能的實現(xiàn)極有理的方便了用戶操作,提升了用戶的體驗,同時照顧到了不同年齡段患者的使用,豐富了醫(yī)藥知識圖譜在人工智能領(lǐng)域的研究。
四、目的與意義
醫(yī)藥知識圖譜具有查詢功能,可以給出用藥或康復(fù)建議,方便普通人群對于疾病的自我診斷定位和治療,指導(dǎo)醫(yī)務(wù)工作者合理用藥,使得疾病診治、用藥過程更加智能化,推進(jìn)醫(yī)療系統(tǒng)信息化、智能化的進(jìn)程,也推進(jìn)了科學(xué)知識圖譜向領(lǐng)域知識圖譜轉(zhuǎn)化可行性研究。
從方法上看,本項目用當(dāng)下熱門技術(shù),從互聯(lián)網(wǎng)上獲取非結(jié)構(gòu)化文本并從中抽取結(jié)構(gòu)化文本,這不僅可以彌補(bǔ)當(dāng)前研究領(lǐng)域結(jié)構(gòu)化文本匱乏的不足,而且對于知識圖譜的構(gòu)建流程和方法都是一種探索和嘗試。
從應(yīng)用上看,知識圖譜項目所涵蓋的領(lǐng)域十分廣闊,其中包括了人工智能、智能問答系統(tǒng)、語義知識檢索等應(yīng)用領(lǐng)域。本項目所提供的關(guān)于醫(yī)療領(lǐng)域的知識圖譜,不僅能夠給廣大人民群眾帶來更便捷的疾病自我評估,也有助于人們及時發(fā)現(xiàn)疾病并積極診療,從而有效減少了"病急亂投醫(yī)"的現(xiàn)狀;還能夠為醫(yī)務(wù)工作者提供大量的醫(yī)學(xué)資訊,便于他們檢索有關(guān)知識,以便于正確分析出疾病;還能夠通過知識圖譜和病癥,全面立體的推斷出有可能出現(xiàn)的疾病并提供下一種可能的診療方法,從而輔助醫(yī)務(wù)工作人員的診療流程,從而降低了醫(yī)療事故的發(fā)生。
醫(yī)學(xué)知識圖譜的研發(fā)與普及,可以產(chǎn)生重要的社會效益,降低社會的醫(yī)藥費用,并可以改善醫(yī)學(xué)服務(wù)質(zhì)量,改善人民的生命質(zhì)量,故具有一定的現(xiàn)實意義。同時,具有強(qiáng)大關(guān)系網(wǎng)絡(luò)的知識圖譜也可以應(yīng)用于許多方面,比如查詢系統(tǒng),問答系統(tǒng)等研究,這些研究將為知識圖譜應(yīng)用于更多具體領(lǐng)域打下基礎(chǔ)。
參考文獻(xiàn):
[1]魏自強(qiáng),鄭偉偉,許永康《基于百科知識的醫(yī)療數(shù)據(jù)知識圖譜構(gòu)建》 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用
[2]尚書飛 《基于知識圖譜的醫(yī)藥問答平臺的設(shè)計與研究》
[3]曹皓偉,徐建良,竇方坤《基于Neo4j生物醫(yī)藥知識圖譜的構(gòu)建》計算機(jī)時代
[4]人人都是產(chǎn)品經(jīng)理《知識圖譜在風(fēng)控的應(yīng)用》
[5]《基于arcgis的多媒體視頻構(gòu)建及應(yīng)用研究》 大學(xué)生論文聯(lián)合庫