陳善達 梁 昊 李 亮
(1 湖南中醫(yī)藥大學,長沙,410208; 2 湖南中醫(yī)藥大學中醫(yī)診斷學湖南省重點實驗室,長沙,410208; 3 湖南中醫(yī)藥大學中醫(yī)心肺病證辨證與藥膳食療重點研究室,長沙,410208)
冠狀動脈粥樣硬化性心臟病(冠心病)是冠狀動脈發(fā)生粥樣硬化引起管腔狹窄或閉塞,導致心肌缺血、缺氧或壞死而引起的心臟病,屬于中醫(yī)學“胸痹”范疇。冠心病嚴重危害著人們的生命健康,2018年我國冠心病患者已達1 100萬,近年來發(fā)病呈上升、年輕化的趨勢[1]。中醫(yī)藥在冠心病防治中有獨到的優(yōu)勢,因此深入挖掘中醫(yī)藥治療冠心病的證候與用藥規(guī)律有重要意義。本文通過運用Python語言編寫程序腳本對從3個學術數(shù)據(jù)庫收集到的冠心病中醫(yī)病案進行數(shù)據(jù)挖掘,以期為Python語言在中醫(yī)藥領域的運用提供思路與方法。
1.1 文獻來源 所有病案數(shù)據(jù)來源于國家知識基礎設施數(shù)據(jù)庫(China National Knowledge Infrastructure,CNKI)、中國學術期刊數(shù)據(jù)庫(China Science Periodical Database,CSPD)、中文科技期刊數(shù)據(jù)庫(Chinese Citation Database,CCD)等數(shù)據(jù)庫。
1.2 檢索策略 運用CNKI、CSPD、CCD數(shù)據(jù)庫,以“冠心病驗案”“冠心病舉隅”或“胸痹驗案”“胸痹舉隅”為檢索式,檢索2010年1月1日至2020年1月1日的所有期刊文獻,共檢索出610篇;篩選并剔除重復文獻,最終納入222篇,共計醫(yī)案343個。
1.3 納入標準 1)符合西醫(yī)“冠心病”或中醫(yī)“胸痹”診斷標準且證候、證型、方藥完整的中醫(yī)診治文獻,診斷標準參照《內(nèi)科學》以及《中醫(yī)內(nèi)科學》[2-3];2)使用中藥內(nèi)服法治療。
1.4 排除標準 1)學術思想探討與綜述類的文獻;2)單味藥、藥對及復診處方。
1.5 數(shù)據(jù)規(guī)范與數(shù)據(jù)庫建立
1.5.1 數(shù)據(jù)庫的建立 運用Excel 2019收集每個病案的證型和用藥構建冠心病用藥數(shù)據(jù)庫,采用雙人分別錄入模式,錄入完成后進行雙人交叉核對,若存在不一致處則協(xié)商解決,以確保數(shù)據(jù)的準確性和規(guī)范性。
1.5.2 數(shù)據(jù)規(guī)范 參照中國中醫(yī)藥出版社出版的新世紀第4版《中藥學》以及朱文鋒教授主編的《證素辨證學》[4-5],對其中涉及的證候、證型、藥物的名稱進行規(guī)范化處理并將證型中包含的病性證素提取出來,例如,心慌→心悸,大便干結→便秘,炙甘草→甘草,山萸→山茱萸,氣虛夾瘀→氣虛血瘀→氣虛+血瘀等。見表1。
表1 部分證素、中藥規(guī)范
1.6 數(shù)據(jù)分析 運用Excel 2019分別對證候、證素和用藥進行頻數(shù)統(tǒng)計,按降序處理并計算相應的頻率。提取頻率≥10%的所有證素、證候、中藥以及頻次≥10的證素組合。在PyCharm Community Edition 2020.1.1中運行Python 3.8.3,運用xlwings工具包將Excel文件內(nèi)容提取到TXT文件中,運用Python內(nèi)置函數(shù)對數(shù)據(jù)進行處理,運用itertools工具包對所有高頻證素組合的高頻證候或高頻用藥進行排列組合,設置最小組合數(shù)為2,最大組合數(shù)為6,其中包含證素與證候或中藥的組合,也包含沒有證素只有證候或中藥的組合,篩選出既包含證素組合又包含證候或中藥的所有組合,進行頻數(shù)分析,篩選出頻率≥7%的“證素-證候”以及“證素-中藥”組合,并計算各組合的權值。根據(jù)朱文鋒教授的雙層頻權剪叉算法確定的權值計算方式為:某一“證素-證候”或“證素-中藥”組合的頻數(shù)/出現(xiàn)該證候或使用該中藥組合的所有“證素-證候”或“證素-中藥”組合的頻數(shù)[6-10]。例如,“氣虛+血瘀,苔白,乏力”這一“證素-證候”組合的權值=“氣虛+血瘀,苔白,乏力”這一“證素-證候”組合的頻次/所有包含“苔白,乏力”這一證候組合的“證素-證候”組合的頻次。權值越高則說明特異性越強。篩選出所有權值≥0.8的組合,再將篩選的結果取并集得出每一證素組合的高頻證候或高頻用藥,并用Python繪圖工具包Pyecharts繪制關聯(lián)圖。
2.1 頻數(shù)分析 本研究錄入的343個冠心病醫(yī)案處方中,涉及17個單一證素,累計頻次815次,頻率≥10%的有8個,分別為血瘀、痰、氣虛、氣滯、陽虛、陰虛、火(熱)、濕;涉及94種證素組合,累計頻次288次,頻次≥10次的組合有6個,分別為“氣虛+血瘀”“氣滯+血瘀”“痰+血瘀”等。見表2。涉及證候218個,累計頻次4 418次,出現(xiàn)頻率≥10%的證候共30個,分別為胸悶、胸痛、氣短、苔白、舌暗、乏力、脈弦、心悸、舌紅、脈細等。見表3。涉及313味中藥,累計頻次4 852次,使用頻率≥10%的中藥共37味,分別為丹參、甘草、川芎、半夏、茯苓、當歸、黃芪、薤白、赤芍、瓜蔞等。見表4。
表2 343個冠心病醫(yī)案處方高頻證素分布
表3 343個冠心病醫(yī)案高頻證候分布
表4 343個冠心病醫(yī)案高頻中藥分布
2.2 權值計算與篩選 對包含高頻證素的127個病案進行排列組合后,篩選出頻率≥7的組合,其中“證素-證候”組合共計377個,“證素-中藥”組合共計245個。對所有組合進行權值計算,其中權值≥0.8的“證素-證候”組合183個,權值≥0.8的“證素-中藥”組合153個。見表5~6。取交集后得到4個“證素-證候”組合,5個“證素-中藥”組合,其中中藥藥味≥5味的有3個。見表7~8?!白C素-證候”與“證素-中藥”組合的關聯(lián)圖見圖1~2。
表5 343個冠心病醫(yī)案部分“證素-證候”權值分布
表6 343個冠心病醫(yī)案部分“證素-中藥”權值分布
表7 343個冠心病醫(yī)案高頻“證素-證候”組合
圖1 343個冠心病醫(yī)案“證素-證候”與“證素-中藥”關聯(lián)
表8 343個冠心病醫(yī)案高頻“證素-中藥”組合
圖2 343個冠心病醫(yī)案“氣虛+血瘀”與證候、中藥關聯(lián)
冠心病屬于中醫(yī)學“胸痹”的范疇。中醫(yī)學認為胸痹的發(fā)生多與寒邪內(nèi)侵、飲食失調、情志失節(jié)、勞倦內(nèi)傷、年邁體虛等因素有關。其病機有虛實2方面,實性病機有寒凝、血瘀、氣滯、痰濁痹阻胸陽,阻滯心脈;虛性病機有氣虛、陰虛、陽虛,肺、脾、肝、腎虧虛,心脈失養(yǎng)。在本病證的形成和發(fā)展過程中,大多因實致虛,亦有因虛致實者。本研究通過對343個冠心病中醫(yī)病案頻數(shù)分析得出,與冠心病關聯(lián)度較高的實性證素為血瘀、痰、氣滯、濕、火(熱),出現(xiàn)頻次總計531次,虛性證素為氣虛、陽虛、陰虛,出現(xiàn)頻次總計230次,可見冠心病發(fā)病主要以因實致虛為主。從頻次與頻率來看,病機主要與血瘀、痰濁、氣虛所致的心脈痹阻有關。通過對343個冠心病病案的挖掘分析發(fā)現(xiàn),血瘀為冠心病的基本證素,多與氣虛、氣滯、痰、陰虛等證素相結合形成氣虛血瘀、氣滯血瘀、痰瘀互結、氣陰兩虛夾瘀、氣虛血瘀夾痰等證型。從“證候-證素”分布可以看出,4個證型的共同證候為胸悶、胸痛與舌暗,因瘀血痹阻心脈所致;心悸為氣虛血瘀、痰瘀互結與氣滯血瘀共有的證候,由于瘀血痹阻,心脈失養(yǎng)所致;失眠為氣虛血瘀、氣滯血瘀和氣陰兩虛夾瘀共有的證候,由于瘀血不去、心血不生、心神失養(yǎng)所致;脈細為氣虛血瘀與氣陰兩虛夾瘀共有的證候,由于體虛,運血無力所致;脈弦為痰瘀互結與氣滯血瘀共有的證候,是痰與氣滯的特征性證候;乏力為氣虛血瘀與痰瘀互結共有的證候,由于機體陽氣不運所致;氣虛血瘀特有的證候有苔白、舌淡、脈沉、汗出與氣短,由于血運不暢、宗氣不足、衛(wèi)表不固所致;痰瘀互結特有的證候有苔膩、納呆、苔厚、脈滑與舌胖,由于痰濁內(nèi)阻、脾胃運化失常、濁氣上泛所致;氣滯血瘀特有的證候有瘀點(斑)舌與苔黃,由于氣血運行不暢、郁而化熱所致。從“證素-中藥”分布可以看出,氣虛血瘀證用藥可歸納為補陽還五湯合八珍湯加減,具有益氣活血通絡的功效;氣滯血瘀證用藥可歸納為柴胡疏肝散合桃紅四物湯加減,具有疏肝解郁、理氣活血的功效;痰瘀互結證用藥可歸納為溫膽湯合瓜蔞薤白白酒湯加減,具有理氣化痰、通陽散結的功效。前3個組合中都用到了丹參和郁金,二味藥均為活血化瘀藥。丹參中的丹酚酸A、丹酚酸B、丹參素和丹參多酚酸鹽等主要水溶性成分可以通過保護血管內(nèi)皮、舒張冠狀動脈、促進血管再生、抗血小板聚集、抑制炎癥反應、抗細胞凋亡和清除自由基等多角度對缺血性心臟病起防治作用[11-14]。郁金中的莪術二酮能夠提高cAMP水平,抑制胞內(nèi)Ca2+調動,從而抑制血小板凝集,同時也能增強血管舒張能力以減少血栓的形成[15]。郁金中的柚皮素具有抗氧化、預防動脈粥樣硬化和降血脂的作用[16]。網(wǎng)絡藥理學研究表明,郁金能通過參與調節(jié)脂質代謝、氧化應激、免疫調節(jié)等來發(fā)揮清心涼血的功效[17]。
與傳統(tǒng)的運用軟件進行中醫(yī)藥數(shù)據(jù)挖掘比較,選擇編程語言可以根據(jù)自身的需求編寫代碼實現(xiàn)個性化的結果,使挖掘過程更具靈活性。例如,可以編寫程序腳本對TXT、Word或Excel等進行數(shù)據(jù)批量處理,根據(jù)需求設計算法,也可以進行個性化繪圖[18]。運用編程語言最大的特點是具有先進性,傳統(tǒng)的軟件維護更新較慢,許多功能比較落后,編程便可以彌補這一缺陷。與C語言、Java等代碼冗雜、格式繁瑣的編程語言比較,Python語言是目前最接近自然語言的高級語言,其代碼簡潔、可讀性高的特性適合初學者學習,并且學習投入與產(chǎn)出比高于其他語言[19-20]。Python還有許多開源免費、功能強大的工具包,在數(shù)據(jù)分析方面,Python有可以用于矩陣運算的NumPy包,用于數(shù)據(jù)處理的Pandas包,用于統(tǒng)計分析的SciPy包,用于機器學習的Scikit-Learn包,用于深度學習的Keras包、TensorFlow包和PyTorch包等,以及用于數(shù)據(jù)可視化的Matplotlib包和Pyecharts包等。
自2018年以來,Python的使用人數(shù)整體呈上升趨勢,在TIOBE發(fā)布的2020年11月編程語言排行榜中顯示,Python首次超越Java成為排名第2的編程語言。如今Python的發(fā)展勢頭強勁,日后在各大學科領域將會有諸多用武之地,同樣地,Python也將在中醫(yī)藥領域出現(xiàn)更多的創(chuàng)新與突破。