基于社区发现算法的消渴六经证候研究*

2022-09-29 15:21瞿溢谦虞红蕾刘雨佳曹灵勇林树元
世界科学技术-中医药现代化 2022年5期
关键词:主症古籍证候

刘 畅,瞿溢谦,虞红蕾,刘雨佳,杨 帆,王 平,李 煜,曹灵勇**,林树元**

(1. 浙江中医药大学基础医学院 杭州 310053;2. 广东省中医院 广州 510120;3. 杭州甘之草科技有限公司杭州 310000;4. 澳门科技大学中医药学院 澳门 999078)

1 前言

消渴病以多饮、多食、多尿、口渴、乏力、消瘦,或尿有甜味为主要临床表现,可见于现代医学的糖尿病等[1]。经方是以张仲景六经辨证为理论核心的汉唐方脉医学理论体系[2]。经方在改善胰岛素低抗、保护胰岛功能等方面具有明确优势。然而六经证候的复杂性、高维性[3],为其研究和挖掘带来困难,也限制了证候的标准化、规范化。消渴的六经证候相关知识散见于多部经方医学古籍[4-6],加大了证候研究的难度。

数据挖掘技术可以从大量数据中挖掘隐藏的知识或模式,在模糊、非线性数据的分析中独具优势。目前,中医证候研究中应用较为广泛的数据挖掘技术是频数统计、聚类分析和因子分析等[7]。因子分析在运算中对数据进行了降维处理,导致信息减损;其得到的“公因子”还需结合聚类分析[8]或人工整合,才能得到专业上可解释的证候类别,这一过程增加了证候的主观性。近年来,有研究将复杂网络分析技术应用于中医证候研究,在病历数据的挖掘中取得了有意义的结果[9-11]。然而古籍知识以医理论述、方药为主,较病历数据更为稀疏,以上述方法分析难以获得满意的结果。

知识图谱与复杂网络相融合的研究方法,为古籍证候知识的挖掘提供了可能。目前知识图谱技术在中医药领域主要用于本体构建和数据库构建[12],基于图谱进行知识挖掘尚未见报导。从连接属性来看,知识图谱也属于复杂网络的一种[13]。复杂网络的社区结构,能发现网络中节点紧密的连接和相似的属性,并基于此挖掘节点的潜在类别[14],这与中医证候的数据结构特点和挖掘需求较为契合[3]。借助知识图谱技术,古籍中的信息可经过抽取、融合,存储为图结构的数据,再通过复杂网络分析技术中的社区发现算法对图谱进行分析,得到证候和主症等隐藏信息。这一方法可处理稀疏数据,无需对低频次的症状进行删减或合并,减少了信息减损和人工干预。

因此,本研究在消渴病经方古籍知识图谱的基础上,采用社区发现算法进行消渴病六经证候分布规律挖掘,对结果进行可视化展示。

2 资料与方法

2.1 数据来源

课题组在前期研究中已完成消渴病经方古籍知识图谱的构建工作[15]。该图谱包含9 部经方代表典籍中和消渴病相关的内容,采用Neo4j图数据库构建,包含1432 个节点、3067 个关系,其模式层包含24 个节点,24 个标签,54 条关系和24 种关系类型。该图谱可通过节点的多个属性值和标签,兼容古籍中一词多义的语言现象。例如允许病名“消渴”和症状“消渴”同时存在,且检索时可以通过属性值进行区分(图1)。

图1 “消渴”病名与症状节点图谱展示(部分)

2.2 知识挖掘

2.2.1 方法简介

本文主要采用Louvain 社区发现算法挖掘图谱中的证候分布规律,采用PageRank 算法明确各证候的主症,并与因子分析结果进行对比。

(1) Louvain算法

社区发现算法从原理上可分为分离和聚合两类。分离法基于移除社区的边达到划分社区的效果,而聚合法则基于节点链接的紧密度聚合为一个社区。Louvain 算法属于聚合法,是使用优化模块度(Modularity,通常以Q表示)的方法以提高社区划分效率的方法。模块度是社区内节点的连边数与随机情况下的边数之差。该算法计算过程中对节点进行逐层压缩,计算效率高,是目前最为高效且被广泛应用的社区发现算法之一[16]。其流程如下:

①将图中的每个节点看成一个独立的社区,社区的数目与节点个数相同;

②对每个节点i,依次尝试把i 分配到其每个邻居节点所在的社区,计算分配前与分配后的模块度增益(以ΔQ表示),并记录ΔQ最大的邻居节点;如果maxΔQ>0,则把节点i 分配到ΔQ最大的邻居节点所在的社区,否则保持不变;

③重复②,直到所有节点的所属社区不再变化;

