陳德彥,趙 宏,張 霞
1(東北大學 計算機科學與工程學院,遼寧 沈陽 110169)
2(計算機軟件國家工程研究中心(東北大學),遼寧 沈陽 110179)
3(沈陽東軟智能醫(yī)療科技研究院有限公司,遼寧 沈陽 110179)
4(東軟集團股份有限公司,遼寧 沈陽 110179)
疾病診斷是醫(yī)療活動中重要的環(huán)節(jié)之一,它為患者的治療和預后提供了一個堅實的基礎[1].疾病診斷的質量主要依賴醫(yī)生所掌握的醫(yī)療知識以及醫(yī)療經(jīng)驗,但單個醫(yī)生所掌握的醫(yī)療知識以及積累的醫(yī)療經(jīng)驗仍然有限,如何提升醫(yī)生(尤其是沒有經(jīng)驗的醫(yī)生)的臨床診療水平并減輕醫(yī)生的工作負荷,是一個亟待解決的問題.這方面的研究在早期主要有專家系統(tǒng),專家系統(tǒng)的思想是,將專家的經(jīng)驗知識進行形式化,想以此代替專家進行診斷.從專家那里提取經(jīng)驗知識是一種勞動密集性的工作,由于專家的診斷往往具有“直覺性”,所以很多時候專家都無法提供這種具有直接因果關系的經(jīng)驗知識.
隨著醫(yī)學科學的發(fā)展和醫(yī)院信息化水平的提高,臨床上積累了大量的診療知識和電子化的病歷數(shù)據(jù),醫(yī)生的診療經(jīng)驗也蘊藏在這些病歷數(shù)據(jù)中.相應地,云計算、大數(shù)據(jù)、人工智能(artificial intelligence,簡稱AI)等技術的出現(xiàn)和發(fā)展為這些數(shù)據(jù)的挖掘和利用提供了有力支撐.在這種有利條件下,基于數(shù)據(jù)挖掘和機器學習[2-5]算法的疾病輔助診斷和預測研究如雨后春筍般大量出現(xiàn).但這些研究大多都針對某個單病種或者??萍膊?其得出的疾病輔助診斷模型無法為大量基層全科醫(yī)生提供常見疾病的輔助診斷服務,也無法為患者提供大量常見疾病的自診服務.目前出現(xiàn)的智能導診服務機器人可以代替院內的導診護士向患者提供更加高效和精準的分診服務,但它們也依賴對大量常見疾病的輔助診斷服務.
本體(ontology)是共享概念模型的明確的、形式化的規(guī)范說明[6],其提供了一種結構化地表示領域知識的形式化方法,并提供了推理能力,構造本體可以實現(xiàn)某種程度的知識共享和重用.由于本體具有的強大的知識表示和推理能力,已經(jīng)在很多領域得到了廣泛的應用,例如語義Web[7]、知識工程、自然語言處理、信息獲取、信息集成、生物醫(yī)學等領域,用于領域問題求解、異構信息源之間的交互、輔助組織中人與人之間的溝通等.在生物醫(yī)學領域,已經(jīng)出現(xiàn)了大量基于本體構建的知識庫[8],例如基因本體[9]、人類表型本體[10]、疾病本體[11]等.相應地,在健康醫(yī)療領域也出現(xiàn)了大量基于本體知識庫的疾病輔助診斷研究[1,12-14]和其他應用研究[15-17].基于本體知識庫可以快速支撐大量常見疾病的輔助診斷.
疾病診斷是一個不斷迭代的復雜過程,包括前瞻性診斷(prospective diagnoses)和回顧性診斷(retrospective diagnoses)[1].前瞻性診斷即診斷過程,在這個過程中醫(yī)生不斷收集關于患者的癥狀、檢查結果和病史等詳細信息,以縮小疾病診斷的范圍.在這個過程的某個點上,醫(yī)生可能積累了足夠多的信息,這時可以給出一個或幾個最可能的最終診斷.前瞻性診斷是一個基于收集到的患者信息的前向推理(forward reasoning)過程.在得出最終診斷以后,醫(yī)生還需要通過回顧性診斷來驗證最終診斷的正確性.一方面,驗證最終診斷中疾病關聯(lián)的體征、癥狀、異常指標等是否與醫(yī)生收集到的患者的信息相一致;另一方面,最終診斷中的疾病可能還表現(xiàn)有其他一些醫(yī)生未收集到的信息,醫(yī)生需要基于此作進一步的收集和確認,這個過程是一個反向推理(backward reasoning)的過程.
在健康醫(yī)療領域的本體知識庫中,圍繞疾病建立了其與體征、癥狀、檢查、病因、藥物、手術等之間的靜態(tài)關聯(lián)關系.一種疾病可以表現(xiàn)出多種癥狀,相同的癥狀也可能出現(xiàn)在多種疾病中,不同的疾病可能表現(xiàn)出一個或者多個相同的癥狀.醫(yī)生在基于收集到的患者信息對疾病進行篩查時,需要對篩查出的疾病進行可能性大小排名.常規(guī)的思路是,假定收集到患者的5 個癥狀,本體知識庫中某個疾病d1匹配了其中的4 個癥狀,而另一個疾病d2匹配了其中的3 個癥狀,那么可以認為患者患疾病d1的概率比d2要大,為此,在篩查出的疾病結果排序中,d1排在d2的前面.以上思路的假設是,所有癥狀于疾病診斷的重要性是相同的,而實際情況并非如此.雖然由于存在個體差異,相同疾病于不同的患者可能表現(xiàn)出不同的癥狀,但通常某種疾病于大多數(shù)人會表現(xiàn)出一些相同的典型癥狀,比如感冒的典型癥狀有咳嗽、流鼻涕、流眼淚、發(fā)燒、食欲不振等,糖尿病的典型癥狀有“三多一少(多飲、多食、多尿、體重減輕)”等.所以,雖然不同的疾病可能表現(xiàn)出一些相同的癥狀,但這些疾病表現(xiàn)出的典型癥狀不一定相同.或者說,相同癥狀于不同疾病的判斷權重可能是不一樣的.
針對以上問題,基于癥狀來診斷疾病的關鍵點是給出每一個癥狀于疾病診斷的重要性.對此,文獻[1]進行了研究,提出這個重要性將基于癥狀被包含的疾病數(shù)量來給出.比如,肌無力(muscle weakness)是一個在許多疾病中都出現(xiàn)的癥狀,因此它于疾病診斷的貢獻很小;而另一個癥狀,心動過緩(bradycardia)是另一小簇疾病特有的癥狀,如果患者提供的癥狀中包含了這個癥狀,那么該患者患有的疾病很有可能落在這一小簇疾病中.基于此推理,文獻[1]提出了用于計算本體知識庫中癥狀s的權重(weight)ws的算法,并基于ws提出了計算與患者輸入癥狀集S相關的疾病di的相關度(relevancy)wi的算法,然后基于wi對篩查出的相關疾病進行排序.但文獻[1]中計算wi的算法存在以下3 點明顯問題.
(1)wi的取值大于1,且最小值為1.當疾病di關聯(lián)了患者輸入癥狀集S中的所有癥狀時,wi的取值為1;否則,wi的值大于1.由于疾病di與患者輸入癥狀集S的相關度是一個概率,從概率的含義上講,wi的取值不可能大于1;如果wi的取值為1,表示必然事件,即疾病di一定與該患者相關.所以,文獻[1]中計算wi的算法存在明顯的錯誤.
(2)根據(jù)計算wi的算法,當疾病di關聯(lián)的患者輸入癥狀集S中的癥狀的∑ws越小時,wi的取值反而越大,這明顯與上面文獻[1]中的癥狀重要性推理結論相悖.
(3)在計算wi的算法中,分子的取值始終為∑s∈S ws,癥狀集S中與疾病di沒有關聯(lián)的癥狀于疾病di的相關度計算是沒有作用的,而知識庫中與疾病di關聯(lián)的所有癥狀對疾病di的診斷都是有貢獻作用的,這與靜態(tài)知識庫的假設基礎有關,詳見下面對文獻[1]不足點的分析.
除此以外,文獻[1]中計算wi的算法還存在以下兩點不足.
(1)未考慮知識庫中與疾病di關聯(lián)的其他癥狀(不在患者輸入癥狀集S中的癥狀)的影響作用.本體知識庫中的每種疾病都關聯(lián)了一定數(shù)量的癥狀,這種靜態(tài)關聯(lián)的假設基礎是,疾病關聯(lián)的所有癥狀共同作用于該種疾病.也即,如果一位患者表現(xiàn)出的癥狀集S完全覆蓋了某種疾病關聯(lián)的所有癥狀,沒有多余癥狀,也沒有缺失的癥狀,那么可以認為患者就是得了這種疾病.在這個假設條件下,如果兩種疾病都包含了患者輸入的所有癥狀或相同癥狀,并不能認為這兩種疾病與患者的相關度是相同的,還需要考慮這兩種疾病關聯(lián)的其他癥狀的影響作用.
(2)未對篩查出疾病集中的疾病進行回顧性驗證,即未根據(jù)篩查出的疾病集合評估和推薦與患者輸入癥狀集S中的癥狀最相關的其他癥狀,供醫(yī)生或患者確認;進而基于初始收集到的患者癥狀集S和患者再次確認的癥狀結果對疾病篩查結果集進行調整,并重新計算調整后的疾病集中的疾病的相關度.
針對以上文獻[1]中疾病輔助診斷算法存在的明顯問題和不足,本文進行了改進和完善.本文的貢獻如下.
(1)提出了一種基于領域語義知識庫的疾病輔助診斷方法,包括前瞻性診斷和回顧性診斷.該方法分別給出了計算領域語義知識庫中癥狀s的權重ws的算法、與收集到的患者癥狀集S中一個或者多個癥狀相關聯(lián)的疾病di的相關度wi的算法、與癥狀集S中的癥狀最相關的癥狀集Srel的算法.
(2)選取了6 種常見疾病的臨床病歷數(shù)據(jù)對本文提出的方法進行了評價.對于每一份病歷,從患者主訴和現(xiàn)病史中抽取癥狀信息作為患者輸入的癥狀集.基于該癥狀集和本文提出的方法獲得相關疾病列表及疾病相關度排名.從疾病相關度排名中,選取Top-1(首診斷)和Top-3(前3 診斷)分別與病歷數(shù)據(jù)中醫(yī)生給出的診斷進行比較.同時,與文獻[1]中的方法和基于統(tǒng)計的方法就診斷命中率進行了比較.
本文第1 節(jié)給出領域語義知識庫的相關定義.第2 節(jié)介紹本文的疾病輔助診斷方法所依賴的領域語義知識庫的構建方法.第3 節(jié)給出本文的疾病輔助診斷方法.第4 節(jié)對本文提出的疾病輔助診斷方法進行評價.最后對本文進行總結,并指出下一步的研究工作.
定義1(領域本體定義(domain ontology schema)).領域本體定義通過捕捉某個領域中共同認可的概念、概念的屬性、概念間的語義關系(包括分類關系和非分類關系)及相關語義約束來描述該領域的知識.記Odomain表示領域本體定義,其定義如下:
Odomain=〈C,A,R,X,I〉.
C表示概念(concept)集,概念又稱為類(class),用于表達具有某類相似特征的個體(individual)的集合,個體又稱為實例(instance).例如,概念person 代表所有個體人的集合.A表示所有概念的屬性(attribute)集,概念的屬性又稱為數(shù)據(jù)類型屬性(data type property),它描述概念所包含的實例本身的特征,例如個體“張三”的姓名、性別、身高、體重等屬性.R表示語義關系(semantic relation)集,語義關系又稱為對象屬性(object property),用于描述概念之間、數(shù)據(jù)類型屬性之間和對象屬性之間的分類關系(taxonomic relation)或者實例之間的非分類關系(nontaxonomic relation).例如,概念person 可以進一步分為兩個子概念man 和woman,個體“張三”和“李四”之間可能具有“好友”關系.X表示公理集,公理(axiom)用于定義概念、屬性和關系之上的語義約束.例如,約束概念person的生日屬性只能有一個值,或者其在生物學意義上的父親和母親都具有唯一的值.I表示實例數(shù)據(jù)集,用于描述領域中共同認可的常識知識.例如,描述“2 型糖尿病”的表現(xiàn)癥狀有“多飲”“多食”“多尿”“體重減輕”等.本體定義中一般不包含實例數(shù)據(jù),除非用于表達一般性的領域常識知識,即本體定義中的實例描述不針對任何特定的應用場景,是領域內共同認可的知識.僅包含實例數(shù)據(jù)的RDF(resource description framework)[18]描述不能稱為本體定義[19].W3C 推薦的本體標準描述語言有RDF、RDFS(RDF schema)[20]和OWL(Web ontology language)[21].
定義2(領域實例數(shù)據(jù)(domain instance data)).領域實例數(shù)據(jù)為基于領域本體定義中的語義組件來描述的領域中的個體的知識.例如,可以定義一個people 本來用于描述個體“張三”,或者定義一個疾病本體用于描述“2型糖尿病”.記Idomain表示領域實例數(shù)據(jù),其定義如下:
Idomain={(s,p,o)|s∈I,p∈A∪R,o∈I∪V}.
(s,p,o)表示描述實例數(shù)據(jù)的陳述或稱為三元組(triple),s為某個實例對象,I表示實例對象集,p表示用于描述實例對象的屬性或者語義關系,A和R分別表示描述I中實例對象所用到的屬性集和語義關系集,o表示屬性或語義關系的取值,或者為實例對象,或者為字面值(literals),V表示字面值的集合.
定義3(領域語義規(guī)則集(domain semantic rule set)).領域語義規(guī)則同時服務于領域本體的定義和領域實例數(shù)據(jù)的描述.一方面,用于描述領域中領域專家所獲得的啟發(fā)式經(jīng)驗知識;另一方面,用于補充本體描述語言的語義描述能力.記Fdomain表示領域語義規(guī)則集,其定義如下:
Fdomain={r1,r2,...,ri,...,rn},n≥0.
ri表示其中一條語義規(guī)則.語義規(guī)則是典型的條件語句:if-then 子句,只有當特定陳述(statement)集合為真時,才會添加新的知識.例如,使用語義規(guī)則描述疾病診斷的知識,當收集到的某位患者的信息滿足某條疾病診斷規(guī)則的條件時,可以基于規(guī)則推理得出疾病診斷結果并建立該患者與該疾病的語義關系.
語義Web 層次結構[22]提供了多種知識表示形式,包括從RDF 到最新版本的OWL 等多種格式,每一層都對表達能力進行了進一步的擴展,并且允許用戶根據(jù)語義程序具體所需的語義量來采用相應的表示方式.但本體描述語言在表達能力和靈活性方面仍然存在一些不足,語義規(guī)則用于擴展本體描述語言的描述能力以及靈活性.W3C 建議的語義規(guī)則描述語言為SWRL(semantic Web rule language)[23].
定義4(領域語義知識庫(domain semantic knowledge base)).領域本體定義、領域實例數(shù)據(jù)和領域語義規(guī)則集一起構成了領域語義知識庫.記SKBdomain表示領域語義知識庫,其定義如下:
SKBdomain=〈Odomain,Idomain,Fdomain〉.
領域本體定義的結束,便是領域語義知識庫構建的開始[24].基于領域本體定義和語義規(guī)則來描述具體的實例,形成實例數(shù)據(jù)和語義規(guī)則集,以領域本體定義作為領域背景知識,以領域實例數(shù)據(jù)和語義規(guī)則集作為具體的知識,它們一起形成了面向領域特定應用需求的語義知識庫.例如,基于健康醫(yī)療領域本體定義構建面向慢性病患者的健康風險評估、疾病輔助診斷、疾病干預方案(藥物、運動、飲食、心理、睡眠等)、遠程監(jiān)護服務、健康知識問答服務、健康教育/咨詢服務等需求的語義知識庫.
W3C 推薦的針對語義知識庫的語義層(即RDF 層)查詢標準語言為SPARQL[25],這種查詢語言不僅理解RDF 的語法,而且理解RDF 的數(shù)據(jù)模型和RDF 詞匯的語義,幾乎所有的RDF 查詢工具都提供了對SPARQL 查詢語義的支持[22].
由于領域知識的專業(yè)性,目前公認領域本體的開發(fā)需要領域專家的參與,并由知識工程師將領域專家提供的領域知識建模并形式化為可被計算機處理和共享利用的領域本體知識.但又由于領域知識體系的復雜性,完全由人工從頭構建幾乎是不可能的,并且在時間上也是不可接受的.所以本體工程[22]以及幾乎所有本體建模方法[26-31]都強調在基于本體構建領域語義知識庫之前,考慮集成和復用已經(jīng)存在的領域本體知識庫.例如,通過本體集成(ontology integration)[32]和本體映射(ontology mapping)[33,34]的方法來快速構建所需要的領域本體知識庫;或者采用本體學習(ontology learning)[35]技術自動或半自動地從領域數(shù)據(jù)源中獲取領域知識,并基于本體進行描述,領域數(shù)據(jù)源包括領域中的結構化、半結構化和非結構化數(shù)據(jù);或者從其他開放語義知識庫中抽取可復用的領域知識.例如,Freebase[36-38]、DBpedia[39]、YAGO[40]等.本文擬采用從開放語義知識庫中抽取可復用的領域知識,考慮到本文的研究目的,需要獲取關于疾病、癥狀及其語義關系相關的知識.為此,針對這部分知識的正確性和完整性,和醫(yī)學專家一起,對Freebase、DBpedia、YAGO 等開放語義知識庫進行了對比分析,最終選擇了Freebase 作為抽取的數(shù)據(jù)源.
Freebase 是一個實用的、可伸縮的、圖形化的、結構化的一般人類知識的數(shù)據(jù)庫,用戶可以在一個開放的平臺上協(xié)作創(chuàng)建、結構化和維護其內容.Freebase 數(shù)據(jù)被表示為三元組(又稱為事實)的格式,可以被可視化表示為一個有向圖.Freebase 數(shù)據(jù)來自大量高質量的開放數(shù)據(jù)源,例如Wikipedia[41]、MusicBrainz[42]、WordNet[43]等.Freebase 已經(jīng)成為LOD(linked open data)[44]項目的一個重要的數(shù)據(jù)源.Freebase 以每周為單位,將其數(shù)據(jù)在CC-BY[45]許可下發(fā)布為N-Triples[46]RDF 格式的dump 文件.該文件采用gzip 進行壓縮,解壓后為一個單一的文本文件.例如,在2014 年8 月下載的gzip 壓縮包的大小為22GB,解壓后大小為250GB,共包含約19 億個三元組.Freebase RDF dump 包包含了11 個實現(xiàn)域(implementation domain)、5 個OWL 域和89 個主題域(subject matter domain)[47].Freebase 的medicine 主題域描述了健康醫(yī)療領域的本體定義和領域實例數(shù)據(jù)(即領域常識知識).例如,medicine 主題域的本體定義中描述了疾病、癥狀、病因、風險因素、藥物等相關概念和屬性,并基于該本體定義描述了健康醫(yī)療領域的一些常識知識,即由相關概念標注的實例數(shù)據(jù)及其語義關系.
本文的研究選擇直接從Freebase RDF dump 包中抽取medicine 主題域的知識.在完全理解與Freebase 相關的概念、Freebase 的知識表示模型和Freebase RDF dump 包的結構特征的情況下,結合Linux 下的命令行工具(例如gzip、sed、grep、cat、wc、head、tail 等)、shell 腳本、Apache Jena[48]提供的相關工具和SPARQL 查詢,設計和實現(xiàn)了一種從Freebase RDF dump 中快速、準確、完整地抽取某個或者某幾個領域的知識的方法[49].該方法包括6 個主要步驟.
1)數(shù)據(jù)預處理.數(shù)據(jù)預處理的目的有兩個:(a)縮減數(shù)據(jù)包的規(guī)模,以有利于對其進行存儲和處理.該方法采用Linux 下的命令行工具和shell 腳本對數(shù)據(jù)包進行預處理.一方面,將N-Triples 格式轉換為Turtle[50]格式,這將使得數(shù)據(jù)包的規(guī)模減少約一半;另一方面,刪除實現(xiàn)域中的事實(這些事實用于內部授權管理或者鏈接到外部資源,對于領域知識庫用戶來說并不需要或者并不關心),這可以使數(shù)據(jù)包的規(guī)模再減少約一半.(b)刪除和處理非法格式的三元組,這些非法格式的三元組會導致在將數(shù)據(jù)包加載到存儲中時發(fā)生中斷.
2)數(shù)據(jù)裝載.使用Jena 提供的TDB[51]作為RDF Store(又稱為triple store),使用Jena 提供的tdbloader 命令行工具將預處理后的數(shù)據(jù)包加載到TDB 中.
3)存儲發(fā)布.使用Jena 提供的Fuseki SPARQL Server[52]對TDB 進行公開,以利用Fuseki 提供的SPARQL查詢服務端點(endpoint)實現(xiàn)對TDB 存儲的查詢.
4)知識抽取.通過構造SPARQL 查詢分別抽取medicine 領域的本體定義Omedicine(包括類定義和屬性定義)和實例數(shù)據(jù)Imedicine.Freebase RDF dump 包中沒有領域語義規(guī)則集的定義.
5)數(shù)據(jù)后處理.包括兩個方面,一方面,在Freebase RDF dump 中,不區(qū)分數(shù)據(jù)類型屬性和對象屬性,為此需要對其進行處理;另一方面,在Freebase RDF dump 中,所有主題域的名稱空間相同,為此,需要結合領域需求對其進行替換.
6)數(shù)據(jù)集成和處理.包括3 個方面:(a)將后處理后的Omedicine和Imedicine整合為SKBmedicine;(b)將采用MID(machine identifier)標識的類和屬性表示為人類可讀的ID,在Freebase 中,所有類和屬性既有唯一的MID,也有唯一的人類可讀的ID,而所有實例只有唯一的MID,其人類可識別的標識通過標注屬性rdfs:label 進行描述;(c)將SKBmedicine轉換為本體標準語言描述的格式.Freebase RDF dump 包雖然采用RDF 來進行描述,但其中的某些語義描述組件并未采用本體標準描述語言定義的語義組件,而是采用了Freebase 實現(xiàn)域中的一些語義組件.例如,字面值的類型采用了Freebase type 域中的類型定義,還有一些標注屬性使用了Freebase common 域中的屬性定義等.所以還需要將抽取的結果轉換為本體標準語言描述的形式,以利用通用的語義Web 工具對其進行處理.
由于本文討論的疾病輔助診斷只依賴medicine 主題域中的疾病、癥狀實例及其語義關系,所以最后由醫(yī)學專家對這部分知識內容進行了校對和進一步的完善.圖1 所示為使用本體編輯工具Protégé[53]打開的、最終得到的medicine 領域語義知識庫SKBmedicine,其規(guī)模說明如下.
1)以Turtle 格式表示的medicine 領域語義知識庫的文件(擴展名為.ttl)大小為1.6GB,裝載到TDB 中以后,占用的文件系統(tǒng)存儲空間大小為1.3GB(比原始文件還要小).
2)知識庫中包含70 個概念、63 個數(shù)據(jù)類型屬性、156 個對象屬性、886 272 個實例和7 073 580 個三元組.
3)疾病實例有7 367 個(不含同義實例),其中,3 590 個疾病實例包含了合計3 802 個同義實例,這些同義實例被歸一化到(通過owl:sameAs 語義組件)其對應的標準疾病實例(下文所指疾病實例均指標準疾病實例)中.

