吳思竹 修曉蕾 王安然 錢 慶
(中國醫(yī)學(xué)科學(xué)院醫(yī)學(xué)信息研究所 北京100020)
知識圖譜是結(jié)構(gòu)化的語義知識庫,用于以符號形式描述物理世界中的概念及其相互關(guān)系。其基本組成單位是“實體-關(guān)系-實體”三元組,以及實體和其相關(guān)屬性-值對實體間通過關(guān)系相互關(guān)聯(lián)構(gòu)成網(wǎng)狀的知識結(jié)構(gòu)[1]。知識圖譜是一種新型知識管理和服務(wù)模式,其活躍得益于Google的Knowledge Graph項目。后來,Google將Freebase并入 WikiData,轉(zhuǎn)而基于 WikiData的API構(gòu)建知識圖譜,將細(xì)粒度語義信息資源關(guān)聯(lián)起來,用于優(yōu)化已有的搜索引擎和知識發(fā)現(xiàn)。隨著Linking Open Data 等項目的全面展開,語義Web數(shù)據(jù)源的數(shù)量激增,大量關(guān)聯(lián)數(shù)據(jù)被發(fā)布,大量開放關(guān)聯(lián)數(shù)據(jù)如DrugBank、LinkedCT、DailyMed、DBpedia、Diseasome、RDF-TCM、RxNorm等被應(yīng)用于知識圖譜的構(gòu)建。百度、搜狗、微軟等搜索引擎公司也建立知心、知立方等知識圖譜用以提升搜索質(zhì)量。
雖然已有不少知識圖譜被構(gòu)建,但是在行業(yè)或?qū)I(yè)領(lǐng)域知識圖譜投入的研究力度并不足夠,準(zhǔn)確性和可用性也有待提高。在國外的醫(yī)學(xué)領(lǐng)域,荷蘭自由大學(xué)的黃智生教授構(gòu)建乳腺癌知識圖譜[2],MS Desarkar等[3]構(gòu)建可對醫(yī)療應(yīng)用程序進行知識圖譜框架構(gòu)建的Med-Tree,Travis Goodwin等人[4]提出一種基于電子病歷的信念狀態(tài)自動構(gòu)建醫(yī)學(xué)知識圖譜的方法。在國內(nèi),開放醫(yī)療與健康聯(lián)盟建立開放知識圖譜平臺[5],收集包括中國中醫(yī)科學(xué)院根據(jù)UMLS構(gòu)建的中藥知識圖譜、中醫(yī)醫(yī)案知識圖譜、中醫(yī)養(yǎng)生知識圖譜、中醫(yī)經(jīng)方知識圖譜,中國科學(xué)院自動化研究所構(gòu)建的腦科學(xué)關(guān)聯(lián)知識圖譜等知識圖譜資源。國內(nèi)的知識圖譜探索多是基于以前的知識庫技術(shù)進行靜態(tài)可視化實現(xiàn),并沒有充分利用現(xiàn)有知識組織體系進行實體數(shù)據(jù)組織、沒有結(jié)合語義數(shù)據(jù)轉(zhuǎn)換與開放關(guān)聯(lián)數(shù)據(jù)資源或外部資源相互關(guān)聯(lián)。因此,為更好地推動基于語義網(wǎng)技術(shù)的生物醫(yī)學(xué)領(lǐng)域知識圖譜研究,本研究探索以疾病為中心,包含疾病、藥物、藥企、醫(yī)生、檢查檢驗、手術(shù)操作和醫(yī)院等7大類實體和實體之間關(guān)聯(lián)的中文疾病知識圖譜構(gòu)建。進行可視化檢索和瀏覽,幫助用戶更方便地進行疾病識別、治療藥物和救治醫(yī)院等多種關(guān)聯(lián)的查找以及新的實體關(guān)聯(lián)發(fā)現(xiàn)。
中文疾病知識圖譜構(gòu)建思路,見圖1,首先從醫(yī)學(xué)文獻、醫(yī)學(xué)健康網(wǎng)站、醫(yī)學(xué)資源數(shù)據(jù)庫和醫(yī)學(xué)知識組織體系等多來源渠道應(yīng)用多種方式采集抽取7大類數(shù)據(jù),主要包括疾病、藥物、檢查檢驗、手術(shù)操作、醫(yī)生、醫(yī)院和藥企,部分?jǐn)?shù)據(jù)采集后需進行數(shù)據(jù)清洗、加工和審核,將數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫中。構(gòu)建7類數(shù)據(jù)之間的語義關(guān)聯(lián)需進行數(shù)據(jù)對齊和整合,最終通過自建的IMI R2RML映射轉(zhuǎn)換工具進行數(shù)據(jù)轉(zhuǎn)換,基于R2RML標(biāo)準(zhǔn)將關(guān)系數(shù)據(jù)庫中存儲的數(shù)據(jù)轉(zhuǎn)換為RDF數(shù)據(jù),通過IMI R2RML映射轉(zhuǎn)換工具進行基本數(shù)據(jù)檢索。而后將RDF數(shù)據(jù)存儲到Openlink Virtuoso數(shù)據(jù)庫中,通過Relfinder實現(xiàn)圖譜數(shù)據(jù)可視化和知識發(fā)現(xiàn)。整個架構(gòu)相對簡化,目標(biāo)是初步探索實現(xiàn)中文疾病知識圖譜的構(gòu)建流程并發(fā)現(xiàn)構(gòu)建過程中的主要問題,在取得一定成果和經(jīng)驗的基礎(chǔ)上,進行更深一步的探索和實踐。
圖1 中文疾病知識圖譜構(gòu)建框架
3.1.1 實體定義 本研究的主要目標(biāo)是確定包括疾病在內(nèi)的7大類實體,除疾病外,還包括藥物、檢查檢驗、手術(shù)操作、醫(yī)生、醫(yī)院和藥企。其中,在藥物實體下設(shè)立藥物產(chǎn)品作為二級實體,由此構(gòu)建以疾病為主的疾病知識圖譜。7大類實體被定義為:(1)疾病。指機體在一定的條件下,受病因損害作用后,因自穩(wěn)調(diào)節(jié)紊亂而發(fā)生的異常生命活動過程,并引發(fā)一系列代謝、功能、結(jié)構(gòu)、空間、大小的變化,表現(xiàn)為癥狀、體征和行為的異常[6]。(2)藥物。指用于預(yù)防、治療、診斷人的疾病,有目的地調(diào)節(jié)人的生理機能并規(guī)定有適應(yīng)癥或者功能主治、用法和用量的物質(zhì)等[7]。(3)檢查檢驗。指為客觀掌握人體的健康狀態(tài)及發(fā)病原因、病情發(fā)展程度所使用的各種醫(yī)療檢驗手段。(4)手術(shù)操作。指醫(yī)生用醫(yī)療器械對病人身體進行切除、縫合等治療,以刀、剪、針等器械在人體局部進行操作,是外科的主要治療方法。(5)醫(yī)生。指掌握和運用醫(yī)學(xué)領(lǐng)域?qū)I(yè)知識、技能或技術(shù)手段治療疾病的人。(6)醫(yī)院。指以向人提供醫(yī)療護理服務(wù)為主要目的醫(yī)療機構(gòu)。(7)藥企。指生產(chǎn)藥物和經(jīng)營藥品的企業(yè),本文數(shù)據(jù)主要是指獲得國家藥監(jiān)局批號的藥物產(chǎn)品生產(chǎn)企業(yè)。
3.1.2 數(shù)據(jù)處理 在中文疾病知識圖譜中,考慮到癥狀的情況比較復(fù)雜,本研究中未將癥狀單獨列出作為一種實體,而是將其作為疾病的屬性,在后續(xù)研究中將對其進行重點研究。相較于Google、Baidu等基于Wikipedia、百度百科等半結(jié)構(gòu)化站點和英文數(shù)據(jù)構(gòu)建知識圖譜,本研究主要基于中文數(shù)據(jù),分別從網(wǎng)絡(luò)資源(健康網(wǎng)站、國家食品藥品監(jiān)督管理總局、臨床醫(yī)學(xué)知識庫、醫(yī)學(xué)百科等)、醫(yī)學(xué)資源數(shù)據(jù)庫、醫(yī)學(xué)文獻和書籍、醫(yī)學(xué)知識組織體系等采集和抽取數(shù)據(jù),采集整理后進行數(shù)據(jù)清洗、數(shù)據(jù)加工和質(zhì)量控制。處理后的數(shù)據(jù)被導(dǎo)入并存儲在MySQL數(shù)據(jù)庫的不同實體數(shù)據(jù)表中,每類實體均包括不同的屬性信息。(1)疾病屬性。包括疾病名稱、分類編碼、概述、癥狀、病因、診斷、臨床表現(xiàn)和治療科室。(2)藥物屬性。藥物名稱、適應(yīng)癥、不良反應(yīng)、禁忌癥、注意事項、性狀和用法與用量。(3)藥物產(chǎn)品屬性。商品名稱和產(chǎn)品分類。(4)檢查檢驗屬性。檢查名稱、分類、概述、適應(yīng)癥和臨床意義。(5)手術(shù)操作屬性。手術(shù)操作名稱、分類編碼、基本術(shù)式和部位。(6)醫(yī)生屬性。醫(yī)生名稱、醫(yī)生簡介、所在科室和主治疾病。(7)醫(yī)院屬性。醫(yī)院名稱、醫(yī)院等級、特色科室、電話、地址和郵編。(8)藥企屬性。藥企名稱、電話、網(wǎng)址、地址、地區(qū)和郵編。
中文疾病知識圖譜的數(shù)據(jù)建模采用自底向上的方式,根據(jù)圖譜構(gòu)建的目的和采集的數(shù)據(jù)確定圖譜的模型,包括7大類實體,并確定實體對應(yīng)的9類不同關(guān)系類型,見表1,每類實體包括3.1.2節(jié)中列出的對應(yīng)屬性。以疾病為主的實體之間的關(guān)系和相關(guān)屬性建模,見圖2。通過本體編輯器Protege創(chuàng)建該模型,后續(xù)圖譜構(gòu)建中依據(jù)此模型進行數(shù)據(jù)組織和關(guān)聯(lián)構(gòu)建。
表1 實體類型之間的關(guān)聯(lián)關(guān)系類型
圖2 以疾病為主的實體之間的關(guān)系和相關(guān)屬性
由于數(shù)據(jù)采集的來源不同,通過仔細(xì)分析每個實體數(shù)據(jù)和其屬性,建立不同實體之間的關(guān)聯(lián)。表1列出不同實體間存在的關(guān)聯(lián)關(guān)系類型。不同實體之間的關(guān)聯(lián)構(gòu)建主要采用多種匹配算法并結(jié)合人工審核的方式。匹配算法主要采用3種方式:(1)精確匹配。通過不同實體表中共同的字段名稱進行完整匹配。此外,還可以通過完整包含進行匹配,如疾病和藥物間的關(guān)聯(lián),通過尋找精確匹配的疾病名稱是否出現(xiàn)在藥物屬性的適應(yīng)癥的文字描述中匹配。(2)模糊匹配。由于中文名稱拼寫差異較大,如“西安交通大學(xué)醫(yī)學(xué)院第一附屬醫(yī)院”和“西交大醫(yī)學(xué)院第一附屬醫(yī)院”指向相同實體名稱,但僅通過精確匹配并不能從數(shù)據(jù)中挖掘和建立兩個實體間的關(guān)聯(lián)。因而需要采用語義相似度算法(如余弦相似度)并通過人工審核和篩選確定實體關(guān)聯(lián)。(3)基于別名擴展詞表的匹配。使用疾病、藥物規(guī)范名稱和別名詞表進行擴展構(gòu)建藥物、疾病和其他實體之間的關(guān)聯(lián),匹配后由人工審核并修正匹配結(jié)果。在本研究中,疾病和藥物的名稱和分類編碼分別使用ICD-10和ICD-9-CM-3標(biāo)準(zhǔn)術(shù)語,一方面可用于規(guī)范實體名稱和編碼,另一方面可用于建立和外部資源的關(guān)聯(lián)。由此建立表1中的多個實體間的關(guān)聯(lián)關(guān)系,共構(gòu)建9張實體對關(guān)系表。明確實體和關(guān)聯(lián)關(guān)系后,根據(jù)構(gòu)建的數(shù)據(jù)模型進行數(shù)據(jù)組織和映射。通過實例顯示構(gòu)建知識圖譜模式層和實例數(shù)據(jù)之間是如何進行映射對應(yīng)的,見圖3。
圖3 模式層和實例層的映射
4.1.1 URI模式定義 本研究使用自建的IMI R2RML映射轉(zhuǎn)換工具,基于W3C推薦的 R2RML映射標(biāo)準(zhǔn)實現(xiàn)關(guān)系數(shù)據(jù)到RDF數(shù)據(jù)的映射轉(zhuǎn)換。首先需要為映射數(shù)據(jù)創(chuàng)建基礎(chǔ)URI,URI是根據(jù)特定語法規(guī)范形成的字符串,為數(shù)據(jù)資源提供唯一標(biāo)識。URI模式定義,見表2,每類實體都被分配一個URI,以疾病為例:“http://data.imicams.ac.cn/diseaseKG/disease/{疾病名稱}”, 其中疾病名稱為數(shù)據(jù)表中的列名,最終3元組被表示為“http://data.imicams.ac.cn/diseaseKG/disease /肺炎”。
表2 URI模式定義
4.1.2 RDF詞匯 在本中文疾病知識圖譜構(gòu)建中,盡量使用已有RDF詞匯描述實體類型和謂語關(guān)系,其提供的術(shù)語定義給數(shù)據(jù)類型和關(guān)系描述提供清晰的語義。表3列出本圖譜構(gòu)建中使用的一些主要RDF詞匯。但是,由于一些謂語并沒有找到適合的RDF描述詞匯,因此采用自定義詞匯進行描述。自定義RDF詞匯的URI統(tǒng)一表示為“http://data.imicams.ac.cn/diseaseKG/vocab/{自定義描述詞匯}”,描述詞匯采用表1中列出的關(guān)系描述詞。在數(shù)據(jù)映射規(guī)則撰寫中,可以為“http://data.imicams.ac.cn/diseaseKG/vocab/”定義一個前綴dkgvocab用以簡化書寫,表示“治療”的謂語就可以表達為“dkgvocab:treats”。
4.1.3 表間關(guān)系自定義映射 IMI R2RML映射轉(zhuǎn)換工具提供3種映射模式,分別為直接映射、自定義映射和領(lǐng)域語義映射。本研究選擇自定義映射模式進行實現(xiàn),先進行實體表、關(guān)系表之間的數(shù)據(jù)映射定義,見圖4。
表3 使用的已有RDF詞匯
圖4 映射工具中的表間關(guān)系自定義映射
建立各表的映射關(guān)系后,可在工具的映射核查視圖中進行謂語和數(shù)據(jù)類型的RDF詞匯定義。如為表示“屬于的關(guān)系類型”自定義謂語“belongs_to”,治療科室的謂詞定義引入外部RDF詞匯表VIVO的http://vivoweb.org/ontology/core#Department。完成映射核查和謂語定義后,IMI R2RML映射工具根據(jù)設(shè)定項自動生成R2RML映射規(guī)則文檔。對于實體映射,如疾病實體映射,從疾病表中選擇數(shù)據(jù),創(chuàng)建一個TriplesMap,包括一個subjectMap和多個predicateObjectMap。subjectMap以疾病名稱作為主語,定義類型為領(lǐng)域模型中的dkg:disease,將特定疾病歸并到疾病類型下。predicateObjectMap通過rr:predicateMap定義謂語為http://ww.w3.org/2000/01/rdf-schema#label,以屬性列值作為賓語,具體規(guī)則:
rr:logicalTable [rr:sqlQuery """select 疾病名稱,治療科室,分類編碼,概述,臨床表現(xiàn),疾病治療,病因,癥狀,診斷 from 疾病"""];
rr:subjectMap [rr:class dkg:disease;rr:template "http://data.imicams.ac.cn/diseaseKG/disease/{疾病名稱}";];
rr:predicateObjectMap [rr:predicateMap [rr:constant
rr:objectMap [rr:column "疾病名稱"; rr:datatype xsd:string];];
實體間的關(guān)系映射包括通過表的主、外鍵關(guān)系實現(xiàn)的映射,如藥物實體和疾病實體的關(guān)聯(lián),可以通過藥物_疾病_導(dǎo)致表的疾病名稱和疾病表的疾病名稱通過R2RML的rr:joinCondition語句關(guān)聯(lián),指定rr:child和rr:parent。映射規(guī)則:
rr:logicalTable [rr:sqlQuery """select 藥物名稱,疾病名稱from 藥物_疾病_導(dǎo)致"""];
rr:subjectMap [rr:template "http://data.imicams.ac.cn/diseaseKG/vocab/drug/{藥物名稱}";];
rr:predicateObjectMap [rr:predicateMap [rr:constant dkgvocab:causes;]];
rr:objectMap [rr:parentTriplesMap
rr:joinCondition [rr:child "疾病名稱" ;rr:parent "疾病名稱" ; ]; ];].
生成的R2RML可編輯修改,在最終確定映射規(guī)則后,在IMI R2RML映射轉(zhuǎn)換工具執(zhí)行數(shù)據(jù)轉(zhuǎn)換按鈕,共生成161 337個RDF 3元組,見圖5,其中藥物和手術(shù)操作創(chuàng)建和外部資源ICD-10和ICD-9-CM-3本體的關(guān)聯(lián),如“B超引導(dǎo)下盆腔穿刺術(shù)”,其分類編碼可以直接鏈接到ICD-9-CM-3本體。
圖5 RDF數(shù)據(jù)片段
在IMI R2RML 映射轉(zhuǎn)換工具中,轉(zhuǎn)換后的數(shù)據(jù)直接存儲為RDF文件,工具支持SPARQL語義檢索和可視化功查詢。但為了更好地進行知識圖譜數(shù)據(jù)的數(shù)據(jù)查詢和知識關(guān)聯(lián)的發(fā)現(xiàn),本研究進一步使用Openlink Virtuoso 進行RDF三元組數(shù)據(jù)的存儲[8]。而后使用Relfinder進行可視化和知識發(fā)現(xiàn)[9-11]。
圖6主要以高血壓疾病為例展示構(gòu)建的疾病知識圖譜中的部分內(nèi)容,其中顯示高血壓的相關(guān)檢查檢驗方式、治療的藥物、生產(chǎn)該藥物的藥企、醫(yī)院主治該疾病的醫(yī)生等。高血壓疾病可以采用甘油三酯(TG)測定、總膽固醇(TC)測定、高密度脂蛋白膽固醇(HDL-C)測定等方法進行檢驗。尼群地平、硝苯地平、替米沙坦等藥物可以用于治療高血壓,這些藥物均有相關(guān)產(chǎn)品。在高血壓防治中,患有高血壓疾病的患者需要謹(jǐn)慎使用一些藥物,如甘草酸二銨、地諾前列素、醋酸潑尼松龍等。從圖譜中還可以知道徐州醫(yī)學(xué)院附屬醫(yī)院的陳浩,中日友好醫(yī)院的許杼、王倩、高焱莎,中國醫(yī)學(xué)科學(xué)院阜外心血管病醫(yī)院的馬文君、張慧敏等醫(yī)生擅長治療高血壓疾病。Relfinder的可視化界面能夠動態(tài)顯示實體和關(guān)系,可以通過設(shè)置參數(shù)來展示兩個實體間的不同路徑長度的關(guān)系和發(fā)現(xiàn)新的關(guān)系。但Relfinder在可視化的過程中也存在一些不足,如將連接兩實體之間的邊表示為雙向箭頭,而實際為單向,在后續(xù)研究過程中將對該問題進行優(yōu)化。
圖6 中文疾病圖譜的可視化瀏覽和關(guān)系發(fā)現(xiàn)
雖然本研究采用多種匹配方式進行實體數(shù)據(jù)關(guān)聯(lián)構(gòu)建,包括精確匹配、相似度計算和別名擴展詞典,但由于疾病、藥物等實體數(shù)據(jù)存在不同的命名方式,難以窮盡,導(dǎo)致生成的關(guān)聯(lián)數(shù)量有限。各實體相關(guān)的中文同義詞表也相對缺乏,影響中文實體名稱規(guī)范和實體對齊的效果。因此,在數(shù)據(jù)對齊、數(shù)據(jù)關(guān)聯(lián)構(gòu)建方面還需進一步研究,積累多種實體名稱和構(gòu)建中文實體同義詞表,加強數(shù)據(jù)名稱規(guī)范,提升數(shù)據(jù)對齊的數(shù)量和質(zhì)量。
中文疾病知識圖譜構(gòu)建中,生成的謂語可以使用已有本體或RDF詞匯表中的詞匯進行規(guī)范和豐富,本研究中使用部分RDF詞匯予以描述,為便于理解使用自定義的謂語描述。但不足之處在于構(gòu)建的是中文疾病知識圖譜,而中文RDF詞匯表相對缺乏,為保證一定的一致性,本研究采用英文RDF詞匯作為謂語的表達。通用領(lǐng)域RDF詞匯較容易獲取,在本研究中使用的已有RDF詞匯多來自FOAF、DC等。在面向領(lǐng)域能夠復(fù)用和表達必要含義的英文RDF詞匯中也很難找到應(yīng)用較廣泛且適合的詞匯,因此,本研究采用自定義詞匯(dkgvocab前綴的詞匯)。雖然沒有采用中文謂語描述,但是為更好地理解,在生成的圖譜中將自定義RDF詞匯也轉(zhuǎn)換為中文描述并轉(zhuǎn)換為三元組,用以必要時的機器語義理解和復(fù)用,如
本研究基于R2RML標(biāo)準(zhǔn)針對中文疾病知識圖譜建設(shè)的主要流程進行初步探索,取得預(yù)期效果。但是醫(yī)學(xué)是一門復(fù)雜學(xué)科,在中文疾病知識圖譜構(gòu)建過程中,發(fā)現(xiàn)當(dāng)前研究中的不足,包括各類數(shù)據(jù)實體的質(zhì)量控制問題(實體消歧和對齊)、領(lǐng)域建模的完善和優(yōu)化問題(領(lǐng)域模型結(jié)構(gòu)相對簡單,還可以擴展癥狀和科室實體,豐富每類實體類的結(jié)構(gòu)層次)、實體關(guān)系和外部關(guān)聯(lián)的尚待豐富等問題。下一步我們將進一步優(yōu)化領(lǐng)域模型,更好地融合不同類型的實體數(shù)據(jù)和表示其之間的關(guān)聯(lián),進行更廣泛的數(shù)據(jù)采集、優(yōu)化數(shù)據(jù)質(zhì)量、豐富實體和不同資源之間關(guān)聯(lián)關(guān)系。后續(xù)將探索整體知識圖譜構(gòu)建自動化流程和服務(wù)平臺的建設(shè),建立數(shù)據(jù)在線瀏覽、SPARQL查詢等一體化功能。對內(nèi)容展示和可視化效果進行優(yōu)化,改進IMI R2RML 映射轉(zhuǎn)換工具對大數(shù)據(jù)查詢和可視化的效果,優(yōu)化Relfinder工具在顯示關(guān)系上的指向缺陷。進一步探索中文疾病知識圖譜數(shù)據(jù)擴展、更新、維護等問題,以便更好地實現(xiàn)語義數(shù)據(jù)管理和知識發(fā)現(xiàn)。