④对图进行压缩,将所有在同一个社区的节点压缩成一个新节点,原社区内节点之间的边的权重转化为新节点的权重,原社区间的边权重转化为新节点间的边权重。如图2 所示,0、1、2、4、5 这5 个节点在第一轮社区划分中属于同一个社区,则在下一轮计算时,将5 个节点折叠成一个新节点(以节点14 代表),再进行社区划分。

图2 Louvain算法中的节点压缩示意图[16]

⑤重复上述步骤,直到整个图的模块度不再发生变化。

Q的计算公式为:

其中,Aij表示节点i和节点j之间边的权重,kj表示所有和节点j连接的边的权重之和,ki表示所有和节点i连接的边的权重之和,kj/2m表示节点j和整个实体图上任意一个节点连接的概率。m=1/2∑ijAij表示整个图中所有边的权重,即图中边的总数量。ci表示节点i所属的社区;当节点i和节点j在同一个社区时,δ(ci,cj)的函数值为0,否则为1。随机情况下,节点i和节点j的期望连接权重为ki×kj/2m,Aij-ki×kj/2m即为节点i和j实际连接权重与期望连接权重之差。

于是模块度增益ΔQ的计算公式为:

公式2 前半部分表示将节点i加入到社区c后的模块度;后半部分表示加入节点i之前,社区c和节点i作为一个独立社区时,二者的模块度之和。两者相减即为模块度的增益。

由于Louvain 算法只能获得症状的社区分布情况,而要进行专业分析得到证候,还需要知道社区内症状之间的主次关系。在一个社区中,某个节点与其他节点存在的连边越多、权重越大,说明其在社区内的影响力越大。由此,可以通过计算各症状节点的影响力并排序,得到主症。

(2) PageRank算法

PageRank 算法[17]源于网页链接结构的算法,它将互联网中众多网页看做图的节点,网页之间的链接看做边,通过计算某个网页被访问的概率(即PR 值),体现该网页的影响力。要得到这个概率,需要累加指向网页的所有链接的重要性分值。

对于一个页面A,它的PR值为:

其中PR(A)是页面A的PR值,PR(Tn)是页面Tn的PR值。页面Tn是指向A的所有页面中的某个页面。C(Tn)是页面Tn的出度,也就是Tn指向其他页面的边的个数。d为阻尼系数,表示在任意时刻,用户到达某页面后并继续向后浏览的概率,该数值是根据上网者使用浏览器书签的平均频率估算而得,通常d=0.85。

该公式适用于节点之间连边不带权重的情况,本研究中症状节点之间的连边带有权重信息,故需要在计算PR(Tn)和C(Tn)时累加权重。例如,症状A、B、C、D在社区中的连接关系如图3 所示,其中A、B之间的连边表示两个症状在实体图中共现,边上的数字3 表示共现次数为3。

图3 症状连边权重示意图

假设各节点PR初始值为1,则:

以同样的方式,计算其他节点的PR值,并带入公式,计算第二轮PR(A),直至两次相邻迭代结果的差值小于收敛阈值(本研究设为0.00001),导出各症状节点在其所属社区中的PR值。PR值越大,说明该症状出现的概率越大,越有可能是主症。

2.2.2 挖掘过程

(1) 图映射

知识图谱中包含了不同类别的节点和关系,与证候研究相关的信息混杂其中,需要先将实体图映射为症状关联子图再进行社区发现。使用Cypher 语句抽取所有症状节点作为子图的节点,统计症状在图谱中“共现”的次数作为子图中边的权重。“共现”定义为两个症状在实体图中通过同一中间节点相连,该中间节点的类别不限(包括条文编号、方剂、病机、药物等)。为避免重复计算权重,若两个症状的中间节点类别为条文编号,限制其关系的权重最高为1。

(2) 社区划分

添加Apoc 算法插件包,调用Louvain 算法得到症状的社区发现结果。算法输入为上一步抽取的症状关联子图,输出为社区数量、模块度、节点数量、每个社区包含的具体节点(症状)。将输出导入Gephi0.9.2软件进行可视化(图4)。

(3) 主症挖掘

运行PageRank 算法,导出各症状节点在所属社区中PR 值的大小和排序。排在前10%的认为是该证候的主要症状,其余为次要症状。

2.2.3 因子分析

抽取图谱中的症状和条文编号信息,以条文为单位进行症状频数统计,运用Excel2007 软件建立数据库。采用SPSS26.0 统计软件进行PCA 分析和因子分析。

