盛 明,陳玉思,張 勇,韓光潔,黃天昊,刑春曉
1(清華大學(xué) 信息技術(shù)研究院WEB與軟件技術(shù)研究中心,北京 100084) 2(河海大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 常州 213022) 3(北京外國語大學(xué) 信息科學(xué)技術(shù)學(xué)院,北京 100089)E-mail:shengming@tsinghua.edu.cn
自2012年以來,知識圖譜一直是研究的焦點[1],這一概念最初由谷歌提出,用來增強其搜索引擎的語義理解能力[2].知識圖譜的定義是一種基于圖的數(shù)據(jù)結(jié)構(gòu),由節(jié)點(實體)和標(biāo)記邊(實體之間的關(guān)系)組成[3].通常,將僅具有概念節(jié)點的知識圖譜定義為概念知識圖譜(Concept Knowledge Graph:CKG),將具有實例節(jié)點和事件節(jié)點的知識圖譜作為實例知識圖譜(Instance Knowledge Graph:IKG),以及將同時包含CKG和IKG作為事實知識圖譜(Factual Knowledge Graph:FKG).
常規(guī)知識圖譜的構(gòu)建系統(tǒng)架構(gòu)主要包括以下內(nèi)容:知識表示,知識圖譜構(gòu)建工具,如信息抽取和融合工具,以及知識的存儲和應(yīng)用.但是,常規(guī)策略不能直接應(yīng)用于特定領(lǐng)域的知識圖譜,更不用說構(gòu)建更專業(yè)的面向特定疾病領(lǐng)域的知識圖譜.原因之一是構(gòu)建專業(yè)的特定疾病知識圖譜需要抽取來自特定數(shù)據(jù)源的特定實體和關(guān)系,并且需要構(gòu)建針對不同疾病的專用語義網(wǎng)絡(luò).目前的醫(yī)療健康知識圖譜通常涵蓋廣泛的醫(yī)學(xué)知識領(lǐng)域:所有蛋白質(zhì)(UniProt),盡可能多的藥物(Drugbank),已知的許多藥物及其之間的相互作用(Sider),以及大量整合的知識圖譜,如Bio2RDF和LinkedLifeData[4].眾所周知,在醫(yī)學(xué)領(lǐng)域,有各種疾病、許多復(fù)雜的概念和關(guān)系,需要醫(yī)生提供大量具體的先驗知識來幫助辨識它們.更重要的是,醫(yī)生對不同疾病的實際需求可能各不相同.所以專家的幫助也起著重要作用.因此,構(gòu)建疾病特定知識圖的最重要方面在于三個部分:特定疾病的數(shù)據(jù)源,抽取特定實體和關(guān)系的構(gòu)建工具以及專家的幫助.
本文中將討論的問題是如何在先驗的醫(yī)學(xué)知識,醫(yī)院電子病歷(EMR)和醫(yī)生的幫助下構(gòu)建特定疾病的知識圖譜并將其擴展到其他疾病領(lǐng)域的知識圖譜.
為了解決這個問題,本文提出了一個知識圖譜構(gòu)建系統(tǒng)架構(gòu),可用于創(chuàng)建特定疾病的知識圖譜.該架構(gòu)使用來自醫(yī)院的電子病歷和工具集來幫助醫(yī)生提供專業(yè)知識以及整合現(xiàn)有的醫(yī)學(xué)知識.
為滿足多種需求,不同的知識圖譜構(gòu)建系統(tǒng)架構(gòu)采用不同的工具來處理大量的醫(yī)學(xué)知識或臨床數(shù)據(jù).表1中列出的構(gòu)建工具顯示了不同醫(yī)療健康知識圖譜所使用構(gòu)建工具的差異.
表1 構(gòu)建工具的比較Table 1 Comparisons of building frameworks
pMineR通過以有向圖的形式抽取醫(yī)學(xué)過程,并編碼臨床事件,這可以計算過程的真實模型.它還提供不同過程之間的圖形比較工具,允許醫(yī)生對給定臨床指南進行建模,并估計其性能以及醫(yī)療中可用資源的數(shù)量.cTAKES提供自然語言處理工具,如標(biāo)注系統(tǒng),用于從電子病歷中抽取實體和關(guān)系.I-KAT使用統(tǒng)一的Arden語言從MLM(醫(yī)療邏輯模塊)創(chuàng)建知識庫,以實現(xiàn)可共享性,并使用標(biāo)準(zhǔn)數(shù)據(jù)模型和術(shù)語來增強互操作性,同時通過應(yīng)用層的抽象降低復(fù)雜性以及為醫(yī)生提供友好的環(huán)境.
在本系統(tǒng)架構(gòu)中,采用了多種工具來構(gòu)建疾病特定的知識圖譜,包括實體、關(guān)系和事件抽取工具,規(guī)范化工具,ER-OWL映射工具和醫(yī)生使用的工具.本系統(tǒng)架構(gòu)采用的工具可以支持更好的醫(yī)學(xué)知識抽取和醫(yī)療健康知識圖譜的構(gòu)建.
上面列出的構(gòu)建知識圖譜的系統(tǒng)架構(gòu)具有不同的數(shù)據(jù)源.例如,cTAKES和I-KAT從醫(yī)療數(shù)據(jù)庫(如UMLS、SNOMED-CT等)收集數(shù)據(jù),而pMineR則從開源電子病歷中收集數(shù)據(jù).一般來說,醫(yī)療領(lǐng)域知識圖譜的構(gòu)建系統(tǒng)架構(gòu)的數(shù)據(jù)主要來自公共資源,包括醫(yī)療術(shù)語數(shù)據(jù)庫和臨床記錄數(shù)據(jù)庫等.
專家提供他們的先驗知識和要求,以構(gòu)建針對不同用途的醫(yī)療健康知識圖譜.cTAKES根據(jù)專家的要求,提供UMLS個性化詞典的創(chuàng)建窗口,以處理不同需求的臨床記錄和識別臨床命名實體的類型,如藥物、疾病/病癥、體征/癥狀、解剖部位和程序;而I-KAT為醫(yī)生提供了一個易于使用的平臺,醫(yī)生可以根據(jù)他們的先驗知識創(chuàng)建知識庫,并使用標(biāo)準(zhǔn)語法來分享知識.
本系統(tǒng)架構(gòu)支持醫(yī)生輸入個性化的先驗知識,同時還將囊括公共醫(yī)療標(biāo)準(zhǔn)如UMLS,以同時構(gòu)建特定疾病的CKG和醫(yī)學(xué)詞典CKG,滿足專家的需求并同時覆蓋綜合醫(yī)學(xué)知識.本系統(tǒng)架構(gòu)還允許專家提出醫(yī)療病例中醫(yī)學(xué)知識的抽取規(guī)則,以形成可以挖掘深入醫(yī)學(xué)知識及其關(guān)聯(lián)的醫(yī)學(xué)實例知識圖譜.此外,對于CKG和IKG,本系統(tǒng)架構(gòu)還為專家提供了可設(shè)置的、不同映射規(guī)則的工具,以便個性化地將結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換為知識圖中的三元組.
本文在醫(yī)學(xué)領(lǐng)域研究了多個知識圖譜的構(gòu)建系統(tǒng)架構(gòu),例如cTAKES,pMineR,I-KAT和RDR等.根據(jù)上一章提出的三個建立特定疾病知識圖譜的重要方面,本文將從數(shù)據(jù)來源,采用的工具和醫(yī)生的幫助三個方面對相關(guān)知識圖譜構(gòu)建系統(tǒng)架構(gòu)進行比較.
總體來說,pMineR支持臨床數(shù)據(jù)的挖掘和處理,可用于處理包括管理方面和臨床方面的數(shù)據(jù).它為流程發(fā)現(xiàn)提供自動識別服務(wù)[5],目前已應(yīng)用在醫(yī)院中,用于支持領(lǐng)域?qū)<曳治龀槿♂t(yī)學(xué)知識模型.cTAKES[6]是一個開源的自然語言處理(NLP)系統(tǒng),可從電子病歷中抽取臨床信息.I-KAT提供了一個用戶友好的環(huán)境,可用來創(chuàng)建基于Arden語言的MLM(醫(yī)療邏輯模塊),并可作為可共享的臨床輔助決策支持系統(tǒng)的知識規(guī)則[7].
本系統(tǒng)架構(gòu)可以構(gòu)建特定疾病的知識圖譜,或者可以應(yīng)用于現(xiàn)有特定疾病知識圖譜,以將單一疾病擴展到其他疾病,例如從心血管疾病延伸到糖尿病.基于現(xiàn)有的醫(yī)學(xué)詞庫、來自特定疾病領(lǐng)域的專業(yè)醫(yī)院的電子病歷和研究該疾病的專家,可以構(gòu)建特定疾病領(lǐng)域的醫(yī)療健康知識圖譜.
如圖1所示,使用本系統(tǒng)架構(gòu)構(gòu)建醫(yī)療健康知識圖譜的過程可分為兩個模塊.
1) CKG(概念圖譜)構(gòu)建模塊:根據(jù)醫(yī)生的先驗知識和UMLS等醫(yī)學(xué)標(biāo)準(zhǔn)構(gòu)建概念知識圖譜.
2) IKG(實例圖譜)構(gòu)建模塊:從電子病歷中抽取實體和關(guān)系以及概念節(jié)點和實例節(jié)點的融合.
具體而言,本系統(tǒng)架構(gòu)將引入醫(yī)生輔助構(gòu)建工具,包括醫(yī)生輸入工具,規(guī)則庫工具和醫(yī)生標(biāo)注工具等進行醫(yī)療健康知識圖譜的構(gòu)建.
本系統(tǒng)架構(gòu)需要解決的三個主要問題是:數(shù)據(jù)源,構(gòu)建工具和專家的幫助.
如圖2所示,本系統(tǒng)架構(gòu)的數(shù)據(jù)來源是:1)醫(yī)院的電子病歷:來自治療特定疾病的專業(yè)醫(yī)院的臨床數(shù)據(jù),2)相關(guān)疾病領(lǐng)域?qū)<?研究特定疾病的專家和3)像UMLS這樣含有不同醫(yī)學(xué)標(biāo)準(zhǔn)的醫(yī)學(xué)詞庫.為了讓專家參與進來,系統(tǒng)提出了醫(yī)生輔助構(gòu)建知識圖譜工具:醫(yī)生輸入工具,醫(yī)生標(biāo)注工具和規(guī)則庫工具.系統(tǒng)基于醫(yī)生輸入工具和規(guī)則庫工具構(gòu)建CKG,同時基于醫(yī)生標(biāo)注工具和規(guī)則庫工具構(gòu)建IKG.CKG的構(gòu)建基于醫(yī)生的先驗知識和醫(yī)學(xué)詞庫,該模塊包含規(guī)范化工具、ER-OWL映射工具和醫(yī)生輔助工具.同時,IKG的構(gòu)建模塊分為結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換模塊(從ER模型到RDF模型轉(zhuǎn)換)和非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換模塊(實體,關(guān)系和事件的抽取).IKG的建設(shè)基于醫(yī)院的電子病歷、抽取工具和醫(yī)生輔助工具.最后,對于可能需要的不同的用途,本系統(tǒng)架構(gòu)將同時生成CKG和IKG.
CKG(概念知識圖譜)集合了醫(yī)學(xué)詞庫中的醫(yī)學(xué)標(biāo)準(zhǔn),如UMLS和醫(yī)生的先驗知識.CKG構(gòu)建模塊中包含兩個步驟.第一步是構(gòu)建通用醫(yī)學(xué)詞庫,以及面向特定疾病領(lǐng)域的醫(yī)學(xué)詞庫.第二步基于通用CKG構(gòu)建面向特定疾病領(lǐng)域的CKG,如圖3所示.本文以構(gòu)建心血管疾病CKG為例介紹.
在本系統(tǒng)架構(gòu)中,醫(yī)學(xué)詞庫的數(shù)據(jù)源是UMLS.UMLS是統(tǒng)一醫(yī)學(xué)語言系統(tǒng)的縮寫,統(tǒng)一醫(yī)學(xué)語言系統(tǒng)是一組文件和軟件,匯集了許多與健康相關(guān)的標(biāo)準(zhǔn).ULMS中的醫(yī)學(xué)知識存儲在基于ER數(shù)據(jù)模型的數(shù)據(jù)庫中.因此,UMLS中的醫(yī)學(xué)知識需要映射到CKG中的節(jié)點.本系統(tǒng)架構(gòu)提供了一個映射規(guī)則工具,供醫(yī)生制定映射規(guī)則.規(guī)則庫中生成的映射規(guī)則用于將數(shù)據(jù)從ER數(shù)據(jù)模型轉(zhuǎn)換為RDF數(shù)據(jù)模型[8].具體步驟如下:醫(yī)生設(shè)置規(guī)則,指定ER數(shù)據(jù)模型中的哪個列應(yīng)轉(zhuǎn)換為知識圖譜中的哪個概念節(jié)點.目前,從ER到RDF的轉(zhuǎn)換包括直接映射和自定義映射.在這里,系統(tǒng)采用自定義映射方法,以更好地滿足醫(yī)生需求.支持這種方法的標(biāo)準(zhǔn)和工具包括R2RML,Virtuoso等.本系統(tǒng)架構(gòu)使用R2RML(一種將關(guān)系數(shù)據(jù)庫轉(zhuǎn)換為RDF的標(biāo)準(zhǔn)轉(zhuǎn)換語言),采用D2R工具完成.
圖3 概念圖譜構(gòu)建模塊Fig.3 Conceptual graph building module
特定疾病的CKG是根據(jù)醫(yī)生的先驗知識和醫(yī)學(xué)詞庫構(gòu)建的.為了獲得醫(yī)生的先驗知識,本系統(tǒng)架構(gòu)為醫(yī)生提供了輸入工具,用于定義新疾病領(lǐng)域的概念和關(guān)系,并將其添加到CKG中.以心血管疾病為例,構(gòu)建心血管疾病CKG的步驟如下.
1) 由心血管疾病醫(yī)生提供相關(guān)的醫(yī)學(xué)知識,該知識由醫(yī)學(xué)實體、關(guān)系和三元組進行表示.
2) 將醫(yī)生的知識標(biāo)準(zhǔn)化和持久化.標(biāo)準(zhǔn)化和持久化的過程分為兩類,取決于新知識是否存在于醫(yī)學(xué)詞庫CKG中.如果不存在,則根據(jù)UMLS的編碼系統(tǒng)將其插入醫(yī)學(xué)詞庫CKG中;如果存在,則將使用UMLS編碼的標(biāo)準(zhǔn)醫(yī)學(xué)知識.
表2 心內(nèi)領(lǐng)域知識的標(biāo)準(zhǔn)化Table 2 Knowledge normalization in cardiovascular diseases
因此,基于上述步驟可以逐步構(gòu)建跨病種領(lǐng)域的綜合醫(yī)學(xué)詞庫.其核心是基于通用醫(yī)學(xué)詞庫構(gòu)建面向特定疾病領(lǐng)域的專有醫(yī)學(xué)詞庫,以滿足相關(guān)需求.表2顯示了不同類型的先驗知識在心血管疾病領(lǐng)域標(biāo)準(zhǔn)化和持久化后的不同格式.
結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換的主要過程是從基于ER數(shù)據(jù)模型的結(jié)構(gòu)化數(shù)據(jù)映射到基于RDF / OWL數(shù)據(jù)模型的實例知識圖譜中(見圖4),由醫(yī)生提供的映射規(guī)則提供支持.
圖4 實例圖譜構(gòu)建模塊Fig.4 Instance graph building module
非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換過程的關(guān)鍵過程如下:實體抽取[9],事件抽取和關(guān)系抽取如圖5所示.此過程的目的是抽取非結(jié)構(gòu)化數(shù)據(jù)中的實體,事件和關(guān)系,并將它們轉(zhuǎn)換為IKG(實例圖譜).在傳統(tǒng)通用的抽取方式中,基于機器學(xué)習(xí)和深度學(xué)習(xí)的方法被廣泛使用,但由于數(shù)據(jù)質(zhì)量和先驗知識的缺失,傳統(tǒng)方式的抽取結(jié)果質(zhì)量較差.因此在傳統(tǒng)的方法上本系統(tǒng)加入了基于規(guī)則的抽取方法.為了更好的提高系統(tǒng)處理大批量EMR數(shù)據(jù)的能力,本系統(tǒng)架構(gòu)提供規(guī)則庫工具和醫(yī)生標(biāo)注工具.同時,本系統(tǒng)也為用戶提供了多種針對應(yīng)用場景的可選擇的基于機器學(xué)習(xí)與深度學(xué)習(xí)的抽取方法.醫(yī)生標(biāo)注工具提供了相關(guān)界面,醫(yī)生可以根據(jù)CKG對非結(jié)構(gòu)化數(shù)據(jù)進行標(biāo)注.標(biāo)注的結(jié)果將存儲在實體語料庫和關(guān)系語料庫中,從而支持實體和關(guān)系抽取模型的建立.領(lǐng)域內(nèi)先驗知識和機器學(xué)習(xí)、深度學(xué)習(xí)相結(jié)合的方式可以提高實體和關(guān)系抽取的準(zhǔn)確率[10].
首先介紹實體抽取工具:本系統(tǒng)架構(gòu)中的實體抽取工具采用基于序列標(biāo)注方法和基于規(guī)則的方法.為了實現(xiàn)這些方法,本系統(tǒng)架構(gòu)采用規(guī)則庫工具和實體語料庫來進行支持.基于序列標(biāo)注方法,可以抽取實體和關(guān)系,并將其用作機器學(xué)習(xí)方法的訓(xùn)練集,以抽取更大數(shù)據(jù)集中的實體和關(guān)系.比較不同模型的結(jié)果和效率,本系統(tǒng)架構(gòu)使用LSTM-CRF和CRF[11,12].表3是基于標(biāo)注的心血管疾病實體抽取示例.
表3 基于標(biāo)注的心血管疾病實體抽取Table 3 Annotation-based entity extraction in cardiovascular diseases
基于模板的實體抽取[13]可以同時抽取實體和關(guān)系,這將在關(guān)系抽取部分詳細(xì)描述.
其次介紹關(guān)系抽取:關(guān)系抽取由兩部分組成:基于模板的模塊和基于監(jiān)督學(xué)習(xí)方法的模塊[14].基于模板的方法包括兩個步驟:1)醫(yī)學(xué)實體的識別和2)識別每對實體之間的正確語義關(guān)系.在本系統(tǒng)架構(gòu)中,模板由規(guī)則庫中的醫(yī)生定義.例如,住院病歷中的許多EMR具有諸如“患者具有諸如***的癥狀”和“患者因***而被接納”的模板.這些模板可以應(yīng)用于實體抽取和關(guān)系抽取.同時采用監(jiān)督學(xué)習(xí)方法,提高數(shù)據(jù)規(guī)模時的準(zhǔn)確性.表4是基于模板抽取的一個例子.
表4 基于模板的心血管疾病實體和關(guān)系抽取Table 4 Pattern extraction in cardiovascular diseases
除了構(gòu)建面向特定領(lǐng)域疾病的知識圖之外,本系統(tǒng)架構(gòu)還可以將新疾病領(lǐng)域納入當(dāng)前的知識圖譜.除了EMR的輸入和醫(yī)生的先驗知識外,構(gòu)建工具和醫(yī)學(xué)詞庫的輸入可以重復(fù)使用,從而減少了針對特定疾病領(lǐng)域構(gòu)建知識圖譜的工作量,并且可以逐步構(gòu)建涵蓋不同類型疾病領(lǐng)域的健康知識圖譜.例如,當(dāng)本系統(tǒng)架構(gòu)將糖尿病納入現(xiàn)有心血管疾病知識圖譜時,需要執(zhí)行以下步驟:
首先,本系統(tǒng)架構(gòu)需要EMR數(shù)據(jù)和糖尿病領(lǐng)域的醫(yī)生.醫(yī)生需要從三個方面提供他們的先驗知識:
1)糖尿病相關(guān)概念、關(guān)系和RDF三元組,表5展示了一個具體的例子.
表5 糖尿病領(lǐng)域相關(guān)的概念,關(guān)系和三元組Table 5 Concepts,relations and triples in diabetes mellitus
2)EMR中結(jié)構(gòu)化數(shù)據(jù)從ER數(shù)據(jù)模型映射到RDF數(shù)據(jù)模型的相關(guān)規(guī)則.
3)EMR中非結(jié)構(gòu)化數(shù)據(jù)中實體和關(guān)系抽取規(guī)則的提供,如表6所示.
其次,將構(gòu)建糖尿病的CKG.首先通過相關(guān)輸入工具獲得醫(yī)生的先驗知識,其次基于現(xiàn)有的醫(yī)學(xué)詞庫以及相關(guān)CKG,糖尿病領(lǐng)域相關(guān)的概念、關(guān)系和三元組構(gòu)建糖尿病領(lǐng)域的CKG.圖5顯示了基于醫(yī)生先驗知識構(gòu)建的糖尿病領(lǐng)域CKG的一部分.
最后,將建立糖尿病領(lǐng)域的IKG.在這個過程中,首先醫(yī)生基于糖尿領(lǐng)域的CKG和相關(guān)需求對EMR中的非結(jié)構(gòu)化數(shù)據(jù)進行標(biāo)注;其次基于上述標(biāo)注結(jié)果,采用機器學(xué)習(xí)或深度學(xué)習(xí)的方法生成相關(guān)抽取模型;再次基于上述抽取模型大批量地對EMR中的非結(jié)構(gòu)化數(shù)據(jù)進行實體和關(guān)系抽取,同時生成相關(guān)的語料庫;最后,基于CKG對抽取到的實體和關(guān)系進行對齊并最終完成IKG的構(gòu)建.
表6 糖尿病領(lǐng)域中基于模板的抽取Table 6 Pattern extraction in diabetes mellitus
圖5 糖尿病的概念子圖Fig.5 Subgraph of CKG in diabetes mellitus domain
本文提出了一個可擴展的知識圖構(gòu)建系統(tǒng)架構(gòu).基于醫(yī)生的先驗知識以及相關(guān)的EMR數(shù)據(jù),該系統(tǒng)架構(gòu)可用于構(gòu)建面向特定疾病領(lǐng)域的知識圖或用于擴展當(dāng)前的知識圖譜到其它新的疾病領(lǐng)域.為了提高知識圖譜構(gòu)建過程中的準(zhǔn)確性和效率,本系統(tǒng)架構(gòu)提供了多種人機交互以及自動化的知識圖譜構(gòu)建工具.
在未來,本系統(tǒng)架構(gòu)將逐步從多個國際醫(yī)療標(biāo)準(zhǔn)知識庫、互聯(lián)網(wǎng)應(yīng)用數(shù)據(jù)等更多渠道獲取醫(yī)學(xué)數(shù)據(jù)與知識,從而豐富本系統(tǒng)架構(gòu)所建立的知識圖譜,本系統(tǒng)架構(gòu)將進一步完善對特定場景下先驗知識的提取和利用,從而更好地滿足領(lǐng)域內(nèi)的實際需求并提高圖譜構(gòu)建過程中的效率和準(zhǔn)確度.