陳善達 夏帥帥 鄧文祥 李 亮 晏峻峰
1.湖南中醫藥大學中醫學院,湖南長沙 410208;2.中醫診斷學湖南省重點實驗室,湖南長沙 410208;3.湖南中醫藥大學信息科學與工程學院,湖南長沙 410208
冠心病是冠狀動脈發生粥樣硬化引起管腔狹窄或閉塞,導致心肌缺血、缺氧或壞死而引起的心臟病,屬于中醫“胸痹”范疇。冠心病嚴重危害人們的生命健康,2018 年我國冠心病患者已達1100 萬,近年來發病愈加呈上升、年輕化的趨勢[1]。中醫藥在冠心病防治中有著獨特的優勢[2-3],因此,深入挖掘中醫藥在冠心病中的辨證論治規律有著重要意義。
辨證論治是通過望、聞、問、切四診合參收集患者的證候資料,加以綜合分析,辨清疾病當前階段的病機特點并確定治法方藥的過程,是中醫學的診療特色。如今中醫藥事業的傳承與發展到了瓶頸期,亟需從現代信息技術中尋求突破[4]。朱文鋒教授團隊創立了證素辨證學,由證候推斷出特定的證素并結合成完整證型,對中醫辨證環節起到了執簡馭繁的作用[5],相反,將完整的證型拆分成證素組合可以更清楚地反映疾病當前階段的病機特點[6]。因此,本研究以證素辨證為核心,運用圖數據庫表達其與證候、中藥的關系。
Neo4j[7]是一種開源的圖數據庫,相比傳統數據庫,更能以圖形節點的形式呈現數據與數據之間的關系,并借此創造一種既視感,更有利于接受。Neo4j 通過其特有的Cypher 語句能夠實現與其他數據庫一樣的結構化編程,實現數據的導入、增、刪、改、查等操作。已有學者將Neo4j 運用于中醫藥領域的研究,如趙凱等[8]采用Neo4j 構建了桂枝湯類方的知識圖譜;姜惠娟等[9]以《中國藥膳大辭典》為數據來源,采用Neo4j 構建藥膳方劑圖數據庫。基于此,本研究探討采用Neo4j 構建一個小型冠心病辨證論治知識圖譜。
數據來源于中國知網、維普及萬方數據庫。以“冠心病”“胸痹”“舉隅”“驗案”為關鍵詞或主題詞檢索2010 年1 月至2020 年2 月所有文獻,共檢索出770 篇,剔除重復的文獻,納入符合要求的文獻,共208 篇。
符合西醫“冠心病”或中醫“胸痹”診斷標準且證候、證型、方藥完整的中醫診治文獻,診斷標準參照人民衛生出版社出版的第9 版《內科學》[10]教材,以及中國中醫藥出版社出版的第4 版《中醫內科學》[11]教材。
①學術思想探討與綜述類文獻;②單味藥或藥對不予納入。
1.4.1 數據規范 參照中國中醫藥出版社出版的第4 版《中藥學》[12]以及朱文鋒教授的《證素辨證學》[13]對其中涉及的證候和藥物的名稱進行規范化處理并將證型中包含的病性證素提取出來。例如:大便不成形→便溏,山萸→山茱萸,氣虛血瘀→氣虛、血瘀等。
1.4.2 數據分析與數據庫的建立 將篩選出的208 篇文獻作為研究對象,采用Microsoft Office Excel 2010 建立數據表記錄每個案例的證候、證型以及用藥等信息,共錄入329 個案例,統計證候、病性證素和中藥的頻次與頻率。在Pycharm 2019.1.3 中采用Python 3.7 進行權值計算,參照朱文鋒教授的雙層頻權剪叉算法[14]確立的權值計算方法:某一證候、病性證素或中藥在某一病性證素中出現的頻次與該證候、病性證素或中藥在所有病性證素中出現的總頻次的比值。例如:胸悶在“血瘀”這一病性證素中出現的頻次為180,在所有病性證素中出現的頻次為276,則胸悶在病性證素“血瘀”中的權值為0.65。權值可以反映某一證候、病性證素或中藥在一定范圍內的關聯性,權值越靠前則關聯性越強。在Pycharm 2019.1.3 中采用Python 3.7實現Apriori 算法對所有中藥進行關聯規則分析,最小支持度設為10%,最小置信度設為60%。隨后,將權值計算以及關聯分析得出的結果分別導入到Neo4j Community 3.5.14 中構建圖數據庫,并進行數據一致性檢驗,目的是找出并修改節點與關系不匹配的節點或關系,例如:“瘀點(斑)舌→血瘀”的關系為“證候→中心證素”,若變為“中心證素→證候”則為節點與關系不匹配[15]。采用的Cypher 語句功能:load 將文件導入Neo4j 中;merge 創建節點或關系;set 設置節點屬性;match 查詢指定節點或關系;where 設定查詢的條件;order by 將結果進行排序;desc 按降序排序;limit 限制輸出結果的數量。
本研究涉及證候217 個,累計出現4202 次,出現頻率≥10%的證候有29 個,其出現頻率≥50%的證候有胸悶、胸痛、氣短、苔白、乏力,見表1;涉及病性證素17 個,累計出現770 次,出現頻率≥10%的病性證素有8 個,分別為血瘀、痰、氣虛、氣滯、陽虛、陰虛、濕、火(熱),見表2,與冠心病關聯度最高的病性證素為血瘀、痰、氣虛,與冠心病現代中醫證候特征的臨床流行病學調查結果相符[16]。本研究涉及藥物301 種,累計用藥頻次4576 次,使用頻率≥10%的中藥有37 種,其中使用頻率≥50%的藥物有丹參、甘草,見表3。

