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