陳德彥,趙 宏,張 霞
1(東北大學(xué) 計算機(jī)科學(xué)與工程學(xué)院,遼寧 沈陽 110169)
2(計算機(jī)軟件國家工程研究中心(東北大學(xué)),遼寧 沈陽 110179)
3(沈陽東軟智能醫(yī)療科技研究院有限公司,遼寧 沈陽 110179)
4(東軟集團(tuán)股份有限公司,遼寧 沈陽 110179)
疾病診斷是醫(yī)療活動中重要的環(huán)節(jié)之一,它為患者的治療和預(yù)后提供了一個堅實(shí)的基礎(chǔ)[1].疾病診斷的質(zhì)量主要依賴醫(yī)生所掌握的醫(yī)療知識以及醫(yī)療經(jīng)驗(yàn),但單個醫(yī)生所掌握的醫(yī)療知識以及積累的醫(yī)療經(jīng)驗(yàn)仍然有限,如何提升醫(yī)生(尤其是沒有經(jīng)驗(yàn)的醫(yī)生)的臨床診療水平并減輕醫(yī)生的工作負(fù)荷,是一個亟待解決的問題.這方面的研究在早期主要有專家系統(tǒng),專家系統(tǒng)的思想是,將專家的經(jīng)驗(yàn)知識進(jìn)行形式化,想以此代替專家進(jìn)行診斷.從專家那里提取經(jīng)驗(yàn)知識是一種勞動密集性的工作,由于專家的診斷往往具有“直覺性”,所以很多時候?qū)<叶紵o法提供這種具有直接因果關(guān)系的經(jīng)驗(yàn)知識.
隨著醫(yī)學(xué)科學(xué)的發(fā)展和醫(yī)院信息化水平的提高,臨床上積累了大量的診療知識和電子化的病歷數(shù)據(jù),醫(yī)生的診療經(jīng)驗(yàn)也蘊(yùn)藏在這些病歷數(shù)據(jù)中.相應(yīng)地,云計算、大數(shù)據(jù)、人工智能(artificial intelligence,簡稱AI)等技術(shù)的出現(xiàn)和發(fā)展為這些數(shù)據(jù)的挖掘和利用提供了有力支撐.在這種有利條件下,基于數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)[2-5]算法的疾病輔助診斷和預(yù)測研究如雨后春筍般大量出現(xiàn).但這些研究大多都針對某個單病種或者專科疾病,其得出的疾病輔助診斷模型無法為大量基層全科醫(yī)生提供常見疾病的輔助診斷服務(wù),也無法為患者提供大量常見疾病的自診服務(wù).目前出現(xiàn)的智能導(dǎo)診服務(wù)機(jī)器人可以代替院內(nèi)的導(dǎo)診護(hù)士向患者提供更加高效和精準(zhǔn)的分診服務(wù),但它們也依賴對大量常見疾病的輔助診斷服務(wù).
本體(ontology)是共享概念模型的明確的、形式化的規(guī)范說明[6],其提供了一種結(jié)構(gòu)化地表示領(lǐng)域知識的形式化方法,并提供了推理能力,構(gòu)造本體可以實(shí)現(xiàn)某種程度的知識共享和重用.由于本體具有的強(qiáng)大的知識表示和推理能力,已經(jīng)在很多領(lǐng)域得到了廣泛的應(yīng)用,例如語義Web[7]、知識工程、自然語言處理、信息獲取、信息集成、生物醫(yī)學(xué)等領(lǐng)域,用于領(lǐng)域問題求解、異構(gòu)信息源之間的交互、輔助組織中人與人之間的溝通等.在生物醫(yī)學(xué)領(lǐng)域,已經(jīng)出現(xiàn)了大量基于本體構(gòu)建的知識庫[8],例如基因本體[9]、人類表型本體[10]、疾病本體[11]等.相應(yīng)地,在健康醫(yī)療領(lǐng)域也出現(xiàn)了大量基于本體知識庫的疾病輔助診斷研究[1,12-14]和其他應(yīng)用研究[15-17].基于本體知識庫可以快速支撐大量常見疾病的輔助診斷.
疾病診斷是一個不斷迭代的復(fù)雜過程,包括前瞻性診斷(prospective diagnoses)和回顧性診斷(retrospective diagnoses)[1].前瞻性診斷即診斷過程,在這個過程中醫(yī)生不斷收集關(guān)于患者的癥狀、檢查結(jié)果和病史等詳細(xì)信息,以縮小疾病診斷的范圍.在這個過程的某個點(diǎn)上,醫(yī)生可能積累了足夠多的信息,這時可以給出一個或幾個最可能的最終診斷.前瞻性診斷是一個基于收集到的患者信息的前向推理(forward reasoning)過程.在得出最終診斷以后,醫(yī)生還需要通過回顧性診斷來驗(yàn)證最終診斷的正確性.一方面,驗(yàn)證最終診斷中疾病關(guān)聯(lián)的體征、癥狀、異常指標(biāo)等是否與醫(yī)生收集到的患者的信息相一致;另一方面,最終診斷中的疾病可能還表現(xiàn)有其他一些醫(yī)生未收集到的信息,醫(yī)生需要基于此作進(jìn)一步的收集和確認(rèn),這個過程是一個反向推理(backward reasoning)的過程.
在健康醫(yī)療領(lǐng)域的本體知識庫中,圍繞疾病建立了其與體征、癥狀、檢查、病因、藥物、手術(shù)等之間的靜態(tài)關(guān)聯(lián)關(guān)系.一種疾病可以表現(xiàn)出多種癥狀,相同的癥狀也可能出現(xiàn)在多種疾病中,不同的疾病可能表現(xiàn)出一個或者多個相同的癥狀.醫(yī)生在基于收集到的患者信息對疾病進(jìn)行篩查時,需要對篩查出的疾病進(jìn)行可能性大小排名.常規(guī)的思路是,假定收集到患者的5 個癥狀,本體知識庫中某個疾病d1匹配了其中的4 個癥狀,而另一個疾病d2匹配了其中的3 個癥狀,那么可以認(rèn)為患者患疾病d1的概率比d2要大,為此,在篩查出的疾病結(jié)果排序中,d1排在d2的前面.以上思路的假設(shè)是,所有癥狀于疾病診斷的重要性是相同的,而實(shí)際情況并非如此.雖然由于存在個體差異,相同疾病于不同的患者可能表現(xiàn)出不同的癥狀,但通常某種疾病于大多數(shù)人會表現(xiàn)出一些相同的典型癥狀,比如感冒的典型癥狀有咳嗽、流鼻涕、流眼淚、發(fā)燒、食欲不振等,糖尿病的典型癥狀有“三多一少(多飲、多食、多尿、體重減輕)”等.所以,雖然不同的疾病可能表現(xiàn)出一些相同的癥狀,但這些疾病表現(xiàn)出的典型癥狀不一定相同.或者說,相同癥狀于不同疾病的判斷權(quán)重可能是不一樣的.
針對以上問題,基于癥狀來診斷疾病的關(guān)鍵點(diǎn)是給出每一個癥狀于疾病診斷的重要性.對此,文獻(xiàn)[1]進(jìn)行了研究,提出這個重要性將基于癥狀被包含的疾病數(shù)量來給出.比如,肌無力(muscle weakness)是一個在許多疾病中都出現(xiàn)的癥狀,因此它于疾病診斷的貢獻(xiàn)很小;而另一個癥狀,心動過緩(bradycardia)是另一小簇疾病特有的癥狀,如果患者提供的癥狀中包含了這個癥狀,那么該患者患有的疾病很有可能落在這一小簇疾病中.基于此推理,文獻(xiàn)[1]提出了用于計算本體知識庫中癥狀s的權(quán)重(weight)ws的算法,并基于ws提出了計算與患者輸入癥狀集S相關(guān)的疾病di的相關(guān)度(relevancy)wi的算法,然后基于wi對篩查出的相關(guān)疾病進(jìn)行排序.但文獻(xiàn)[1]中計算wi的算法存在以下3 點(diǎn)明顯問題.
(1)wi的取值大于1,且最小值為1.當(dāng)疾病di關(guān)聯(lián)了患者輸入癥狀集S中的所有癥狀時,wi的取值為1;否則,wi的值大于1.由于疾病di與患者輸入癥狀集S的相關(guān)度是一個概率,從概率的含義上講,wi的取值不可能大于1;如果wi的取值為1,表示必然事件,即疾病di一定與該患者相關(guān).所以,文獻(xiàn)[1]中計算wi的算法存在明顯的錯誤.
(2)根據(jù)計算wi的算法,當(dāng)疾病di關(guān)聯(lián)的患者輸入癥狀集S中的癥狀的∑ws越小時,wi的取值反而越大,這明顯與上面文獻(xiàn)[1]中的癥狀重要性推理結(jié)論相悖.
(3)在計算wi的算法中,分子的取值始終為∑s∈S ws,癥狀集S中與疾病di沒有關(guān)聯(lián)的癥狀于疾病di的相關(guān)度計算是沒有作用的,而知識庫中與疾病di關(guān)聯(lián)的所有癥狀對疾病di的診斷都是有貢獻(xiàn)作用的,這與靜態(tài)知識庫的假設(shè)基礎(chǔ)有關(guān),詳見下面對文獻(xiàn)[1]不足點(diǎn)的分析.
除此以外,文獻(xiàn)[1]中計算wi的算法還存在以下兩點(diǎn)不足.
(1)未考慮知識庫中與疾病di關(guān)聯(lián)的其他癥狀(不在患者輸入癥狀集S中的癥狀)的影響作用.本體知識庫中的每種疾病都關(guān)聯(lián)了一定數(shù)量的癥狀,這種靜態(tài)關(guān)聯(lián)的假設(shè)基礎(chǔ)是,疾病關(guān)聯(lián)的所有癥狀共同作用于該種疾病.也即,如果一位患者表現(xiàn)出的癥狀集S完全覆蓋了某種疾病關(guān)聯(lián)的所有癥狀,沒有多余癥狀,也沒有缺失的癥狀,那么可以認(rèn)為患者就是得了這種疾病.在這個假設(shè)條件下,如果兩種疾病都包含了患者輸入的所有癥狀或相同癥狀,并不能認(rèn)為這兩種疾病與患者的相關(guān)度是相同的,還需要考慮這兩種疾病關(guān)聯(lián)的其他癥狀的影響作用.
(2)未對篩查出疾病集中的疾病進(jìn)行回顧性驗(yàn)證,即未根據(jù)篩查出的疾病集合評估和推薦與患者輸入癥狀集S中的癥狀最相關(guān)的其他癥狀,供醫(yī)生或患者確認(rèn);進(jìn)而基于初始收集到的患者癥狀集S和患者再次確認(rèn)的癥狀結(jié)果對疾病篩查結(jié)果集進(jìn)行調(diào)整,并重新計算調(diào)整后的疾病集中的疾病的相關(guān)度.
針對以上文獻(xiàn)[1]中疾病輔助診斷算法存在的明顯問題和不足,本文進(jìn)行了改進(jìn)和完善.本文的貢獻(xiàn)如下.
(1)提出了一種基于領(lǐng)域語義知識庫的疾病輔助診斷方法,包括前瞻性診斷和回顧性診斷.該方法分別給出了計算領(lǐng)域語義知識庫中癥狀s的權(quán)重ws的算法、與收集到的患者癥狀集S中一個或者多個癥狀相關(guān)聯(lián)的疾病di的相關(guān)度wi的算法、與癥狀集S中的癥狀最相關(guān)的癥狀集Srel的算法.
(2)選取了6 種常見疾病的臨床病歷數(shù)據(jù)對本文提出的方法進(jìn)行了評價.對于每一份病歷,從患者主訴和現(xiàn)病史中抽取癥狀信息作為患者輸入的癥狀集.基于該癥狀集和本文提出的方法獲得相關(guān)疾病列表及疾病相關(guān)度排名.從疾病相關(guān)度排名中,選取Top-1(首診斷)和Top-3(前3 診斷)分別與病歷數(shù)據(jù)中醫(yī)生給出的診斷進(jìn)行比較.同時,與文獻(xiàn)[1]中的方法和基于統(tǒng)計的方法就診斷命中率進(jìn)行了比較.
本文第1 節(jié)給出領(lǐng)域語義知識庫的相關(guān)定義.第2 節(jié)介紹本文的疾病輔助診斷方法所依賴的領(lǐng)域語義知識庫的構(gòu)建方法.第3 節(jié)給出本文的疾病輔助診斷方法.第4 節(jié)對本文提出的疾病輔助診斷方法進(jìn)行評價.最后對本文進(jìn)行總結(jié),并指出下一步的研究工作.
定義1(領(lǐng)域本體定義(domain ontology schema)).領(lǐng)域本體定義通過捕捉某個領(lǐng)域中共同認(rèn)可的概念、概念的屬性、概念間的語義關(guān)系(包括分類關(guān)系和非分類關(guān)系)及相關(guān)語義約束來描述該領(lǐng)域的知識.記Odomain表示領(lǐng)域本體定義,其定義如下:
Odomain=〈C,A,R,X,I〉.
C表示概念(concept)集,概念又稱為類(class),用于表達(dá)具有某類相似特征的個體(individual)的集合,個體又稱為實(shí)例(instance).例如,概念person 代表所有個體人的集合.A表示所有概念的屬性(attribute)集,概念的屬性又稱為數(shù)據(jù)類型屬性(data type property),它描述概念所包含的實(shí)例本身的特征,例如個體“張三”的姓名、性別、身高、體重等屬性.R表示語義關(guān)系(semantic relation)集,語義關(guān)系又稱為對象屬性(object property),用于描述概念之間、數(shù)據(jù)類型屬性之間和對象屬性之間的分類關(guān)系(taxonomic relation)或者實(shí)例之間的非分類關(guān)系(nontaxonomic relation).例如,概念person 可以進(jìn)一步分為兩個子概念man 和woman,個體“張三”和“李四”之間可能具有“好友”關(guān)系.X表示公理集,公理(axiom)用于定義概念、屬性和關(guān)系之上的語義約束.例如,約束概念person的生日屬性只能有一個值,或者其在生物學(xué)意義上的父親和母親都具有唯一的值.I表示實(shí)例數(shù)據(jù)集,用于描述領(lǐng)域中共同認(rèn)可的常識知識.例如,描述“2 型糖尿病”的表現(xiàn)癥狀有“多飲”“多食”“多尿”“體重減輕”等.本體定義中一般不包含實(shí)例數(shù)據(jù),除非用于表達(dá)一般性的領(lǐng)域常識知識,即本體定義中的實(shí)例描述不針對任何特定的應(yīng)用場景,是領(lǐng)域內(nèi)共同認(rèn)可的知識.僅包含實(shí)例數(shù)據(jù)的RDF(resource description framework)[18]描述不能稱為本體定義[19].W3C 推薦的本體標(biāo)準(zhǔn)描述語言有RDF、RDFS(RDF schema)[20]和OWL(Web ontology language)[21].
定義2(領(lǐng)域?qū)嵗龜?shù)據(jù)(domain instance data)).領(lǐng)域?qū)嵗龜?shù)據(jù)為基于領(lǐng)域本體定義中的語義組件來描述的領(lǐng)域中的個體的知識.例如,可以定義一個people 本來用于描述個體“張三”,或者定義一個疾病本體用于描述“2型糖尿病”.記Idomain表示領(lǐng)域?qū)嵗龜?shù)據(jù),其定義如下:
Idomain={(s,p,o)|s∈I,p∈A∪R,o∈I∪V}.
(s,p,o)表示描述實(shí)例數(shù)據(jù)的陳述或稱為三元組(triple),s為某個實(shí)例對象,I表示實(shí)例對象集,p表示用于描述實(shí)例對象的屬性或者語義關(guān)系,A和R分別表示描述I中實(shí)例對象所用到的屬性集和語義關(guān)系集,o表示屬性或語義關(guān)系的取值,或者為實(shí)例對象,或者為字面值(literals),V表示字面值的集合.
定義3(領(lǐng)域語義規(guī)則集(domain semantic rule set)).領(lǐng)域語義規(guī)則同時服務(wù)于領(lǐng)域本體的定義和領(lǐng)域?qū)嵗龜?shù)據(jù)的描述.一方面,用于描述領(lǐng)域中領(lǐng)域?qū)<宜@得的啟發(fā)式經(jīng)驗(yàn)知識;另一方面,用于補(bǔ)充本體描述語言的語義描述能力.記Fdomain表示領(lǐng)域語義規(guī)則集,其定義如下:
Fdomain={r1,r2,...,ri,...,rn},n≥0.
ri表示其中一條語義規(guī)則.語義規(guī)則是典型的條件語句:if-then 子句,只有當(dāng)特定陳述(statement)集合為真時,才會添加新的知識.例如,使用語義規(guī)則描述疾病診斷的知識,當(dāng)收集到的某位患者的信息滿足某條疾病診斷規(guī)則的條件時,可以基于規(guī)則推理得出疾病診斷結(jié)果并建立該患者與該疾病的語義關(guān)系.
語義Web 層次結(jié)構(gòu)[22]提供了多種知識表示形式,包括從RDF 到最新版本的OWL 等多種格式,每一層都對表達(dá)能力進(jìn)行了進(jìn)一步的擴(kuò)展,并且允許用戶根據(jù)語義程序具體所需的語義量來采用相應(yīng)的表示方式.但本體描述語言在表達(dá)能力和靈活性方面仍然存在一些不足,語義規(guī)則用于擴(kuò)展本體描述語言的描述能力以及靈活性.W3C 建議的語義規(guī)則描述語言為SWRL(semantic Web rule language)[23].
定義4(領(lǐng)域語義知識庫(domain semantic knowledge base)).領(lǐng)域本體定義、領(lǐng)域?qū)嵗龜?shù)據(jù)和領(lǐng)域語義規(guī)則集一起構(gòu)成了領(lǐng)域語義知識庫.記SKBdomain表示領(lǐng)域語義知識庫,其定義如下:
SKBdomain=〈Odomain,Idomain,Fdomain〉.
領(lǐng)域本體定義的結(jié)束,便是領(lǐng)域語義知識庫構(gòu)建的開始[24].基于領(lǐng)域本體定義和語義規(guī)則來描述具體的實(shí)例,形成實(shí)例數(shù)據(jù)和語義規(guī)則集,以領(lǐng)域本體定義作為領(lǐng)域背景知識,以領(lǐng)域?qū)嵗龜?shù)據(jù)和語義規(guī)則集作為具體的知識,它們一起形成了面向領(lǐng)域特定應(yīng)用需求的語義知識庫.例如,基于健康醫(yī)療領(lǐng)域本體定義構(gòu)建面向慢性病患者的健康風(fēng)險評估、疾病輔助診斷、疾病干預(yù)方案(藥物、運(yùn)動、飲食、心理、睡眠等)、遠(yuǎn)程監(jiān)護(hù)服務(wù)、健康知識問答服務(wù)、健康教育/咨詢服務(wù)等需求的語義知識庫.
W3C 推薦的針對語義知識庫的語義層(即RDF 層)查詢標(biāo)準(zhǔn)語言為SPARQL[25],這種查詢語言不僅理解RDF 的語法,而且理解RDF 的數(shù)據(jù)模型和RDF 詞匯的語義,幾乎所有的RDF 查詢工具都提供了對SPARQL 查詢語義的支持[22].
由于領(lǐng)域知識的專業(yè)性,目前公認(rèn)領(lǐng)域本體的開發(fā)需要領(lǐng)域?qū)<业膮⑴c,并由知識工程師將領(lǐng)域?qū)<姨峁┑念I(lǐng)域知識建模并形式化為可被計算機(jī)處理和共享利用的領(lǐng)域本體知識.但又由于領(lǐng)域知識體系的復(fù)雜性,完全由人工從頭構(gòu)建幾乎是不可能的,并且在時間上也是不可接受的.所以本體工程[22]以及幾乎所有本體建模方法[26-31]都強(qiáng)調(diào)在基于本體構(gòu)建領(lǐng)域語義知識庫之前,考慮集成和復(fù)用已經(jīng)存在的領(lǐng)域本體知識庫.例如,通過本體集成(ontology integration)[32]和本體映射(ontology mapping)[33,34]的方法來快速構(gòu)建所需要的領(lǐng)域本體知識庫;或者采用本體學(xué)習(xí)(ontology learning)[35]技術(shù)自動或半自動地從領(lǐng)域數(shù)據(jù)源中獲取領(lǐng)域知識,并基于本體進(jìn)行描述,領(lǐng)域數(shù)據(jù)源包括領(lǐng)域中的結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù);或者從其他開放語義知識庫中抽取可復(fù)用的領(lǐng)域知識.例如,Freebase[36-38]、DBpedia[39]、YAGO[40]等.本文擬采用從開放語義知識庫中抽取可復(fù)用的領(lǐng)域知識,考慮到本文的研究目的,需要獲取關(guān)于疾病、癥狀及其語義關(guān)系相關(guān)的知識.為此,針對這部分知識的正確性和完整性,和醫(yī)學(xué)專家一起,對Freebase、DBpedia、YAGO 等開放語義知識庫進(jìn)行了對比分析,最終選擇了Freebase 作為抽取的數(shù)據(jù)源.
Freebase 是一個實(shí)用的、可伸縮的、圖形化的、結(jié)構(gòu)化的一般人類知識的數(shù)據(jù)庫,用戶可以在一個開放的平臺上協(xié)作創(chuàng)建、結(jié)構(gòu)化和維護(hù)其內(nèi)容.Freebase 數(shù)據(jù)被表示為三元組(又稱為事實(shí))的格式,可以被可視化表示為一個有向圖.Freebase 數(shù)據(jù)來自大量高質(zhì)量的開放數(shù)據(jù)源,例如Wikipedia[41]、MusicBrainz[42]、WordNet[43]等.Freebase 已經(jīng)成為LOD(linked open data)[44]項(xiàng)目的一個重要的數(shù)據(jù)源.Freebase 以每周為單位,將其數(shù)據(jù)在CC-BY[45]許可下發(fā)布為N-Triples[46]RDF 格式的dump 文件.該文件采用gzip 進(jìn)行壓縮,解壓后為一個單一的文本文件.例如,在2014 年8 月下載的gzip 壓縮包的大小為22GB,解壓后大小為250GB,共包含約19 億個三元組.Freebase RDF dump 包包含了11 個實(shí)現(xiàn)域(implementation domain)、5 個OWL 域和89 個主題域(subject matter domain)[47].Freebase 的medicine 主題域描述了健康醫(yī)療領(lǐng)域的本體定義和領(lǐng)域?qū)嵗龜?shù)據(jù)(即領(lǐng)域常識知識).例如,medicine 主題域的本體定義中描述了疾病、癥狀、病因、風(fēng)險因素、藥物等相關(guān)概念和屬性,并基于該本體定義描述了健康醫(yī)療領(lǐng)域的一些常識知識,即由相關(guān)概念標(biāo)注的實(shí)例數(shù)據(jù)及其語義關(guān)系.
本文的研究選擇直接從Freebase RDF dump 包中抽取medicine 主題域的知識.在完全理解與Freebase 相關(guān)的概念、Freebase 的知識表示模型和Freebase RDF dump 包的結(jié)構(gòu)特征的情況下,結(jié)合Linux 下的命令行工具(例如gzip、sed、grep、cat、wc、head、tail 等)、shell 腳本、Apache Jena[48]提供的相關(guān)工具和SPARQL 查詢,設(shè)計和實(shí)現(xiàn)了一種從Freebase RDF dump 中快速、準(zhǔn)確、完整地抽取某個或者某幾個領(lǐng)域的知識的方法[49].該方法包括6 個主要步驟.
1)數(shù)據(jù)預(yù)處理.數(shù)據(jù)預(yù)處理的目的有兩個:(a)縮減數(shù)據(jù)包的規(guī)模,以有利于對其進(jìn)行存儲和處理.該方法采用Linux 下的命令行工具和shell 腳本對數(shù)據(jù)包進(jìn)行預(yù)處理.一方面,將N-Triples 格式轉(zhuǎn)換為Turtle[50]格式,這將使得數(shù)據(jù)包的規(guī)模減少約一半;另一方面,刪除實(shí)現(xiàn)域中的事實(shí)(這些事實(shí)用于內(nèi)部授權(quán)管理或者鏈接到外部資源,對于領(lǐng)域知識庫用戶來說并不需要或者并不關(guān)心),這可以使數(shù)據(jù)包的規(guī)模再減少約一半.(b)刪除和處理非法格式的三元組,這些非法格式的三元組會導(dǎo)致在將數(shù)據(jù)包加載到存儲中時發(fā)生中斷.
2)數(shù)據(jù)裝載.使用Jena 提供的TDB[51]作為RDF Store(又稱為triple store),使用Jena 提供的tdbloader 命令行工具將預(yù)處理后的數(shù)據(jù)包加載到TDB 中.
3)存儲發(fā)布.使用Jena 提供的Fuseki SPARQL Server[52]對TDB 進(jìn)行公開,以利用Fuseki 提供的SPARQL查詢服務(wù)端點(diǎn)(endpoint)實(shí)現(xiàn)對TDB 存儲的查詢.
4)知識抽取.通過構(gòu)造SPARQL 查詢分別抽取medicine 領(lǐng)域的本體定義Omedicine(包括類定義和屬性定義)和實(shí)例數(shù)據(jù)Imedicine.Freebase RDF dump 包中沒有領(lǐng)域語義規(guī)則集的定義.
5)數(shù)據(jù)后處理.包括兩個方面,一方面,在Freebase RDF dump 中,不區(qū)分?jǐn)?shù)據(jù)類型屬性和對象屬性,為此需要對其進(jìn)行處理;另一方面,在Freebase RDF dump 中,所有主題域的名稱空間相同,為此,需要結(jié)合領(lǐng)域需求對其進(jìn)行替換.
6)數(shù)據(jù)集成和處理.包括3 個方面:(a)將后處理后的Omedicine和Imedicine整合為SKBmedicine;(b)將采用MID(machine identifier)標(biāo)識的類和屬性表示為人類可讀的ID,在Freebase 中,所有類和屬性既有唯一的MID,也有唯一的人類可讀的ID,而所有實(shí)例只有唯一的MID,其人類可識別的標(biāo)識通過標(biāo)注屬性rdfs:label 進(jìn)行描述;(c)將SKBmedicine轉(zhuǎn)換為本體標(biāo)準(zhǔn)語言描述的格式.Freebase RDF dump 包雖然采用RDF 來進(jìn)行描述,但其中的某些語義描述組件并未采用本體標(biāo)準(zhǔn)描述語言定義的語義組件,而是采用了Freebase 實(shí)現(xiàn)域中的一些語義組件.例如,字面值的類型采用了Freebase type 域中的類型定義,還有一些標(biāo)注屬性使用了Freebase common 域中的屬性定義等.所以還需要將抽取的結(jié)果轉(zhuǎn)換為本體標(biāo)準(zhǔn)語言描述的形式,以利用通用的語義Web 工具對其進(jìn)行處理.
由于本文討論的疾病輔助診斷只依賴medicine 主題域中的疾病、癥狀實(shí)例及其語義關(guān)系,所以最后由醫(yī)學(xué)專家對這部分知識內(nèi)容進(jìn)行了校對和進(jìn)一步的完善.圖1 所示為使用本體編輯工具Protégé[53]打開的、最終得到的medicine 領(lǐng)域語義知識庫SKBmedicine,其規(guī)模說明如下.
1)以Turtle 格式表示的medicine 領(lǐng)域語義知識庫的文件(擴(kuò)展名為.ttl)大小為1.6GB,裝載到TDB 中以后,占用的文件系統(tǒng)存儲空間大小為1.3GB(比原始文件還要小).
2)知識庫中包含70 個概念、63 個數(shù)據(jù)類型屬性、156 個對象屬性、886 272 個實(shí)例和7 073 580 個三元組.
3)疾病實(shí)例有7 367 個(不含同義實(shí)例),其中,3 590 個疾病實(shí)例包含了合計3 802 個同義實(shí)例,這些同義實(shí)例被歸一化到(通過owl:sameAs 語義組件)其對應(yīng)的標(biāo)準(zhǔn)疾病實(shí)例(下文所指疾病實(shí)例均指標(biāo)準(zhǔn)疾病實(shí)例)中.
Fig.1 The domain semantic knowledge base in medicine圖1 Medicine 領(lǐng)域的語義知識庫
4)癥狀實(shí)例有1 444 個(不含同義實(shí)例),其中,1 112 個癥狀實(shí)例包含了合計1 352 個同義癥狀,它們也被歸一化到其對應(yīng)的標(biāo)準(zhǔn)癥狀實(shí)例(下文所指癥狀實(shí)例均指標(biāo)準(zhǔn)癥狀實(shí)例)中.
5)包含從標(biāo)準(zhǔn)疾病實(shí)例指向標(biāo)準(zhǔn)癥狀實(shí)例的語義關(guān)系6 028 個.
在SKBmedicine中,疾病實(shí)例通過屬性med:medicine.disease.icd_9 和med:medicine.disease.icd_10 分別指向了ICD-9 和ICD-10 國際疾病分類[54].同樣,癥狀實(shí)例也通過屬性med:medicine.symptom.icd_9 和med:medicine.symptom.icd_10 分別指向了ICD-9 和ICD-10 國際疾病分類.在ICD-10 中,以R 開頭的編碼是關(guān)于癥狀和體征的分類.這里,med 為medicine 主題域的名稱空間前綴.
在Freebase 中,所有主題域中的概念只有頂層概念.例如,在medicine 主題域中,疾病和癥狀只有一個頂層概念,疾病之間的分類關(guān)系通過屬性med:medicine.disease.parent_disease 和med:medicine.disease.includes_diseases來實(shí)現(xiàn).即對于疾病來說,除了頂層概念,都是實(shí)例,實(shí)例間通過屬性來表達(dá)分類關(guān)系.同樣,癥狀實(shí)例之間的分類關(guān)系通過屬性med:medicine.symptom.parent_symptom 和med:medicine.symptom.includes_symptoms 來實(shí)現(xiàn).這與SNOMED CT[55]不同,在SNOMED CT 本體(最新版本為ontology-2018-12-26_09-14-08.owl)中,所有疾病都為概念,概念之間通過owl:subClassOf 屬性建立分類關(guān)系.在Freebase 中,所有實(shí)例只有MID.例如,ns:m.0c58k 為糖尿病實(shí)例的MID,ns為Freebase 的默認(rèn)名稱空間.在SNOMED CT 本體中,所有概念I(lǐng)D 采用SNOMED CT 的約定編碼.對于語義上相同的疾病,其在Freebase 和SNOMED CT 本體中的rdfs:label 標(biāo)注屬性值并不完全相同.所以,Freebase 的medicine 主題域中的知識和SNOMED CT 本體之間并未建立聯(lián)系.
SKBmedicine中癥狀s于疾病診斷權(quán)重ws的計算,依賴于當(dāng)前知識庫中包含此癥狀s的疾病的數(shù)量(即與癥狀s具有語義關(guān)系的疾病的數(shù)量)和知識庫中當(dāng)前的疾病總數(shù),一旦這兩個數(shù)量中的任何一個發(fā)生變化,即應(yīng)對ws進(jìn)行重新計算.
假定SKBmedicine中包含的疾病總數(shù)為N,對于每一個癥狀s,我們定義Ns為與癥狀s具有語義關(guān)系的疾病的數(shù)量,ws是癥狀于疾病診斷的權(quán)重.那么ws的計算方法如下:
其中,Ns≥1,ws≤ 1.從公式(1)可見,與癥狀s具有語義關(guān)聯(lián)的疾病的數(shù)量Ns越大,那么癥狀s于疾病的診斷權(quán)重越小.對方程取平方的目的是為了強(qiáng)調(diào)隨著關(guān)聯(lián)疾病數(shù)量的增加,所表現(xiàn)出來的癥狀權(quán)重之間的差異性.分母取N-1 是因?yàn)楫?dāng)與癥狀s具有語義關(guān)聯(lián)的疾病的數(shù)量Ns為1 時,確保ws為1,即基于該癥狀,s可唯一確定一種疾病.ws與Ns的關(guān)系如圖2 所示.
Fig.2 The relation between the weight of a symptom and the number of the diseases related to the symptom圖2 癥狀于疾病診斷的權(quán)重和與該癥狀具有語義關(guān)聯(lián)的疾病數(shù)量的關(guān)系
基于公式(1)可以為知識庫中的每個癥狀s計算出一個ws,如圖3 所示.
Fig.3 Weights of symptoms in the domain semantic knowledge base for disease diagnosis圖3 領(lǐng)域語義知識庫中癥狀于疾病診斷的權(quán)重
基于知識庫中每個癥狀s的ws,可以計算知識庫中疾病di與患者輸入癥狀集S的相關(guān)度,從而為醫(yī)生或患者推薦可能的疾病列表及其相關(guān)度排名.
假定知識庫中的癥狀數(shù)為M,疾病數(shù)為N;患者輸入的癥狀集為S={s1,s2,...,sj},1≤j≤M;知識庫中與該癥狀集S中的一個或者多個癥狀具有語義關(guān)聯(lián)的疾病構(gòu)成的集合為D={d1,d2,...,di},1≤i≤N;其中,疾病di在知識庫中關(guān)聯(lián)的癥狀集合為Si,Si′=Si∩S;疾病di與患者輸入癥狀集S的相關(guān)度為wi,那么wi的計算方法如下:
公式(2)的分子僅考慮了癥狀集S中和疾病di相關(guān)聯(lián)的癥狀,因?yàn)槠渌Y狀于di的相關(guān)度計算沒有作用.而分母考慮到了知識庫中與疾病di關(guān)聯(lián)的所有癥狀,因?yàn)樗鼈児餐饔糜诩膊i的診斷.
假定患者輸入“咽部異物感”癥狀,基于公式(2)可以計算出知識庫中與此癥狀關(guān)聯(lián)的疾病的相關(guān)度,如后文的圖4(a)所示.
在篩查出與患者輸入癥狀集S相關(guān)聯(lián)的疾病集合D以后,還需要對集合D中的疾病進(jìn)行回顧性驗(yàn)證,即根據(jù)篩查出的疾病集合D評估和推薦與患者輸入癥狀集S中的癥狀最相關(guān)的其他癥狀,供醫(yī)生或患者確認(rèn);進(jìn)而基于初始收集到的患者癥狀集S和患者再次確認(rèn)的癥狀結(jié)果對疾病篩查結(jié)果集進(jìn)行調(diào)整,并重新計算調(diào)整后疾病集D中疾病的相關(guān)度.
與患者輸入癥狀集S中的癥狀最相關(guān)的癥狀集Srel的推薦算法描述如下.
輸入:患者初次輸入的癥狀集S.
輸出:與患者輸入癥狀集S中的癥狀最相關(guān)的Top-6(這里僅保留6 個,可以根據(jù)需要調(diào)整)個癥狀組成的癥狀集Srel.
S-1:首先從記錄的歷史輸入癥狀組合中進(jìn)行推薦.系統(tǒng)自動對不同患者輸入和選擇的歷史癥狀組合進(jìn)行記錄,記錄方式為{s1,s2,...,si}f,癥狀組合中的癥狀不分先后順序,f表示該癥狀組合發(fā)生的頻率.如果患者輸入的癥狀集S落入某一個或者多個歷史癥狀組合中,則按f值從高至低,從某一個或者多個歷史癥狀組合中選取除集合S中的癥狀以外的Top-6 個癥狀作為Srel,轉(zhuǎn)到步驟S-6;如果不夠6 個癥狀,則以實(shí)際可選擇的癥狀數(shù)目作為Srel,轉(zhuǎn)到步驟S-6;如果沒有多余的癥狀或者S未落入任何一個歷史癥狀組合,則轉(zhuǎn)到步驟S-2.注意,這個步驟選取癥狀時,不考慮癥狀的權(quán)重,而是按癥狀出現(xiàn)的先后順序依次選取.
S-2:從知識庫中查詢與癥狀集S中的一個或者多個癥狀具有語義關(guān)聯(lián)的疾病集合D={d1,d2,...,di},1≤i≤N,N表示領(lǐng)域語義知識庫中的疾病數(shù)量.
S-3:設(shè)疾病di在領(lǐng)域語義知識庫中關(guān)聯(lián)的癥狀集合為Si,求S′=S1∪S2∪...∪Si.
S-4:對集合S′中的癥狀按照其ws的大小進(jìn)行降序排列得到S*.
S-5:從S*中選取前Top-6 個癥狀作為與患者輸入癥狀集S最相關(guān)的癥狀集合Srel;如果Top-6 個癥狀中包含癥狀集合S中的癥狀,則跳過,往后依次選取.
S-6:輸出Srel.
如圖4(a)所示,根據(jù)患者輸入的癥狀“咽部異物感”推薦了6 個最相關(guān)的癥狀;當(dāng)從推薦的6 個癥狀中進(jìn)一步選取了3 個癥狀:“咽喉疼痛”“聲嘶”“咽部充血”以后,將基于患者先后兩次輸入的共4 個癥狀重新計算疾病的相關(guān)度,并調(diào)整排名,如圖4(b)所示.同時,也會基于這4 個癥狀重新推薦最相關(guān)的癥狀集合Srel.
Fig.4 Calculation of disease relevancy and recommendation of related symptoms圖4 疾病相關(guān)度計算及相關(guān)癥狀推薦
整個疾病輔助診斷過程是在醫(yī)生和患者參與下的一個循環(huán)迭代的過程.對于基層全科醫(yī)生來說,可以從推薦的疾病列表中查看疾病的詳細(xì)信息(包括疾病介紹、就診科室、高發(fā)群體、有無傳染性、癥狀、檢查、診斷和鑒別、治療、飲食宜忌、預(yù)防等)以判斷是否需要做進(jìn)一步的檢查以及做哪些檢查;由于推薦的疾病列表中的疾病在癥狀表現(xiàn)上具有一些相似性,所以可以通過診斷和鑒別信息進(jìn)行鑒別診斷,如圖5(b)所示.如果用于患者自診,患者可以通過選擇推薦疾病列表中的某種疾病獲得所在區(qū)域的醫(yī)療資源,包括所在區(qū)域的醫(yī)院、科室以及醫(yī)生的推薦.推薦過程還可以考慮對區(qū)域內(nèi)醫(yī)療機(jī)構(gòu)的客觀評價(例如,診療水平、診療費(fèi)用、診療效率等指標(biāo))以及患者的歷史就診行為偏好等,如圖5(a)所示;或者查看疾病的詳細(xì)信息,并與自身表現(xiàn)進(jìn)行對照.
Fig.5 Medical resource recommendation and disease details圖5 醫(yī)療資源推薦及疾病詳細(xì)信息
為了對本文建設(shè)的領(lǐng)域語義知識庫和提出的疾病輔助診斷方法進(jìn)行評價,本文從某個地市的健康醫(yī)療大數(shù)據(jù)中心隨機(jī)選取了6 種常見疾病的臨床病歷數(shù)據(jù),這些病歷數(shù)據(jù)來自多個不同的三甲醫(yī)院,每份病歷數(shù)據(jù)包括患者的性別、年齡、主訴、現(xiàn)病史、既往史、個人史、家族史、過敏史、查體、輔助檢查、診斷等信息,這里只用到了主訴、現(xiàn)病史和診斷信息.但病歷數(shù)據(jù)的質(zhì)量并不高,比如,很多病歷數(shù)據(jù)的主訴字段的值為空,或者為“未填寫”,有些病歷數(shù)據(jù)的主訴內(nèi)容為“急性咽炎復(fù)查”“咨詢”“要求彩超”等.這里在選取病歷數(shù)據(jù)時,首先過濾掉了這幾種情況的無效病歷數(shù)據(jù),然后組織醫(yī)學(xué)專家對選取的病歷數(shù)據(jù)做了進(jìn)一步的篩查,過濾掉了一些質(zhì)量不高的病歷數(shù)據(jù),即基于這些病歷數(shù)據(jù)中的主訴和現(xiàn)病史中的癥狀描述很難得出相應(yīng)的診斷.
從病歷數(shù)據(jù)的主訴和現(xiàn)病史中抽取相關(guān)癥狀,作為患者輸入的癥狀集S,以病歷數(shù)據(jù)中的診斷作為參考診斷,基于本文建設(shè)的領(lǐng)域語義知識庫、公式(1)和公式(2)獲取相關(guān)疾病列表及其相關(guān)度排名,分別選取Top-1 診斷(第1 診斷)和Top-3 診斷(前3 診斷)與參考診斷進(jìn)行比較,如果Top-1 診斷和參考診斷一致,表明Top-1 命中;否則,如果Top-3 中的某個診斷和參考診斷相一致,則表明Top-3 命中.以病種為單位,分別統(tǒng)計Top-1 和Top-3的命中率.然后從如下兩個方面對本文建設(shè)的領(lǐng)域語義知識庫和提出的疾病輔助診斷方法進(jìn)行評價.
1)與文獻(xiàn)[1]中的方法就診斷命中率進(jìn)行比較
采用本文建設(shè)的領(lǐng)域語義知識庫和選取的6 種常見疾病的臨床病歷數(shù)據(jù),分別基于本文的方法和文獻(xiàn)[1]中的方法統(tǒng)計Top-1 和Top-3 命中率,比較在不同病歷規(guī)模情況下的命中率及其變化趨勢,如圖6 所示.
從圖6 可見,針對隨機(jī)選取的6 種常見疾病的Top-1 和Top-3 命中率,本文的方法均高于文獻(xiàn)[1]中的方法.在本文開始部分已對文獻(xiàn)[1]中方法存在的問題進(jìn)行了詳細(xì)分析,采用文獻(xiàn)[1]中的方法,主訴和現(xiàn)病史中的癥狀與知識庫中對應(yīng)參考診斷關(guān)聯(lián)的癥狀越不相關(guān)(當(dāng)然,必須至少有一個癥狀相關(guān)),得到的疾病相關(guān)度wi反而越大.由于本文在選取病歷數(shù)據(jù)時有醫(yī)學(xué)專家的參與,所以病歷質(zhì)量比較好,使得采用文獻(xiàn)[1]中的方法仍有少量病歷數(shù)據(jù)被命中.
Fig.6 Comparison of the diagnostic hit ratio between the method in this paper and the one in Ref.[1]圖6 本文方法和文獻(xiàn)[1]中方法的診斷命中率比較
根據(jù)對病歷數(shù)據(jù)來源地市的門/急診診斷的統(tǒng)計,急性上呼吸道感染(簡稱上感,又稱感冒)是發(fā)病率最高的疾病,廣義的上感不是一個疾病診斷,而是一組疾病,包括普通感冒、病毒性咽炎、喉炎、皰疹性咽峽炎、咽結(jié)膜熱、細(xì)菌性咽-扁桃體炎[56].急性上呼吸道感染的臨床表現(xiàn)癥狀幾乎涵蓋了急性支氣管炎、急性咽炎、慢性咽炎等疾病的癥狀,或者說這幾種疾病可能經(jīng)常被診斷為急性上呼吸道感染,所以急性上呼吸道感染的命中率相較急性支氣管炎、急性咽炎和慢性咽炎稍微高一些,急性支氣管炎、急性咽炎和慢性咽炎的命中率基本接近.與胃腸相關(guān)的疾病也是非常常見的疾病,具有很多共性的臨床表現(xiàn)癥狀.卵巢囊腫是婦科疾病中非常常見的疾病,但其臨床表現(xiàn)相對比較聚焦,所以卵巢囊腫的命中率相較其他幾種疾病都要高.
隨著病歷數(shù)的增加,雖然Top-1 和Top-3 命中率有少量波動,但變化幅度不大.由于領(lǐng)域語義知識庫保持不變,影響命中率的關(guān)鍵要素是來自主訴和現(xiàn)病史中的癥狀,又由于病歷數(shù)據(jù)是經(jīng)過醫(yī)學(xué)專家篩選后所得,同種疾病,每千份病歷數(shù)據(jù)之間的質(zhì)量相差并不大,所以累計的Top-1 和Top-3 命中率變化幅度不大.
2)與基于統(tǒng)計的方法就診斷命中率進(jìn)行比較
以主訴和現(xiàn)病史中的癥狀作為特征屬性,由醫(yī)學(xué)專家參與對特征屬性進(jìn)行了選取,以癥狀的有無作為特征屬性的取值劃分,以病歷中的參考診斷作為分類標(biāo)記,從篩選的6 種疾病的病歷數(shù)據(jù)中分別先后選取1 000、4 000 和8 000 份病歷數(shù)據(jù)作為訓(xùn)練樣本,即合計的訓(xùn)練樣本數(shù)分別為6 000、24 000 和48 000,并使用樸素貝葉斯分類[57]和決策樹分類[58]算法進(jìn)行訓(xùn)練,然后使用不同訓(xùn)練樣本規(guī)模下訓(xùn)練的模型分別對6 種疾病的各2 000份病歷(作為測試樣本)進(jìn)行Top-1 和Top-3 命中率的統(tǒng)計,結(jié)果見表1 和表2.
Table 1 Hit rate statistics based on naive Bayesian classification表1 基于樸素貝葉斯分類的命中率統(tǒng)計
Table 2 Hit rate statistics based on decision tree classification表2 基于決策樹分類的命中率統(tǒng)計
基于表1 和表2 的統(tǒng)計結(jié)果可見,樸素貝葉斯分類和決策樹分類的命中率結(jié)果基本接近,整體上,樸素貝葉斯分類的命中率稍高,但針對其中卵巢囊腫疾病的命中率,兩者基本相當(dāng),主要原因仍是卵巢囊腫疾病的臨床表現(xiàn)癥狀更加聚焦.在訓(xùn)練樣本數(shù)為6 000 時,Top-1 和Top-3 的命中率不及本文的方法;在訓(xùn)練樣本數(shù)為24 000時,Top-1 和Top-3 的命中率有了顯著提升,但仍不及本文的方法;在訓(xùn)練樣本數(shù)為48 000 時,Top-1 和Top-3 的命中率接近本文的方法,其中,基于樸素貝葉斯分類的方法,急性咽炎和慢性胃炎的Top-3 命中率稍高于本文的方法0.1%和0.7%,卵巢囊腫的Top-1 命中率高于本文的方法0.8%;基于決策樹分類的方法,卵巢囊腫的Top-1 命中率高于本文的方法0.3%.
綜上,文獻(xiàn)[1]中的方法存在明顯的問題和不足,基于樸素貝葉斯分類和決策樹分類的方法,在訓(xùn)練樣本較少時,明顯不及本文的方法,在訓(xùn)練樣本足夠大時,與本文的方法接近甚至高于本文的方法.當(dāng)然,除了樣本的規(guī)模以外,樸素貝葉斯分類和決策樹分類方法的準(zhǔn)確性依賴于特征屬性選取的有效性和樣本的質(zhì)量.本文方法的準(zhǔn)確性也依賴于兩個關(guān)鍵因素:領(lǐng)域語義知識庫的規(guī)模和質(zhì)量,以及公式(1)和公式(2)的有效性,但是通過回顧性驗(yàn)證可以提升本文方法的準(zhǔn)確性.與樸素貝葉斯分類和決策樹分類方法相比,本文的方法具有如下優(yōu)勢.
1)避免“冷啟動”問題:即在沒有或沒有足夠的訓(xùn)練樣本時,基于本文的方法可以達(dá)到更好的效果.
2)可以快速支撐大量常見疾病的輔助診斷:采用樸素貝葉斯分類和決策樹分類的方法,需要針對每種疾病選取有效的特征屬性,并準(zhǔn)備足夠多的訓(xùn)練樣本,結(jié)果的準(zhǔn)確性對特征屬性的有效性和訓(xùn)練樣本的質(zhì)量比較敏感,很難在短期內(nèi)提供對大量常見疾病的輔助診斷支持.而采用本文的方法則可以避開這些問題,快速支撐對大量常見疾病的輔助診斷.
當(dāng)然,本文的方法也存在一些不足.一方面,領(lǐng)域語義知識庫的建立和維護(hù)是一項(xiàng)知識密集型的工作,需要領(lǐng)域?qū)<业膮⑴c;另一方面,在訓(xùn)練樣本足夠大時,本文的方法在準(zhǔn)確性上不及樸素貝葉斯分類和決策樹分類的方法.
疾病診斷的質(zhì)量主要依賴于醫(yī)療專家所掌握的醫(yī)療知識以及醫(yī)療經(jīng)驗(yàn),早期的專家系統(tǒng)(expert system,簡稱ES)[59]試圖通過對人類專家的問題求解能力的建模,采用AI 中的知識表示和知識推理技術(shù)來模擬通常由專家才能解決的復(fù)雜問題,從而達(dá)到或超過專家解決問題的能力水平.ES 中的知識通常為采用規(guī)則描述的專家擁有的啟發(fā)式經(jīng)驗(yàn)知識,并采用基于規(guī)則推理(rule-based reasoning,簡稱RBR)的方法提供領(lǐng)域問題求解服務(wù).從專家那里獲取知識的過程是一個時間密集型的過程,知識獲取困難,而且依賴專家的意見,專家的意見有時具有主觀性.文獻(xiàn)[60,61]結(jié)合本體知識庫和語義Web 規(guī)則實(shí)現(xiàn)了一個高血壓疾病的診斷模型,基于RBR 提供高血壓疾病的診斷推理.
在健康醫(yī)療領(lǐng)域,專家的經(jīng)驗(yàn)知識往往蘊(yùn)含于其診治過的患者的病歷數(shù)據(jù)中,如果能夠直接利用蘊(yùn)含于這些病歷數(shù)據(jù)中的專家的經(jīng)驗(yàn)知識,則將避開從專家那里直接獲取經(jīng)驗(yàn)知識的瓶頸,因?yàn)橹R獲取只不過是獲得過去發(fā)生過的案例(case).基于案例的推理(case-based reasoning,簡稱CBR)[62]分類法的研究即借鑒了這樣的思想.CBR 的底層思想是基于這樣一個假定:相似問題具有相似的解.例如,在醫(yī)療健康領(lǐng)域,通過收集和存儲醫(yī)療專家診治過的患者的病歷和治療方案,作為源案例庫,并基于源案例庫求解目標(biāo)案例,即用來幫助診斷和治療新的患者.由于傳統(tǒng)AI 技術(shù)存在的知識獲取、記憶、維護(hù)等方面的問題,文獻(xiàn)[63]討論了實(shí)現(xiàn)智能醫(yī)療診斷系統(tǒng)的CBR 方法學(xué)、研究問題和技術(shù)方面.Ain Shams 大學(xué)的醫(yī)療信息研究組(medical informatics research group)基于CBR 技術(shù)開發(fā)了一個用于癌癥和心臟病診斷的系統(tǒng),文獻(xiàn)[63]也對此進(jìn)行了討論.文獻(xiàn)[64]討論了CBR 在醫(yī)療領(lǐng)域的適宜性,指出了存在的問題、局限性和部分克服這些問題、局限性的可能性.在健康醫(yī)療領(lǐng)域,專家的知識包括理論知識和經(jīng)驗(yàn)知識,針對典型、復(fù)雜的診療案例,專家會基于理論知識,經(jīng)驗(yàn)知識,特定的空間、時間和患者個體情況做出綜合的診療建議推理.歷史診療案例雖然可能蘊(yùn)含了一部分專家的理論知識和經(jīng)驗(yàn)知識,但仍然脫離了大量專家知識的支撐,所以新舊案例適配(adaptation)的合理性是CBR 面臨的主要問題.
健康醫(yī)療大數(shù)據(jù)的出現(xiàn)也為利用數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)技術(shù)直接從大量的歷史病歷數(shù)據(jù)中獲取知識提供了可能性.文獻(xiàn)[2]基于決策樹和樸素貝葉斯算法提出了一種用于心臟疾病診斷的新方法,可以減少診斷需要輸入的屬性數(shù)量,從而減少診斷過程中需要對患者進(jìn)行的實(shí)驗(yàn)數(shù)量,以提升診斷的效率.文獻(xiàn)[3]使用減法聚類算法(subtractive clustering algorithm)開發(fā)了一個模糊推理系統(tǒng)(fuzzy inference system),并運(yùn)用該系統(tǒng)對患者的MRI影像進(jìn)行分類,以識別輕度認(rèn)知障礙(mild cognitive impairment)、阿爾茨海默病(Alzheimer’s disease)和正常對照組(normal control).文獻(xiàn)[4]使用BP(backpropagation)學(xué)習(xí)算法訓(xùn)練了一個多層感知機(jī)(multi layer perceptron),用于診斷和預(yù)測新生兒疾病(neonatal diseases).文獻(xiàn)[5]對有監(jiān)督機(jī)器學(xué)習(xí)算法在臨床上用于輔助診斷帕金森病(Parkinson’s disease)和進(jìn)行性核上性麻痹(progressive supranuclear palsy)的可行性進(jìn)行了評估.這些研究探討了數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)算法在某些單病種疾病輔助診斷和預(yù)測方面的應(yīng)用效果.利用數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)技術(shù)構(gòu)建的疾病診斷模型,可以提供比人工手段更高的疾病識別率和檢出效率.但針對不同病種,需要分別構(gòu)建單獨(dú)的疾病診斷模型,所以短時間內(nèi)還無法提供對大量常見疾病的輔助診斷服務(wù).
在健康醫(yī)療領(lǐng)域,已經(jīng)積累了大量結(jié)構(gòu)化的知識.例如,基于本體模型構(gòu)建的領(lǐng)域語義知識庫.基于領(lǐng)域語義知識庫的方法可以快速提供大量常見疾病的診斷服務(wù).文獻(xiàn)[12]探討了一些用于癌癥疾病的基于本體的醫(yī)療系統(tǒng)的技術(shù)問題,也提出了一種基于本體的用于癌癥疾病輔助診斷的方法學(xué).該方法學(xué)能夠被應(yīng)用于幫助患者、學(xué)生和醫(yī)生判斷癌癥的類型、癌癥所處的分期以及如何治療.文獻(xiàn)[13]提出了一種新的遺傳疾病鑒別診斷的數(shù)學(xué)模型,而不是傳統(tǒng)的基因突變分析方法.它通過本體描述了“基因型-表型”關(guān)聯(lián)關(guān)系.患者新出現(xiàn)的基因突變被映射到人類表型本體(human phenotype ontology)中的標(biāo)準(zhǔn)化詞匯表上.然后用這些術(shù)語進(jìn)行鑒別診斷.將信息理論與模糊關(guān)系理論相結(jié)合,通過度量基于本體的語義相似度來實(shí)現(xiàn)鑒別診斷.該系統(tǒng)能夠診斷5 種復(fù)雜疾病的發(fā)生概率,即淋巴水腫產(chǎn)生綜合癥(lymphedema-distichiasis syndrome)、狄蘭吉氏癥候群(Cornelia de Lange syndrome)、科恩綜合癥(Cohen syndrome)和Smith-Lemli-Opitz 癥候群.文獻(xiàn)[14]基于同現(xiàn)(co-occurrence)和信息內(nèi)容,提出了度量本體中術(shù)語間相似性以及使用本體中的術(shù)語標(biāo)注實(shí)體間的語義相似性的方法.新的相似性度量方法被證明比現(xiàn)有的使用生物學(xué)途徑(biological pathway)的方法更好.該相似性度量方法使用與疾病相關(guān)的生物過程(biological processe)來評估疾病間的相似性,并使用已知疾病相似性的人工策劃的數(shù)據(jù)集對該方法進(jìn)行了評價.此外,使用本體來對疾病、藥物和生物過程進(jìn)行編碼,并演示了一種方法,該方法使用基于網(wǎng)絡(luò)的算法將有關(guān)疾病的生物學(xué)數(shù)據(jù)與藥物信息結(jié)合起來,從而為現(xiàn)有藥物找到新的用途.通過與現(xiàn)有的藥物相關(guān)臨床實(shí)驗(yàn)進(jìn)行對比,驗(yàn)證了該方法的有效性.文獻(xiàn)[1]的研究工作是歐洲項(xiàng)目K4CARE[65]的一部分,該項(xiàng)目的目標(biāo)是將醫(yī)療保健和一些西方和東歐國家的信息和通信技術(shù)(ICT)經(jīng)驗(yàn)結(jié)合起來,以建立、實(shí)施和驗(yàn)證一個基于知識的醫(yī)療保健模式,以向居家老年患者提供專業(yè)援助.該項(xiàng)目聚焦于9 種慢性疾病、2 種綜合征和5 個社會問題,使用CPO(case profile ontology)本體描述了與它們相關(guān)的知識,并使用SDA(state-decision-action)圖描述了相關(guān)的干預(yù)計劃.文獻(xiàn)[1]展示了該項(xiàng)目中開發(fā)的用于疾病診斷和本體個性化的方法和工具,其疾病診斷方法存在一些明顯的問題和不足,在本文的介紹部分已給出了詳細(xì)說明.
表3 對已有的疾病輔助診斷方法的研究進(jìn)行了總結(jié),分析了各自的優(yōu)勢和劣勢.這些方法除了在技術(shù)原理上不同以外,它們利用的數(shù)據(jù)也不一樣.比如,文獻(xiàn)[1]和文獻(xiàn)[12]的方法利用了患者的癥狀和體征數(shù)據(jù),文獻(xiàn)[13]的方法利用了患者的基因數(shù)據(jù),文獻(xiàn)[3]的方法利用了患者的MRI 影像數(shù)據(jù)等.有的數(shù)據(jù)(例如,癥狀和體征)比較好獲取,而有的數(shù)據(jù)(例如,基因數(shù)據(jù))的獲取就比較困難.
為了面向基層全科醫(yī)生提供大量常見疾病的輔助診斷服務(wù)以及面向患者提供疾病自診服務(wù),本文的研究采用基于領(lǐng)域語義知識庫的疾病輔助診斷方法.針對現(xiàn)有研究的不足,本文進(jìn)行了校正和完善.
Table 3 Comparison of the aided diagnosis methods for diseases表3 疾病輔助診斷方法比較
本文從Freebase RDF dump 包中抽取了medicine 主題域的知識,并基于本體構(gòu)建了medicine 領(lǐng)域的語義知識庫,由醫(yī)學(xué)專家對疾病、癥狀及其語義關(guān)系進(jìn)行了校驗(yàn)和完善.在此基礎(chǔ)上,提出了基于領(lǐng)域語義知識庫的疾病輔助診斷方法,包括計算知識庫中癥狀于疾病診斷的權(quán)重、計算與患者輸入癥狀集相關(guān)的疾病列表及其相關(guān)度排名、推薦與患者輸入癥狀集中癥狀最相關(guān)的癥狀集供醫(yī)生或患者進(jìn)一步確認(rèn).整個疾病輔助診斷過程是在醫(yī)生和患者參與下的一個循環(huán)迭代的過程,包括前瞻性診斷和回顧性診斷.最后基于醫(yī)學(xué)專家篩選的真實(shí)病歷數(shù)據(jù)對本文建設(shè)的領(lǐng)域語義知識庫和提出的疾病輔助診斷方法進(jìn)行了評價,包括與文獻(xiàn)[1]中方法的對比、與基于統(tǒng)計的方法的對比.對比結(jié)果表明,本文方法解決了文獻(xiàn)[1]中方法存在的問題和不足.同時,與基于統(tǒng)計的方法對比,本文方法可以避免“冷啟動”問題,可以快速支撐大量常見疾病的輔助診斷.采用本文的方法,有望為基層全科醫(yī)生提供常見疾病的輔助診斷服務(wù),或者為患者提供疾病自診服務(wù).
但本文的方法仍然存在一些不足,這也是下一步需要研究的工作.
1)引入更多的診斷要素:針對患者疾病自診的場景,通過問卷的方式進(jìn)一步獲取年齡、性別、既往病史、家族病史等診斷要素;針對院內(nèi)的輔助診斷,可以從患者的歷史診療記錄中獲取既往病史、家族病史、歷史檢查檢驗(yàn)結(jié)果等信息,也可能得到最新的查體、檢查、檢驗(yàn)等結(jié)果數(shù)據(jù);
2)對一些常見的疾病直接建立輔助診斷規(guī)則,先進(jìn)行基于規(guī)則推理的疾病診斷;
3)對本文的方法進(jìn)行改進(jìn),一方面需要考慮多維診斷要素之間存在的關(guān)聯(lián)關(guān)系和權(quán)重,另一方面需要考慮不同診斷要素對疾病診斷的貢獻(xiàn)作用.