李 陽,杜睿山,張豪鵬
(1.東北石油大學 數(shù)學與統(tǒng)計學院,黑龍江 大慶 163318 2.東北石油大學 計算機與信息技術學院,黑龍江 大慶 163318)
在信息化發(fā)展的今天,醫(yī)藥數(shù)據(jù)的存儲及共享方式多變簡潔,互聯(lián)網(wǎng)中醫(yī)藥數(shù)據(jù)量呈指數(shù)型爆炸式增長,數(shù)據(jù)冗雜,醫(yī)藥知識相互獨立,患者難以在海量的醫(yī)藥數(shù)據(jù)中尋求到合適的幫助。如何在大量醫(yī)藥數(shù)據(jù)中探尋醫(yī)藥數(shù)據(jù)關聯(lián)以及挖掘醫(yī)藥數(shù)據(jù)的潛在價值成為了首要的研究目標。由谷歌公司提出的“知識圖譜”可以很好地繪制知識脈絡,挖掘數(shù)據(jù)的潛在關系,并且以簡潔明了的可視化方式呈現(xiàn)數(shù)據(jù)之間的關系[1]。并且,隨著知識圖譜的迅猛發(fā)展,金融、農業(yè)、教育等其他領域也著眼于從知識圖譜中尋找數(shù)據(jù)結構化存儲及其數(shù)據(jù)關聯(lián)的方案[2-5],成果顯著,同時,在智能搜索等眾多領域,知識圖譜也憑借其特有的優(yōu)勢而備受青睞[6-9]。
醫(yī)藥大數(shù)據(jù)是醫(yī)學人工智能的重要基石,一直以來都備受人們的關注。但也正因如此,在國內外出現(xiàn)了眾多不盡相同的標準,這使得很多醫(yī)藥數(shù)據(jù)無法被人直接引用。近年來,國內加大了對知識圖譜的重視[10-12],已有相關學者將中國傳統(tǒng)醫(yī)學和知識圖譜相結合,在中醫(yī)藥領域知識圖譜的構建和標準化進行了初步的嘗試和探索。如阮彤等[13]以文本抽取、數(shù)據(jù)融合等技術為基礎,展開了中醫(yī)藥知識圖譜的構建。賈李蓉等[14]多角度探討了如何構建中醫(yī)藥知識圖譜。但可以應用到實際生活中的中文開源數(shù)據(jù)集仍是稀缺狀態(tài),構建醫(yī)藥知識圖譜的意義是十分重大的。
知識圖譜的出現(xiàn)為問題的解決提供了技術支撐,利用知識圖譜可以對其進行有效的關系梳理。知識圖譜是一種語義網(wǎng)絡,用于揭示實體之間的關系[9]。藥品和病癥之間存在的諸如推薦用藥關系,以及疾病與病癥之間存在的伴隨、檢查等多種關系均可以在知識圖譜中體現(xiàn)。目前,傳統(tǒng)的網(wǎng)絡圖已經無法處理大數(shù)據(jù)時代下繁多的數(shù)據(jù),與此相比,知識圖譜更適合表示其數(shù)據(jù)關系。該文選擇疾病作為切入點,從知識關聯(lián)角度出發(fā),通過考察疾病與藥品的關聯(lián)關系構建醫(yī)藥知識圖譜,并實現(xiàn)醫(yī)藥圖譜間關系查詢及其可視化,為患者普及醫(yī)療知識,輔助醫(yī)療行業(yè)提供新視角。
該系統(tǒng)是基于醫(yī)藥知識圖譜構建,首先是確定系統(tǒng)的需求,在人工參與的情況下獲取醫(yī)學詞典,在醫(yī)學詞典的指導下通過相應的醫(yī)藥網(wǎng)站獲取系統(tǒng)所需要的數(shù)據(jù),如疾病名稱、相關癥狀、所需藥物、相應檢查等等相關信息;經過知識融合及加工實現(xiàn)醫(yī)藥知識圖譜的構建。
設計了醫(yī)藥知識圖譜構建的總體框架,如圖1所示。以尋醫(yī)問藥網(wǎng)以及39健康網(wǎng)為系統(tǒng)半結構化數(shù)據(jù)來源,分別對爬取的數(shù)據(jù)進行知識抽取、知識融合、可視化評估等迭代步驟,從而實現(xiàn)圖譜的構建與更新。
圖1 醫(yī)藥知識圖譜構建總體框架
目前知識圖譜有兩種構建方法:自頂向下和自底向上[15]。當構建垂直的領域知識圖譜時,通常采用自頂向下的構建方法。但這種方法也是有利有弊,在保證數(shù)據(jù)質量和深度的同時,會存在大量人力和財力被消耗的問題[16]。由于本系統(tǒng)規(guī)模較小,從實際需求和應用出發(fā)采用自底向上的構建方式。
根據(jù)實際需求,醫(yī)藥知識圖譜主要是為了非專業(yè)人士及患者提供自主查詢以及了解相關疾病和藥品,從而設計圖譜的實體類型以及關系類型。
從實際需求出發(fā),實體數(shù)據(jù)中應包含七大類,如表1所示,分別是:診斷檢查項目、醫(yī)療科目、疾病、藥品、建議飲食、在售藥品、疾病相關癥狀。
表1 實體類型信息
該系統(tǒng)是以疾病為中心的醫(yī)藥知識圖譜,應以疾病展開,注重疾病相關信息的描述,即對于疾病實體來說,其屬性值應包含:疾病名稱、疾病簡介、疾病病因、預防措施、治療周期、治療方式、治愈概率、疾病易感人群等八部分,如表2所示。
表2 屬性信息
通過分析實體之間的關系以及實體的相關屬性,設計出相應的關系類型共十種,如表3所示,分別是:屬于,疾病常用藥品,疾病宜吃食物,藥品在售藥品,疾病所需檢查,疾病忌吃食物,疾病推薦藥品,疾病推薦食譜,疾病癥狀,疾病并發(fā)疾病。
表3 知識圖譜實體關系類型
醫(yī)藥知識圖譜采用自底向上的構建方式,數(shù)據(jù)層的構建主要包括醫(yī)藥知識抽取、知識融合。層層對知識進行抽取和加工,最后存儲到圖數(shù)據(jù)庫中。
1.2.1 知識抽取
知識抽取是對數(shù)據(jù)中的實體、屬性及關系三個知識要素進行提取[17]。其數(shù)據(jù)來源種類多樣,包括醫(yī)藥網(wǎng)站、醫(yī)療機構的診療數(shù)據(jù),制藥企業(yè)的生產數(shù)據(jù)等等。為獲得疾病名稱、藥品名稱、企業(yè)生產數(shù)據(jù)等信息,需要利用知識抽取技術對文本特征進行分析,得到相應的知識信息。
該系統(tǒng)是基于垂直網(wǎng)站的醫(yī)藥圖譜,所采用的數(shù)據(jù)來自“尋醫(yī)問藥網(wǎng)”和“39健康網(wǎng)”。醫(yī)藥網(wǎng)站中包含大量的疾病數(shù)據(jù),以及推薦用藥、就診科室、所需檢查等等。同時,其數(shù)據(jù)分類明確,信息權威,是構建醫(yī)藥圖譜的良好數(shù)據(jù)來源。
在知識抽取中,系統(tǒng)采用規(guī)則匹配方法進行實體、屬性及其關系的獲取[9]。確定以醫(yī)藥類網(wǎng)站為數(shù)據(jù)來源,獲取其半結構化數(shù)據(jù),解析其藥品信息,疾病種類,癥狀表現(xiàn),醫(yī)療科目,診斷檢查項目,在售藥品以及宜吃食物等相關實體及屬性信息。根據(jù)實體種類設計其數(shù)據(jù)結構,定義關于疾病的“屬性-屬性值”關系。
首先利用最大向前匹配算法和最大向后匹配算法分別對獲取到的醫(yī)藥數(shù)據(jù)進行字段的切分預處理,然后利用雙向最大向前匹配算法對預處理結果進行知識驗證,其主要過程如下:
(1)實體及屬性抽取。
根據(jù)醫(yī)學詞典可對系統(tǒng)所獲取的醫(yī)藥數(shù)據(jù)進行規(guī)則匹配從而得到圖譜的實體及屬性,并對其匹配結果進行統(tǒng)計分類,實體規(guī)模共七類,分別為疾病、藥品、在售藥品、疾病癥狀、診斷檢查項目、醫(yī)療科目、食物。系統(tǒng)采用的是最大向前匹配及最大向后匹配算法,其中最大向前匹配算法描述如下:
STEP1:從左向右取待切分漢語句的M個字符作為匹配字段(M為醫(yī)學詞典中最長詞條個數(shù));
STEP2:查找醫(yī)學詞典并進行匹配。若成功匹配則會把該匹配字段當成一個詞進行切分,若失敗則按字符切分。
最大向后匹配算法則是從右向左取待切分語句,其余與最大向前匹配算法一致。
(2)知識驗證。
在做完實體及屬性的抽取后,為了提高實體及屬性識別的準確率,將最大前向匹配算法及最大向后匹配算法的結果進行比較,從而決定正確的分詞方法,即雙向最大向前匹配算法。其啟發(fā)式規(guī)則如下:
STEP1:若最大向前匹配算法和最大向后匹配算法的結果詞數(shù)不同,則選擇分詞數(shù)量較少的結果。
STEP2:若兩個匹配算法的分詞詞數(shù)相同,分詞結果無歧義,則可返回任意一個結果;若分詞結果不同,返回單字較少的結果。
其部分知識抽取映射如表4所示。
表4 部分知識抽取映射
抽取后的信息以三元組形式(<藥品—關系—疾病>、<藥品—屬性—屬性值>、<疾病—關系—特征>)等保存于數(shù)據(jù)庫中,這些三元組本質上就是醫(yī)藥網(wǎng)絡中的知識關聯(lián)。
1.2.2 知識融合
目前的醫(yī)藥網(wǎng)站存在著知識來源斑雜,知識質量良莠摻雜等方面的問題,所以要將這些不同知識數(shù)據(jù)源在同一框架規(guī)范下進行異構數(shù)據(jù)處理,對知識進行判斷,達到數(shù)據(jù)、信息、方法、經驗與人思想的融合,將驗證正確的知識通過對齊關聯(lián)、合并計算有機地組織成知識庫[17-18]。
知識抽取中常常存在數(shù)據(jù)冗余及數(shù)據(jù)錯誤等現(xiàn)象,而知識融合就是處理這些現(xiàn)象并將其整合在已有知識中的過程[2]。在醫(yī)藥和疾病數(shù)據(jù)中,各類數(shù)據(jù)中存在歧義現(xiàn)象。在實體融合中解決歧義的方法最常用的是實體連接以及實體分類;在屬性融合中,通常使用基于向量的相似度計算、最小編輯距離等;關系融合中,主要方法為相似性度量[2]。
由于該系統(tǒng)的疾病實體是根據(jù)疾病詞典所獲取的,實體對齊過程省略,知識融合部分由屬性對齊以及實體鏈接所組成。
(1)屬性對齊。
在實體鏈接之前,為了提高識別的準確度,首先進行實體對齊,根據(jù)圖譜構建設計時所劃分的屬性類別對同一類實體的同一屬性的不同表達方式進行對齊,如表5所示。
表5 部分屬性對齊映射
在完成屬性對齊之后,根據(jù)數(shù)據(jù)庫設計的屬性類型對屬性值進行規(guī)范化處理,本系統(tǒng)將屬性值分別劃分為三類:字符串型、數(shù)值型、數(shù)值區(qū)間型。然后對這三類屬性進行規(guī)范化。
(2)實體鏈接。
系統(tǒng)可以借助屬性對其結構拓展名稱的相似度的計算方法,將其實體與知識圖譜中對應實體項相鏈接[16]。假設有a,b兩個實體,對應名稱分別為Sa和Sb。
①實體名稱相似度。
(1)
其中,len_lcs(i,j)表示名稱i和j最大公共子序列的長度;len(name)表示name的長度,name∈{i,j}。
②字符串型屬性相似度。
(2)
③數(shù)值區(qū)間型屬性相似度。
(3)
其中,len_overlap表示兩個區(qū)間屬性重合部分的長度,數(shù)值區(qū)間和時間區(qū)間屬性都采用這種方法計算相似度。
最后綜合考察實體名稱相似度和屬性相似度相加得到的實體對綜合相似度,判斷實體對是否指向同一實體。
該系統(tǒng)是基于醫(yī)藥知識圖譜構建,采集的數(shù)據(jù)規(guī)模約34萬條,其中知識實體共七類約4萬條,實體關系共11類約30萬條。主要信息有疾病種類約9 000種,藥品種類約5 000種,在售藥品信息約17 000條,癥狀表現(xiàn)約6 000種等等。采用Neo4j圖數(shù)據(jù)庫進行知識存儲,并利用Neo4j數(shù)據(jù)庫支持的屬性圖來進行知識表示以及圖譜可視化。利用Neo4j圖數(shù)據(jù)庫進行知識圖譜的可視化,將疾病信息爬取后以三元組的形式導入其中。Neo4j使用圖形清楚明了地展示出數(shù)據(jù)之間的關系,其基本單元是節(jié)點、關系與屬性。不同來源的醫(yī)療醫(yī)藥數(shù)據(jù)經過知識抽取、知識融合等步驟,形成三元組的知識文件,最后將加工完成的知識信息導入到Neo4j圖數(shù)據(jù)庫中,將其可視化。其可視化界面如圖2和圖3所示
圖2 疾病伴隨癥狀
圖3 混合關系
為了驗證本圖譜的正確性以及合理性,采用隨機實驗的方法,隨機抽取50名用戶作為測試對象,用戶人群分別為大學在校生30人、社區(qū)老人10人、教師5人、醫(yī)護相關人員5人。用戶通過對實體的查詢,了解相關的實體關系,判別系統(tǒng)功能的正確性和實用性。其測試主要考察:用戶能否查詢到相關疾病信息的描述即知識覆蓋面的廣泛度;系統(tǒng)中疾病屬性描述的正確性;知識關聯(lián)的正確性和系統(tǒng)實用性,測試結果如表6所示。
表6 系統(tǒng)評估測試
通過以上的測試結果可以看出,用戶對系統(tǒng)的滿意度較好,但仍存在一定的問題:醫(yī)藥知識圖譜構建的不夠全面,對于疾病的原因、預防等信息的獲取實際上是一串文字,由于醫(yī)學詞典的局限性,知識匹配所劃分的實體和關系還不夠準確,測試中仍有部分實體無法查詢到;知識的關系分類還可以更加詳細,知識關聯(lián)可以進一步進行挖掘。
該系統(tǒng)以垂直網(wǎng)站為數(shù)據(jù)來源,構建起以疾病為中心的醫(yī)藥知識圖譜,利用預先定義的醫(yī)學詞典以規(guī)則匹配的方式進行知識抽取,以綜合考察實體名稱相似度與屬性相似度方式進行實體鏈接,構建醫(yī)藥知識圖譜。知識圖譜及其數(shù)據(jù)庫設計基于所采集的結構化數(shù)據(jù)生成,以Neo4j圖數(shù)據(jù)庫作為存儲,并以此實現(xiàn)圖譜的可視化。
下一步將繼續(xù)完善醫(yī)藥知識圖譜,在醫(yī)藥知識圖譜的基礎上設計智能問答系統(tǒng),在“查詢”方面進一步智能、簡便化。