Fig.1 The domain semantic knowledge base in medicine圖1 Medicine 領域的語義知識庫
4)癥狀實例有1 444 個(不含同義實例),其中,1 112 個癥狀實例包含了合計1 352 個同義癥狀,它們也被歸一化到其對應的標準癥狀實例(下文所指癥狀實例均指標準癥狀實例)中.
5)包含從標準疾病實例指向標準癥狀實例的語義關系6 028 個.
在SKBmedicine中,疾病實例通過屬性med:medicine.disease.icd_9 和med:medicine.disease.icd_10 分別指向了ICD-9 和ICD-10 國際疾病分類[54].同樣,癥狀實例也通過屬性med:medicine.symptom.icd_9 和med:medicine.symptom.icd_10 分別指向了ICD-9 和ICD-10 國際疾病分類.在ICD-10 中,以R 開頭的編碼是關于癥狀和體征的分類.這里,med 為medicine 主題域的名稱空間前綴.
在Freebase 中,所有主題域中的概念只有頂層概念.例如,在medicine 主題域中,疾病和癥狀只有一個頂層概念,疾病之間的分類關系通過屬性med:medicine.disease.parent_disease 和med:medicine.disease.includes_diseases來實現(xiàn).即對于疾病來說,除了頂層概念,都是實例,實例間通過屬性來表達分類關系.同樣,癥狀實例之間的分類關系通過屬性med:medicine.symptom.parent_symptom 和med:medicine.symptom.includes_symptoms 來實現(xiàn).這與SNOMED CT[55]不同,在SNOMED CT 本體(最新版本為ontology-2018-12-26_09-14-08.owl)中,所有疾病都為概念,概念之間通過owl:subClassOf 屬性建立分類關系.在Freebase 中,所有實例只有MID.例如,ns:m.0c58k 為糖尿病實例的MID,ns為Freebase 的默認名稱空間.在SNOMED CT 本體中,所有概念ID 采用SNOMED CT 的約定編碼.對于語義上相同的疾病,其在Freebase 和SNOMED CT 本體中的rdfs:label 標注屬性值并不完全相同.所以,Freebase 的medicine 主題域中的知識和SNOMED CT 本體之間并未建立聯(lián)系.
SKBmedicine中癥狀s于疾病診斷權重ws的計算,依賴于當前知識庫中包含此癥狀s的疾病的數(shù)量(即與癥狀s具有語義關系的疾病的數(shù)量)和知識庫中當前的疾病總數(shù),一旦這兩個數(shù)量中的任何一個發(fā)生變化,即應對ws進行重新計算.
假定SKBmedicine中包含的疾病總數(shù)為N,對于每一個癥狀s,我們定義Ns為與癥狀s具有語義關系的疾病的數(shù)量,ws是癥狀于疾病診斷的權重.那么ws的計算方法如下:

其中,Ns≥1,ws≤ 1.從公式(1)可見,與癥狀s具有語義關聯(lián)的疾病的數(shù)量Ns越大,那么癥狀s于疾病的診斷權重越小.對方程取平方的目的是為了強調隨著關聯(lián)疾病數(shù)量的增加,所表現(xiàn)出來的癥狀權重之間的差異性.分母取N-1 是因為當與癥狀s具有語義關聯(lián)的疾病的數(shù)量Ns為1 時,確保ws為1,即基于該癥狀,s可唯一確定一種疾病.ws與Ns的關系如圖2 所示.

Fig.2 The relation between the weight of a symptom and the number of the diseases related to the symptom圖2 癥狀于疾病診斷的權重和與該癥狀具有語義關聯(lián)的疾病數(shù)量的關系
基于公式(1)可以為知識庫中的每個癥狀s計算出一個ws,如圖3 所示.

Fig.3 Weights of symptoms in the domain semantic knowledge base for disease diagnosis圖3 領域語義知識庫中癥狀于疾病診斷的權重
基于知識庫中每個癥狀s的ws,可以計算知識庫中疾病di與患者輸入癥狀集S的相關度,從而為醫(yī)生或患者推薦可能的疾病列表及其相關度排名.
假定知識庫中的癥狀數(shù)為M,疾病數(shù)為N;患者輸入的癥狀集為S={s1,s2,...,sj},1≤j≤M;知識庫中與該癥狀集S中的一個或者多個癥狀具有語義關聯(lián)的疾病構成的集合為D={d1,d2,...,di},1≤i≤N;其中,疾病di在知識庫中關聯(lián)的癥狀集合為Si,Si′=Si∩S;疾病di與患者輸入癥狀集S的相關度為wi,那么wi的計算方法如下:

公式(2)的分子僅考慮了癥狀集S中和疾病di相關聯(lián)的癥狀,因為其他癥狀于di的相關度計算沒有作用.而分母考慮到了知識庫中與疾病di關聯(lián)的所有癥狀,因為它們共同作用于疾病di的診斷.
假定患者輸入“咽部異物感”癥狀,基于公式(2)可以計算出知識庫中與此癥狀關聯(lián)的疾病的相關度,如后文的圖4(a)所示.
在篩查出與患者輸入癥狀集S相關聯(lián)的疾病集合D以后,還需要對集合D中的疾病進行回顧性驗證,即根據(jù)篩查出的疾病集合D評估和推薦與患者輸入癥狀集S中的癥狀最相關的其他癥狀,供醫(yī)生或患者確認;進而基于初始收集到的患者癥狀集S和患者再次確認的癥狀結果對疾病篩查結果集進行調整,并重新計算調整后疾病集D中疾病的相關度.
與患者輸入癥狀集S中的癥狀最相關的癥狀集Srel的推薦算法描述如下.
輸入:患者初次輸入的癥狀集S.
輸出:與患者輸入癥狀集S中的癥狀最相關的Top-6(這里僅保留6 個,可以根據(jù)需要調整)個癥狀組成的癥狀集Srel.
S-1:首先從記錄的歷史輸入癥狀組合中進行推薦.系統(tǒng)自動對不同患者輸入和選擇的歷史癥狀組合進行記錄,記錄方式為{s1,s2,...,si}f,癥狀組合中的癥狀不分先后順序,f表示該癥狀組合發(fā)生的頻率.如果患者輸入的癥狀集S落入某一個或者多個歷史癥狀組合中,則按f值從高至低,從某一個或者多個歷史癥狀組合中選取除集合S中的癥狀以外的Top-6 個癥狀作為Srel,轉到步驟S-6;如果不夠6 個癥狀,則以實際可選擇的癥狀數(shù)目作為Srel,轉到步驟S-6;如果沒有多余的癥狀或者S未落入任何一個歷史癥狀組合,則轉到步驟S-2.注意,這個步驟選取癥狀時,不考慮癥狀的權重,而是按癥狀出現(xiàn)的先后順序依次選取.
S-2:從知識庫中查詢與癥狀集S中的一個或者多個癥狀具有語義關聯(lián)的疾病集合D={d1,d2,...,di},1≤i≤N,N表示領域語義知識庫中的疾病數(shù)量.
S-3:設疾病di在領域語義知識庫中關聯(lián)的癥狀集合為Si,求S′=S1∪S2∪...∪Si.
S-4:對集合S′中的癥狀按照其ws的大小進行降序排列得到S*.
S-5:從S*中選取前Top-6 個癥狀作為與患者輸入癥狀集S最相關的癥狀集合Srel;如果Top-6 個癥狀中包含癥狀集合S中的癥狀,則跳過,往后依次選取.
S-6:輸出Srel.
如圖4(a)所示,根據(jù)患者輸入的癥狀“咽部異物感”推薦了6 個最相關的癥狀;當從推薦的6 個癥狀中進一步選取了3 個癥狀:“咽喉疼痛”“聲嘶”“咽部充血”以后,將基于患者先后兩次輸入的共4 個癥狀重新計算疾病的相關度,并調整排名,如圖4(b)所示.同時,也會基于這4 個癥狀重新推薦最相關的癥狀集合Srel.