对数据进行KMO检验和巴特利特检验,以判断是否适合因子分析。根据PCA 分析结果确定主成分数,对初始因子使用最大方差法进行因子旋转,迭代收敛,得到旋转后的因子载荷矩阵。因子中变量的载荷值越大,则该变量对因子的影响越大。提取载荷系数大于0.4 的症状变量作为主症,将荷载系数在0.15~0.4 之间的症状变量作为兼证。

2.2.4 六经证候分析

本研究参考《中医诊断学》[18]六经辨证诊断标准和《经方探源》[19]中的六经证候二级分类方法,对挖掘结果进行病位、病性分析和六经辨证分析。

3 结果

3.1 社区分布

得到4 个核心社区,占实体图症状节点比例的95.82%(图4)。其中社区1 为最大的社区,占全部症状节点的35.60%。图中节点的面积大小代表其连边的数量。

图4 消渴病症状社区分布图

3.2 社区发现证候分布

由社区发现得到4 个社区,其六经证候分别为阳明病、阳明太阴合病、太阴病(水证)、太阴病(血证)(表1)。

表1 社区发现挖掘结果及证候分析表

社区1 证候为阳明病,以火热燔灼为病机核心。主证中,火热伤津导致口渴而多饮、发热头痛等症,如“渴者,属阳明”(《伤寒论》97 条),以及“阳明病,发热汗出者,此为热越”(《伤寒论·辨可下病脉证并治》);火热上扰心神,故见烦躁、惊悸等症。伴随症状(四肢拘急不利、反张、爪甲枯槁、面青等)提示津血被火热耗伤后筋脉不荣,而津伤之后可出现白虎汤“背微恶寒”之症。该证候属于消渴病初期,中焦、上焦邪热为主,以多饮、多食为典型症状。

社区2 证候为阳明太阴合病,以水火夹杂为病机核心。阳明里热与水饮相搏,因此主证既会见到口渴而多饮,又会见到小便频数而不欲饮。正如《金匮要略·消渴小便不利淋病》所言:“小便不利者,有水气”。火性炎上,当火热夹杂水饮向上攻冲,会导致三焦不利、表里互兼、虚实夹杂的证候群,则病属厥阴。例如同时出现上焦的口干多饮、胸闷、眩晕、目赤,中焦的多食,下焦的小便不利、小便混浊或有甜味、阳痿;因为虚实夹杂,所以脱形、羸瘦与口渴、多食、疮疡并见。该证候属于消渴典型期,常“三多一少”并见。

社区3 证候为太阴病(水证),以水湿停聚为病机核心。短气、胸满、浮肿、小便不通为太阴脾失健运、水湿停聚之表现,见于《金匮要略·痰饮咳嗽》篇:“短气不得卧,其形如肿”、“短气有微饮,当从小便去之”。见于经方中“小便不利,微热消渴”的五苓散证,以及“吐而渴欲饮水”的茯苓泽泻汤证。该证候属于消渴典型期,常见“下消”为主的多尿症状。

社区4 证候为太阴病(血证),以津血亏虚为病机核心[20]。如消瘦、乏力、肢体痿废、健忘、抑郁、咽干唇裂等,为津血亏虚不能充养肌肉、头面脑窍之症;而纳差、脐腹痛、少尿等,为津血不能濡润肠道、尿液化源不足之证。其症状与虚劳典型方证小建中汤证相类似:“虚劳里急,悸,衄,腹中痛,梦失精,四肢酸疼,手足烦热,咽干口燥”。此时火热并非实证,而是津血亏虚日久、阴不敛阳之虚火,故以建中法补益津血而润降。该证候属于消渴后期,以虚损为典型表现。

3.3 因子分析证候分布

图谱中的症状变量过于分散,KMO 检验和巴特利特球形检验提示不适合直接进行因子分析。对相似症状进行合并,剔除频率<4%的症状,再进行检验,KMO 检验系数为0.559>0.5,巴特利特球形检验<0.001,表示该数据可以进行因子分析。由主成分分析选取特征值小于1 的10 个公因子,累计贡献量为73.858%。对初始因子进行因子旋转,收敛得到旋转后的因子载荷矩阵。

续表

公因子中六经证候以阳明病(X2、X4、X5、X8)最为集中,其中因子X8 具备消渴病典型的“三多一少”症状;其次为太阴病(X1、X9、X10)、阳明太阴合病(X3)。因子X7症状寒热杂错,经过讨论认为其主症见于《备急千金要方》巴郡三黄丸中:“治男子五劳七伤,消渴,不生肌肉,妇人带下,手足寒热者”。本方由黄连、黄芩、大黄组成,属于苦寒直折火热的治法,故推测X7 的手足凉为气火内郁所致,归入阳明。因子X6信息较少,未能判断具体六经证候(表2)。

