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