Fig.4 Calculation of disease relevancy and recommendation of related symptoms圖4 疾病相關度計算及相關癥狀推薦
整個疾病輔助診斷過程是在醫(yī)生和患者參與下的一個循環(huán)迭代的過程.對于基層全科醫(yī)生來說,可以從推薦的疾病列表中查看疾病的詳細信息(包括疾病介紹、就診科室、高發(fā)群體、有無傳染性、癥狀、檢查、診斷和鑒別、治療、飲食宜忌、預防等)以判斷是否需要做進一步的檢查以及做哪些檢查;由于推薦的疾病列表中的疾病在癥狀表現(xiàn)上具有一些相似性,所以可以通過診斷和鑒別信息進行鑒別診斷,如圖5(b)所示.如果用于患者自診,患者可以通過選擇推薦疾病列表中的某種疾病獲得所在區(qū)域的醫(yī)療資源,包括所在區(qū)域的醫(yī)院、科室以及醫(yī)生的推薦.推薦過程還可以考慮對區(qū)域內醫(yī)療機構的客觀評價(例如,診療水平、診療費用、診療效率等指標)以及患者的歷史就診行為偏好等,如圖5(a)所示;或者查看疾病的詳細信息,并與自身表現(xiàn)進行對照.

Fig.5 Medical resource recommendation and disease details圖5 醫(yī)療資源推薦及疾病詳細信息
為了對本文建設的領域語義知識庫和提出的疾病輔助診斷方法進行評價,本文從某個地市的健康醫(yī)療大數(shù)據(jù)中心隨機選取了6 種常見疾病的臨床病歷數(shù)據(jù),這些病歷數(shù)據(jù)來自多個不同的三甲醫(yī)院,每份病歷數(shù)據(jù)包括患者的性別、年齡、主訴、現(xiàn)病史、既往史、個人史、家族史、過敏史、查體、輔助檢查、診斷等信息,這里只用到了主訴、現(xiàn)病史和診斷信息.但病歷數(shù)據(jù)的質量并不高,比如,很多病歷數(shù)據(jù)的主訴字段的值為空,或者為“未填寫”,有些病歷數(shù)據(jù)的主訴內容為“急性咽炎復查”“咨詢”“要求彩超”等.這里在選取病歷數(shù)據(jù)時,首先過濾掉了這幾種情況的無效病歷數(shù)據(jù),然后組織醫(yī)學專家對選取的病歷數(shù)據(jù)做了進一步的篩查,過濾掉了一些質量不高的病歷數(shù)據(jù),即基于這些病歷數(shù)據(jù)中的主訴和現(xiàn)病史中的癥狀描述很難得出相應的診斷.
從病歷數(shù)據(jù)的主訴和現(xiàn)病史中抽取相關癥狀,作為患者輸入的癥狀集S,以病歷數(shù)據(jù)中的診斷作為參考診斷,基于本文建設的領域語義知識庫、公式(1)和公式(2)獲取相關疾病列表及其相關度排名,分別選取Top-1 診斷(第1 診斷)和Top-3 診斷(前3 診斷)與參考診斷進行比較,如果Top-1 診斷和參考診斷一致,表明Top-1 命中;否則,如果Top-3 中的某個診斷和參考診斷相一致,則表明Top-3 命中.以病種為單位,分別統(tǒng)計Top-1 和Top-3的命中率.然后從如下兩個方面對本文建設的領域語義知識庫和提出的疾病輔助診斷方法進行評價.
1)與文獻[1]中的方法就診斷命中率進行比較
采用本文建設的領域語義知識庫和選取的6 種常見疾病的臨床病歷數(shù)據(jù),分別基于本文的方法和文獻[1]中的方法統(tǒng)計Top-1 和Top-3 命中率,比較在不同病歷規(guī)模情況下的命中率及其變化趨勢,如圖6 所示.
從圖6 可見,針對隨機選取的6 種常見疾病的Top-1 和Top-3 命中率,本文的方法均高于文獻[1]中的方法.在本文開始部分已對文獻[1]中方法存在的問題進行了詳細分析,采用文獻[1]中的方法,主訴和現(xiàn)病史中的癥狀與知識庫中對應參考診斷關聯(lián)的癥狀越不相關(當然,必須至少有一個癥狀相關),得到的疾病相關度wi反而越大.由于本文在選取病歷數(shù)據(jù)時有醫(yī)學專家的參與,所以病歷質量比較好,使得采用文獻[1]中的方法仍有少量病歷數(shù)據(jù)被命中.