表1 出現頻率≥10%證候分布表(前10 位)

表2 出現頻率≥10%病性證素分布表

表3 使用頻率≥10%中藥分布表(前10 位)
在Pycharm 2019.1.3 中采用Python 3.7 對出現頻率≥10%的證候、病性證素、中藥進行權值計算,共計582 條,部分結果見表4,如第1 條氣虛為在“血瘀”這一病性證素中占比最大的證候,氣虛在所有病性證素中出現的總頻次為110 次,有77%都出現在“血瘀”這一病性證素中,以此類推,“瘀點(斑)舌”這一證候95%都出現在“血瘀”這一病性證素中。

表4 出現頻率≥10%證候、病性證素、中藥權值表(排位第1)
在Pycharm 2019.1.3 中采用Python 3.7 實現Apriori 算法對所有中藥進行關聯規則分析,最小支持度設為10%,最小置信度設為60%,挖掘出61 條關聯規則,見表5。其中前項為前提事件,后項為伴隨事件,支持度為前提事件在所有事件中出現的頻率,置信度為在前提事件出現的情況下,伴隨事件出現的概率。

表5 出現頻率≥10%的中藥關聯表(置信度≥75%)
采用match、where 語句條件查詢節點,然后采用set 語句為節點設置各項屬性,name 為節點名,_name為關系名,freq 或freq1 為頻次,freq2 為頻率,weight為權值,support 為支持度,confidence 為置信度,見圖1。采用match 語句查詢“血瘀”“痰”“氣虛”3 個病性證素的所有關系,然后采用order 和desc 語句按權值降序排序,最后采用limit 語句限制輸出前20 條關系,見圖2~4。同理,采用match、order、desc、limit 語句輸出置信度≥75%的中藥關系圖,見圖5。圖中圓圈代表節點,箭頭代表關系,關系a 為“證候→中心病性證素”,關系b 為“中心病性證素→病性證素”,關系c為“中心證素→前項中藥”,關系d 為“前項中藥→后項中藥”。

圖1 節點/關系屬性圖

圖2 血瘀前20 關系圖

圖3 痰前20 關系圖

圖4 氣虛前20 關系圖

圖5 中藥置信度≥0.75 關聯圖
圖數據庫可以很直觀地將數據與數據間的關系呈現在人們眼前。Neo4j 是當下熱門的圖數據庫之一,與普通的圖處理或內存級數據庫不同的是,其實現了專業數據庫級別圖數據模型的存儲;其性能比其他數據庫穩定且運行速度要更快[7]。本研究采用頻數統計、權值計算、關聯分析以及Neo4j 技術構建了一個簡單冠心病辨證論治知識表達圖數據庫。本研究結果所示,將辨證論治數據導入Neo4j 圖數據庫中,通過為關系設置屬性,并通過特定的查詢、篩選語句可以更清楚地辨識出辨證論治中的復雜關系,這為中醫辨證論治知識表達圖數據庫的構建提供了方法指導。