表2 因子分析挖掘结果及证候分析表

4 讨论

4.1 消渴病六经证候分布规律探讨

以往对消渴病的六经证候研究多采用经验总结的方法,不同学者对其六经证候分类认识存在较大差异:有认为本病辨治应以少阳为主者[21],有运用“火热论”辨治者[22],有从“三阴病”论治者[23],亦有认为本病

除了太阴证其余五经证均可见者[24]。基于经验总结的六经证候分类,受个人对经典理解差异的影响,难以进行标准化和推广应用。近年来,有研究采用因子分析等数据挖掘技术分析2 型糖尿病的证候特征,认为本病常见证型为肺热津伤证、胃热炽盛证、气阴两虚证、肾阳气虚证、气虚证、痰湿证、血瘀证、肾阴亏虚证和阴阳两虚证[25]。然而上述研究针对文献报道或临床数据进行挖掘,侧重于临床现象的总结;本研究针对经方古籍进行挖掘,侧重于经典古籍中消渴病相关的知识发现。此外,目前尚未见采用知识图谱相关技术进行证候挖掘的报道。

本研究从六经辨证角度对消渴病相关经方古籍进行证候挖掘,发现本病六经证候分布符合郁热虚损的整体病程规律[26],但虚证的证候与以往研究结论存在差异。社区3以水饮泛溢为主,治疗需淡渗利水,以茯苓类方为代表;社区4以津虚血弱为核心,治疗需酸甘化阴,以芍药配饴糖等甘药的建中法为代表。以往研究中并未涉及相应证候和治法,上述证候的挖掘可为经方临床辨证立法提供参考。

4.2 采用社区发现算法进行证候挖掘的优势

因子分析是目前应用最广泛的证候挖掘方法之一,然而该方法不适合过于分散的数据,中医古籍等知识载体恰恰具有信息分散的特点。以往的研究中,多采用合并症状的方法,使数据满足因子分析条件检验,这也导致了信息的减损。此外,因子分析将因子载荷较大的症状作为主症,而这些症状本质上是让公因子之间具备明显差异的症状,这导致公因子中的“主症”往往不包含不同证候的共有症状,其专业上的可解释性较差,容易导致结果失真[24]。

采用社区发现算法进行证候挖掘,可充分利用节点之间的关联信息,无需对症状进行合并;通过可视化工具,可直观展示症状的聚集情况,各证候之间的交叉症状既为图中社区共用的节点。该方法减少了证候挖掘中的信息减损和人工干预。佟旭[27]等认为社区发现算法将每个症状对证型的贡献度都考虑在内,且不会遗漏症状间的相互作用。本文在社区发现算法基础上引入知识图谱技术,不仅能保留更丰富、更全面的古籍语义,还便于整合多种数据源的知识;得益于图存储结构,知识图谱不仅能存储大量多维关联信息,而且能实现快速的查询[28]。这些特点让知识图谱在中医证候挖掘等复杂知识发现任务中独具优势。

本研究的局限性:为保证图谱内容的准确性,在图谱构建中采取了手工标注方法,不利于大量古籍数据的研究,后续将利用已有的标注数据探索人机结合标注和半自动图谱构建。中医证候数据挖掘目前尚无客观量化的评价方法,本研究现阶段仅采用分析对照的方法进行比较。研究对于图谱中的图结构信息利用尚存在不足,如症状节点之间的上下位关系、最短路径等信息,将在后续研究中尝试通过图表示学习等方法加以利用,比较证候挖掘效果。

5 总结

综上,本文创新将知识图谱与社区发现算法结合,从六经辨证角度对经方古籍中的消渴病证候进行挖掘和可视化展示;与因子分析比较,该方法避免了证候挖掘过程中的信息减损和人工干预,提高了挖掘结果在专业上的可解释性,为中医古籍知识挖掘提供了新的方法学参考。本研究发现,消渴病虚证存在典型的太阴证,而太阴水证、血证的偏盛又有不同的证候特点,这为本病的经方辨治提供了理论支持。

猜你喜欢
主症古籍证候
萧山地区帕金森病睡眠障碍患者中医证候要素、复合证候及其危险因素研究
广泛性焦虑障碍中医证候、体质及其关系的研究进展
慢性阻塞性肺疾病中医证候研究综述
补肝汤治疗肝肾阴虚型慢性乙型肝炎效果分析及对患者中医证候积分的影响
寻常型银屑病主症量表反应度测评研究
中医古籍“疒”部俗字考辨举隅
不寐常见方证与药证辑要
中医分型辨治脂肪肝
西藏大批珍贵藏文古籍实现“云阅读”
治幽螺,中医分三型