Fig.6 Comparison of the diagnostic hit ratio between the method in this paper and the one in Ref.[1]圖6 本文方法和文獻[1]中方法的診斷命中率比較
根據(jù)對病歷數(shù)據(jù)來源地市的門/急診診斷的統(tǒng)計,急性上呼吸道感染(簡稱上感,又稱感冒)是發(fā)病率最高的疾病,廣義的上感不是一個疾病診斷,而是一組疾病,包括普通感冒、病毒性咽炎、喉炎、皰疹性咽峽炎、咽結膜熱、細菌性咽-扁桃體炎[56].急性上呼吸道感染的臨床表現(xiàn)癥狀幾乎涵蓋了急性支氣管炎、急性咽炎、慢性咽炎等疾病的癥狀,或者說這幾種疾病可能經(jīng)常被診斷為急性上呼吸道感染,所以急性上呼吸道感染的命中率相較急性支氣管炎、急性咽炎和慢性咽炎稍微高一些,急性支氣管炎、急性咽炎和慢性咽炎的命中率基本接近.與胃腸相關的疾病也是非常常見的疾病,具有很多共性的臨床表現(xiàn)癥狀.卵巢囊腫是婦科疾病中非常常見的疾病,但其臨床表現(xiàn)相對比較聚焦,所以卵巢囊腫的命中率相較其他幾種疾病都要高.
隨著病歷數(shù)的增加,雖然Top-1 和Top-3 命中率有少量波動,但變化幅度不大.由于領域語義知識庫保持不變,影響命中率的關鍵要素是來自主訴和現(xiàn)病史中的癥狀,又由于病歷數(shù)據(jù)是經(jīng)過醫(yī)學專家篩選后所得,同種疾病,每千份病歷數(shù)據(jù)之間的質量相差并不大,所以累計的Top-1 和Top-3 命中率變化幅度不大.
2)與基于統(tǒng)計的方法就診斷命中率進行比較
以主訴和現(xiàn)病史中的癥狀作為特征屬性,由醫(yī)學專家參與對特征屬性進行了選取,以癥狀的有無作為特征屬性的取值劃分,以病歷中的參考診斷作為分類標記,從篩選的6 種疾病的病歷數(shù)據(jù)中分別先后選取1 000、4 000 和8 000 份病歷數(shù)據(jù)作為訓練樣本,即合計的訓練樣本數(shù)分別為6 000、24 000 和48 000,并使用樸素貝葉斯分類[57]和決策樹分類[58]算法進行訓練,然后使用不同訓練樣本規(guī)模下訓練的模型分別對6 種疾病的各2 000份病歷(作為測試樣本)進行Top-1 和Top-3 命中率的統(tǒng)計,結果見表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)計結果可見,樸素貝葉斯分類和決策樹分類的命中率結果基本接近,整體上,樸素貝葉斯分類的命中率稍高,但針對其中卵巢囊腫疾病的命中率,兩者基本相當,主要原因仍是卵巢囊腫疾病的臨床表現(xiàn)癥狀更加聚焦.在訓練樣本數(shù)為6 000 時,Top-1 和Top-3 的命中率不及本文的方法;在訓練樣本數(shù)為24 000時,Top-1 和Top-3 的命中率有了顯著提升,但仍不及本文的方法;在訓練樣本數(shù)為48 000 時,Top-1 和Top-3 的命中率接近本文的方法,其中,基于樸素貝葉斯分類的方法,急性咽炎和慢性胃炎的Top-3 命中率稍高于本文的方法0.1%和0.7%,卵巢囊腫的Top-1 命中率高于本文的方法0.8%;基于決策樹分類的方法,卵巢囊腫的Top-1 命中率高于本文的方法0.3%.
綜上,文獻[1]中的方法存在明顯的問題和不足,基于樸素貝葉斯分類和決策樹分類的方法,在訓練樣本較少時,明顯不及本文的方法,在訓練樣本足夠大時,與本文的方法接近甚至高于本文的方法.當然,除了樣本的規(guī)模以外,樸素貝葉斯分類和決策樹分類方法的準確性依賴于特征屬性選取的有效性和樣本的質量.本文方法的準確性也依賴于兩個關鍵因素:領域語義知識庫的規(guī)模和質量,以及公式(1)和公式(2)的有效性,但是通過回顧性驗證可以提升本文方法的準確性.與樸素貝葉斯分類和決策樹分類方法相比,本文的方法具有如下優(yōu)勢.
1)避免“冷啟動”問題:即在沒有或沒有足夠的訓練樣本時,基于本文的方法可以達到更好的效果.
2)可以快速支撐大量常見疾病的輔助診斷:采用樸素貝葉斯分類和決策樹分類的方法,需要針對每種疾病選取有效的特征屬性,并準備足夠多的訓練樣本,結果的準確性對特征屬性的有效性和訓練樣本的質量比較敏感,很難在短期內提供對大量常見疾病的輔助診斷支持.而采用本文的方法則可以避開這些問題,快速支撐對大量常見疾病的輔助診斷.
當然,本文的方法也存在一些不足.一方面,領域語義知識庫的建立和維護是一項知識密集型的工作,需要領域專家的參與;另一方面,在訓練樣本足夠大時,本文的方法在準確性上不及樸素貝葉斯分類和決策樹分類的方法.
疾病診斷的質量主要依賴于醫(yī)療專家所掌握的醫(yī)療知識以及醫(yī)療經(jīng)驗,早期的專家系統(tǒng)(expert system,簡稱ES)[59]試圖通過對人類專家的問題求解能力的建模,采用AI 中的知識表示和知識推理技術來模擬通常由專家才能解決的復雜問題,從而達到或超過專家解決問題的能力水平.ES 中的知識通常為采用規(guī)則描述的專家擁有的啟發(fā)式經(jīng)驗知識,并采用基于規(guī)則推理(rule-based reasoning,簡稱RBR)的方法提供領域問題求解服務.從專家那里獲取知識的過程是一個時間密集型的過程,知識獲取困難,而且依賴專家的意見,專家的意見有時具有主觀性.文獻[60,61]結合本體知識庫和語義Web 規(guī)則實現(xiàn)了一個高血壓疾病的診斷模型,基于RBR 提供高血壓疾病的診斷推理.
在健康醫(yī)療領域,專家的經(jīng)驗知識往往蘊含于其診治過的患者的病歷數(shù)據(jù)中,如果能夠直接利用蘊含于這些病歷數(shù)據(jù)中的專家的經(jīng)驗知識,則將避開從專家那里直接獲取經(jīng)驗知識的瓶頸,因為知識獲取只不過是獲得過去發(fā)生過的案例(case).基于案例的推理(case-based reasoning,簡稱CBR)[62]分類法的研究即借鑒了這樣的思想.CBR 的底層思想是基于這樣一個假定:相似問題具有相似的解.例如,在醫(yī)療健康領域,通過收集和存儲醫(yī)療專家診治過的患者的病歷和治療方案,作為源案例庫,并基于源案例庫求解目標案例,即用來幫助診斷和治療新的患者.由于傳統(tǒng)AI 技術存在的知識獲取、記憶、維護等方面的問題,文獻[63]討論了實現(xiàn)智能醫(yī)療診斷系統(tǒng)的CBR 方法學、研究問題和技術方面.Ain Shams 大學的醫(yī)療信息研究組(medical informatics research group)基于CBR 技術開發(fā)了一個用于癌癥和心臟病診斷的系統(tǒng),文獻[63]也對此進行了討論.文獻[64]討論了CBR 在醫(yī)療領域的適宜性,指出了存在的問題、局限性和部分克服這些問題、局限性的可能性.在健康醫(yī)療領域,專家的知識包括理論知識和經(jīng)驗知識,針對典型、復雜的診療案例,專家會基于理論知識,經(jīng)驗知識,特定的空間、時間和患者個體情況做出綜合的診療建議推理.歷史診療案例雖然可能蘊含了一部分專家的理論知識和經(jīng)驗知識,但仍然脫離了大量專家知識的支撐,所以新舊案例適配(adaptation)的合理性是CBR 面臨的主要問題.
健康醫(yī)療大數(shù)據(jù)的出現(xiàn)也為利用數(shù)據(jù)挖掘和機器學習技術直接從大量的歷史病歷數(shù)據(jù)中獲取知識提供了可能性.文獻[2]基于決策樹和樸素貝葉斯算法提出了一種用于心臟疾病診斷的新方法,可以減少診斷需要輸入的屬性數(shù)量,從而減少診斷過程中需要對患者進行的實驗數(shù)量,以提升診斷的效率.文獻[3]使用減法聚類算法(subtractive clustering algorithm)開發(fā)了一個模糊推理系統(tǒng)(fuzzy inference system),并運用該系統(tǒng)對患者的MRI影像進行分類,以識別輕度認知障礙(mild cognitive impairment)、阿爾茨海默病(Alzheimer’s disease)和正常對照組(normal control).文獻[4]使用BP(backpropagation)學習算法訓練了一個多層感知機(multi layer perceptron),用于診斷和預測新生兒疾病(neonatal diseases).文獻[5]對有監(jiān)督機器學習算法在臨床上用于輔助診斷帕金森病(Parkinson’s disease)和進行性核上性麻痹(progressive supranuclear palsy)的可行性進行了評估.這些研究探討了數(shù)據(jù)挖掘和機器學習算法在某些單病種疾病輔助診斷和預測方面的應用效果.利用數(shù)據(jù)挖掘和機器學習技術構建的疾病診斷模型,可以提供比人工手段更高的疾病識別率和檢出效率.但針對不同病種,需要分別構建單獨的疾病診斷模型,所以短時間內還無法提供對大量常見疾病的輔助診斷服務.
在健康醫(yī)療領域,已經(jīng)積累了大量結構化的知識.例如,基于本體模型構建的領域語義知識庫.基于領域語義知識庫的方法可以快速提供大量常見疾病的診斷服務.文獻[12]探討了一些用于癌癥疾病的基于本體的醫(yī)療系統(tǒng)的技術問題,也提出了一種基于本體的用于癌癥疾病輔助診斷的方法學.該方法學能夠被應用于幫助患者、學生和醫(yī)生判斷癌癥的類型、癌癥所處的分期以及如何治療.文獻[13]提出了一種新的遺傳疾病鑒別診斷的數(shù)學模型,而不是傳統(tǒng)的基因突變分析方法.它通過本體描述了“基因型-表型”關聯(lián)關系.患者新出現(xiàn)的基因突變被映射到人類表型本體(human phenotype ontology)中的標準化詞匯表上.然后用這些術語進行鑒別診斷.將信息理論與模糊關系理論相結合,通過度量基于本體的語義相似度來實現(xiàn)鑒別診斷.該系統(tǒng)能夠診斷5 種復雜疾病的發(fā)生概率,即淋巴水腫產(chǎn)生綜合癥(lymphedema-distichiasis syndrome)、狄蘭吉氏癥候群(Cornelia de Lange syndrome)、科恩綜合癥(Cohen syndrome)和Smith-Lemli-Opitz 癥候群.文獻[14]基于同現(xiàn)(co-occurrence)和信息內容,提出了度量本體中術語間相似性以及使用本體中的術語標注實體間的語義相似性的方法.新的相似性度量方法被證明比現(xiàn)有的使用生物學途徑(biological pathway)的方法更好.該相似性度量方法使用與疾病相關的生物過程(biological processe)來評估疾病間的相似性,并使用已知疾病相似性的人工策劃的數(shù)據(jù)集對該方法進行了評價.此外,使用本體來對疾病、藥物和生物過程進行編碼,并演示了一種方法,該方法使用基于網(wǎng)絡的算法將有關疾病的生物學數(shù)據(jù)與藥物信息結合起來,從而為現(xiàn)有藥物找到新的用途.通過與現(xiàn)有的藥物相關臨床實驗進行對比,驗證了該方法的有效性.文獻[1]的研究工作是歐洲項目K4CARE[65]的一部分,該項目的目標是將醫(yī)療保健和一些西方和東歐國家的信息和通信技術(ICT)經(jīng)驗結合起來,以建立、實施和驗證一個基于知識的醫(yī)療保健模式,以向居家老年患者提供專業(yè)援助.該項目聚焦于9 種慢性疾病、2 種綜合征和5 個社會問題,使用CPO(case profile ontology)本體描述了與它們相關的知識,并使用SDA(state-decision-action)圖描述了相關的干預計劃.文獻[1]展示了該項目中開發(fā)的用于疾病診斷和本體個性化的方法和工具,其疾病診斷方法存在一些明顯的問題和不足,在本文的介紹部分已給出了詳細說明.
表3 對已有的疾病輔助診斷方法的研究進行了總結,分析了各自的優(yōu)勢和劣勢.這些方法除了在技術原理上不同以外,它們利用的數(shù)據(jù)也不一樣.比如,文獻[1]和文獻[12]的方法利用了患者的癥狀和體征數(shù)據(jù),文獻[13]的方法利用了患者的基因數(shù)據(jù),文獻[3]的方法利用了患者的MRI 影像數(shù)據(jù)等.有的數(shù)據(jù)(例如,癥狀和體征)比較好獲取,而有的數(shù)據(jù)(例如,基因數(shù)據(jù))的獲取就比較困難.
為了面向基層全科醫(yī)生提供大量常見疾病的輔助診斷服務以及面向患者提供疾病自診服務,本文的研究采用基于領域語義知識庫的疾病輔助診斷方法.針對現(xiàn)有研究的不足,本文進行了校正和完善.

