陳雪松 張明磊 王浩暢
(東北石油大學電氣信息工程學院 大慶 163318)
知識圖譜,是谷歌2012年提出[2]的一種新型的數(shù)據(jù)表示方式,其目的是為了改善其下一代的搜索引擎。知識圖譜以實體為節(jié)點、關(guān)系為邊組成網(wǎng)狀結(jié)構(gòu),能夠清晰的表示數(shù)據(jù)之間的關(guān)聯(lián)信息,在智能問答等多方面展示出豐富的應用價值[14]。國內(nèi)的搜狗和百度首先建立了通用領(lǐng)域知識圖。隨后,金融[3]、法律等垂直領(lǐng)域也開始構(gòu)建領(lǐng)域圖譜。在醫(yī)療領(lǐng)域,文獻[4]參考萬方乙肝領(lǐng)域文獻,構(gòu)建了乙肝疾病的知識圖譜,文獻[5]利用文本抽取等技術(shù),構(gòu)建了中醫(yī)藥知識圖譜,文獻[6]以人機結(jié)合的方式構(gòu)建了中文醫(yī)學知識圖譜。近年來,國內(nèi)科研人員紛紛致力于醫(yī)療知識圖譜的研究,但與國外相比,仍處于初步階段[7]。
呼吸系統(tǒng)疾病是一種常見的多發(fā)疾病,對人體危害極大,是中國十大死亡率疾病之一。本文根據(jù)自身需求,爬取了相關(guān)呼吸疾病數(shù)據(jù),構(gòu)建呼吸系統(tǒng)疾病知識圖譜,為患者提供自助查詢以及輔助醫(yī)療人員診斷治療。
知識圖譜以圖結(jié)構(gòu)的形式表示知識信息,描述了客觀世界的事物以及關(guān)系[11]。主要分為數(shù)據(jù)層和模式層[8],有自頂向下和自底向上兩種構(gòu)建方法[9]。為了保證醫(yī)療數(shù)據(jù)的準確性和規(guī)范性,本文采用自頂向下的方法構(gòu)建呼吸系統(tǒng)疾病知識圖譜。首先參考醫(yī)學文獻構(gòu)建了呼吸疾病詞典,然后通過該詞典從不同醫(yī)學網(wǎng)站爬取疾病數(shù)據(jù),并根據(jù)實際需求構(gòu)建了呼吸系統(tǒng)疾病本體,最后經(jīng)過知識融合實現(xiàn)多源異構(gòu)數(shù)據(jù)的鏈接,完成呼吸系統(tǒng)疾病中文知識圖譜的構(gòu)建。知識圖譜構(gòu)建架構(gòu)如圖1 所示,共分為四個步驟,通過循環(huán)迭代實現(xiàn)知識圖譜的持續(xù)更新。
圖1 呼吸系統(tǒng)疾病知識圖譜構(gòu)建架構(gòu)
本體構(gòu)建的主要目的是構(gòu)建完整的呼吸系統(tǒng)疾病知識體系,主要分為人工構(gòu)建、自動構(gòu)建、半自動構(gòu)建三種[10]。由于呼吸系統(tǒng)疾病數(shù)據(jù)規(guī)模不大,為了得到高質(zhì)量、高準確度的本體,本文采用人工構(gòu)建的方法構(gòu)建呼吸疾病本體。首先參考了百度百科以及相關(guān)醫(yī)學文獻[15],根據(jù)實際的應用需求定義了七種實體類型:疾病、科室、癥狀、診斷檢查、飲食、藥品、在售藥品;九種實體之間關(guān)系:在售、宜吃、忌吃、屬于、常用藥品、推薦藥品、推薦食物、疾病癥狀、疾病并發(fā)癥;以及各實體的屬性,例如疾病屬性有病因、簡介、治療周期、別名、易感染人群、傳播方式、預防、治療方法等。本文采用Protégé軟件構(gòu)建呼吸系統(tǒng)疾病本體,如圖2為呼吸疾病本體。
圖2 呼吸系統(tǒng)疾病本體
在醫(yī)療領(lǐng)域缺少開源的數(shù)據(jù)庫,本文采用分布式爬蟲技術(shù)爬取垂直型醫(yī)療網(wǎng),如39 健康網(wǎng)、尋醫(yī)問藥網(wǎng)等網(wǎng)站的醫(yī)療數(shù)據(jù)。共爬取了478 條呼吸疾病數(shù)據(jù),包含了所有的呼吸疾病數(shù)據(jù)以及相關(guān)藥品屬性信息。爬取到的疾病數(shù)據(jù)以JSON 格式保存,并進行了初步清洗,對數(shù)據(jù)重新審查和校驗,目的在于刪除非法字符,糾正存在的錯誤,保證數(shù)據(jù)的一致性。
知識融合[16]是將同源異構(gòu)數(shù)據(jù)相連接。主要分為實體對齊和實體鏈接[12]兩個方面。因為呼吸疾病數(shù)據(jù)是根據(jù)疾病詞典獲得,所以實體對齊部分可省略,采用屬性對齊替換。首先根據(jù)構(gòu)建好的本體進行屬性對齊,然后計算各屬性的相似度,最后根據(jù)屬性相似度計算實體相似度,完成知識融合。
2.4.1 屬性對齊
在呼吸系統(tǒng)疾病中,屬性種類不多,可以根據(jù)呼吸疾病本體來構(gòu)建屬性映射表,將同一類實體的同一屬性的不同表達方式對齊。表1 是不同來源數(shù)據(jù)的屬性對齊映射。再通過本體定義的屬性類型將各屬性值規(guī)范化處理,主要規(guī)則有:1)統(tǒng)一所有數(shù)值型屬性值的度量單位;2)保留區(qū)間型屬性值的上限和下限;3)去除字符串屬性和文本類屬性中的錯誤字符;4)對于所有的屬性值的缺失值均以NAN表示。
表1 部分屬性對齊映射
2.4.2 屬性相似度
完成屬性對齊后,計算不同類型屬性相似度。由于疾病實體包含了大量的別名信息,可將實體名稱與別名合并成集合來計算相似度。假設(shè)有x和y兩個實體,實體的名稱集合為S和T。
1)實體名稱集相似度
通過計算集合S和T的交集元素在S,T的并集中所占的比例、衡量兩個集合的相似度。len(x,y)表示字符串屬性xattr、yattr最大公共子序列長度。
3)文本類型相似度
首先通過呼吸系統(tǒng)疾病詞典以及結(jié)巴分詞對文本類屬性進行分詞,然后根據(jù)TF-IDF(Term Frequency-Inverse Document Frequency,詞頻-逆文件頻率)找出文本的關(guān)鍵詞。最后,通過余弦相似度計算關(guān)鍵詞集合的相似度:
4)區(qū)間型屬性相似度
數(shù)值區(qū)間和時間區(qū)間屬性都可采用Dice 系數(shù)計算相似度,取值范圍在[0,1]:
其中|xattr∩yattr|是x和y區(qū)間屬性的交集,|xattr|和|yattr|分別表示x和y屬性中元素的長度。
2.4.3 實體相似度
根據(jù)得到的屬性相似度,采用加權(quán)平均的方法,得到最終的實體相似度[1]:
實驗結(jié)果采用準確率、召回率、F1 值進行評判,實驗結(jié)果:準確率為81.4%,召回率為61.5%,F(xiàn)1值70.1%。
至此,完成多源異構(gòu)數(shù)據(jù)的知識融合。
本文采用Neo4j圖數(shù)據(jù)庫存儲[17]呼吸系統(tǒng)疾病三元組數(shù)據(jù)以及可視化展示,Neo4j 以屬性圖的的形式存儲數(shù)據(jù)節(jié)點,具有訪問速度快、性能高、輕量級等特點[18]。呼吸系統(tǒng)疾病中文知識圖譜存儲了共15763 條呼吸疾病三元組數(shù)據(jù),包括疾病的簡介、癥狀、科室、治療周期、藥品以及檢查等關(guān)鍵數(shù)據(jù)信息。表2為主要實體類別統(tǒng)計數(shù)據(jù)表。
表2 主要實體類別統(tǒng)計數(shù)據(jù)表
呼吸系統(tǒng)疾病知識圖譜提供自助查詢。圖3是肺炎部分屬性查詢圖。患者通過圖譜查詢的肺炎常用藥品,包括阿莫西林顆粒,羅紅霉素膠囊等好評藥品。
圖3 肺炎部分屬性查詢圖
此外,呼吸疾病知識圖譜還可以根據(jù)患者的臨床表現(xiàn),輔助醫(yī)生決策。例如,根據(jù)圖譜信息,為一位有“呼吸困難”“咳嗽”“發(fā)熱”等癥狀的患者,進行“血常規(guī)”“胸部平片”“支氣管舒張試驗”等檢查,判斷此患者是否患有“哮喘”疾病。
醫(yī)療知識圖譜的構(gòu)建形成了相應的醫(yī)療知識體系,解決了醫(yī)療領(lǐng)域數(shù)據(jù)爆炸的問題,使得人們面對大量數(shù)據(jù)時,能夠快速準確地獲取關(guān)鍵信息。醫(yī)療問答系統(tǒng)[13]是呼吸疾病知識圖譜的主要應用之一,將構(gòu)建好的知識圖譜上的關(guān)系要素引入到問答過程中,解決了傳統(tǒng)問答模型對醫(yī)療領(lǐng)域知識利用不足的問題,方便患者了解自身病情、存儲藥物、調(diào)理身體。第二個應用是醫(yī)療決策支持系統(tǒng),通過患者的臨床表現(xiàn)、病歷單、化驗報告等數(shù)據(jù)信息,為醫(yī)療人員提供智能診斷,分析醫(yī)生診斷方案,提升醫(yī)療質(zhì)量、降低醫(yī)療風險。
本文針對呼吸疾病醫(yī)療數(shù)據(jù)數(shù)據(jù)分布龐雜、難以深層次應用的問題。爬取了呼吸疾病醫(yī)療數(shù)據(jù),通過計算不同屬性的相似度得出實體相似度,鏈接相同實體,完成知識融合。最后利用Neo4j 圖數(shù)據(jù)庫存儲呼吸疾病數(shù)據(jù)以及可視化展示,完成了呼吸疾病知識圖譜的構(gòu)建。未來工作將繼續(xù)完善知識圖譜,以及研發(fā)基于呼吸疾病知識圖的問答系統(tǒng)等輔助診治系統(tǒng)。