Table 3 Comparison of the aided diagnosis methods for diseases表3 疾病輔助診斷方法比較
本文從Freebase RDF dump 包中抽取了medicine 主題域的知識,并基于本體構建了medicine 領域的語義知識庫,由醫(yī)學專家對疾病、癥狀及其語義關系進行了校驗和完善.在此基礎上,提出了基于領域語義知識庫的疾病輔助診斷方法,包括計算知識庫中癥狀于疾病診斷的權重、計算與患者輸入癥狀集相關的疾病列表及其相關度排名、推薦與患者輸入癥狀集中癥狀最相關的癥狀集供醫(yī)生或患者進一步確認.整個疾病輔助診斷過程是在醫(yī)生和患者參與下的一個循環(huán)迭代的過程,包括前瞻性診斷和回顧性診斷.最后基于醫(yī)學專家篩選的真實病歷數(shù)據(jù)對本文建設的領域語義知識庫和提出的疾病輔助診斷方法進行了評價,包括與文獻[1]中方法的對比、與基于統(tǒng)計的方法的對比.對比結果表明,本文方法解決了文獻[1]中方法存在的問題和不足.同時,與基于統(tǒng)計的方法對比,本文方法可以避免“冷啟動”問題,可以快速支撐大量常見疾病的輔助診斷.采用本文的方法,有望為基層全科醫(yī)生提供常見疾病的輔助診斷服務,或者為患者提供疾病自診服務.
但本文的方法仍然存在一些不足,這也是下一步需要研究的工作.
1)引入更多的診斷要素:針對患者疾病自診的場景,通過問卷的方式進一步獲取年齡、性別、既往病史、家族病史等診斷要素;針對院內的輔助診斷,可以從患者的歷史診療記錄中獲取既往病史、家族病史、歷史檢查檢驗結果等信息,也可能得到最新的查體、檢查、檢驗等結果數(shù)據(jù);
2)對一些常見的疾病直接建立輔助診斷規(guī)則,先進行基于規(guī)則推理的疾病診斷;
3)對本文的方法進行改進,一方面需要考慮多維診斷要素之間存在的關聯(lián)關系和權重,另一方面需要考慮不同診斷要素對疾病診斷的貢獻作用.