新闻  |   论坛  |   博客  |   在线研讨会
基于知识的中医药对症开方专家系统——AET/2008 34(4)
canso | 2009-02-23 14:50:14    阅读:2443   发布文章

  摘 要: 在数据挖掘得出的知识库基础上,结合中药方剂配伍理论及组方过程,提出了方剂配方模型,采用自定义的U连接操作生成主方剂,用中药配伍规则修正主方剂中的药物相克、有毒等不正常现象,再对方剂的四气、五味进行数字化调整,成功为用户开出治疗特定症状的量化中药方剂,切实为医生及中药研发人员提供计算机辅助决策支持。

  关键词: 中医药; 配方模型; 知识管理; 决策支持

  自人工智能技术诞生以来,专家系统一直是最活跃的分支之一,而医疗也一直是专家系统的典型实际应用领域。在此中,疾病诊断系统是近年来的研究热点,众多学者已先后提出多种疾病诊断模型[1-4]。然而,对症开方系统尤其是中药配方系统却少有人涉及。中医药是我国的国粹,经过数千年的发展,它积累了丰富的经验,拥有浩瀚的文献,运用最新科学技术来促进中医药的国际化、现代化已成为中医发展的必然趋势。

  为此,作者初步研制了中医药应用决策支持系统。该系统是数据挖掘技术与中医配伍理论相结合的结果。系统首先从原始的中药专利数据库中提取数据加以预处理,再经数据挖掘得到有用的知识组建配方知识库[5-6];然后用本文提出的对症开方模型为用户自动开出中药方剂,从而达到决策支持的目的。这种方法智能而且高效,是人为中药配伍所不及的。

  1 对症开方系统结构

  对症开方系统模型结构图如图1所示。从图中可以看出,对症开方模型针对病人或中药研发人员输入的症状集,从配方知识库中匹配症状,生成初始主方剂;然后应用配伍知识对主方剂进行修正;最终生成期望的中药方剂。可见,其最核心的部分是配方知识库,下面介绍该模型的知识表示。

  

 

  2 配方知识管理

  本模型中的知识库分为三大类:症-药组知识库、配伍知识库和药性知识库。每个知识库主要包括配方参量和规则两部分。配方参量是指开方过程中所利用的反映疾病或药物的基本参数;规则一般是指专家的经验知识,表现了病症与药组、药物与药物之间的内在联系。

  2.1 配方知识的表示

  配方参量在不同的情况下将会有不同的取值,为了有利于配方参量的组织和管理,本专家系统使用对象、属性、值的三元组表示标准。对象可以是抽象的实体,如疾病、药物等,属性是与对象相关的普通特征,如疾病的症状、药物的四气五味等,值是指在特定环境下属性的特殊性质。在对症开方系统中配方参量的结构定义为:

  Struct Parameter{

  Char *ParameterObj; //对象

  Char *ParameterAttr; //属性名

  Int *ParameterType; //属性类型

  Int *ParameterNum; //属性值的数目

  Char *ParameterVal; //属性值

  };

  产生式规则是应用最广泛的知识描述方法,其表示形式为:

  IF〈前提〉THEN〈结论〉|〈动作〉[〈可信度〉c]

  ELSE〈结论〉 [〈可信度〉c]

  即:当前提满足时,得出结论或执行动作,其可信度是c。系统中规则类的定义为:

  class rules{

  Char *name;   //规则名

  Premise *clause; //规则前提

  Premise *action; //前提成立时要执行的结论

  Float *certainty;  //规则可信度

  Void set_medicine();

  Void get_medicine();

  Premise reference(Premise pr);

  };

  其中,前提是由配方参量在特定环境下取值。它是单个命题的五元组,定义为:

  Struct Premise{

  Char *ParameterObj; //对象

  Char *ParameterAttr; //属性名

  char *ParameterOper; //关系运算符

  Char *ParameterVal; //属性值

  Struct Premise*next;

  };

  2.2 配方知识库的建立和维护

  对知识进行系统化的组织与存储并能够进行有效的管理是建立专家系统时必须要考虑的问题。在关系数据库的基础上建立知识库,充分利用关系数据库管理系统功能,可以方便知识库管理系统的设计。它通过数据库本身的技术,如关联、索引等技术来实现简单的知识推理,并实现对知识库的维护。

  从知识的逻辑表示观点来看,配方知识库中只存在两种谓词:配方参量和规则;而从数据的关系模型的观点看,知识库中存在两种关系,对应这两种关系可以建立两张表,如表1和表2所示。

  

 

  表1中定义的六个字段分别对应于参量的结构定义。表2中的每一条规则都在特定的知识库中,属性名、关系运算符和属性值构成规则的前提,药组即是由前提推导出的结论。

  3 对症开方模型的设计

  根据图1的系统结构,对症开方模型分四步进行处理:

  步骤1 药组U连接,生成主方剂

  当病人或者中药研发人员向中药配方系统输入他们需要配置中药药方的症状集时,对症开方模块第一步做的处理就是为输入的各个症状,从(症-药组)知识库中查找各自的药组,然后进行一个U连接,生成主方剂。

  定义1 X操作 (药组与药组间的操作)

  设有药组B1=(aL, bH, dM);B2=(aM, bH, cL)(小写字母表示药物名,大写字母表示药剂量,以下类同),则B1 X B2 =(aM, bH, cL, dM),即当药组中存在相同的药物时合并同一药物,药剂量取相同药物中最高的一项(L  通过对各个症状对应的药组进行X操作,就可以得到治疗症状集的中药主方剂。但是仍然存在如下问题:规则中,同一个症状可能对应有几个不同的药组(一般会得到1~3个药组),这样,假设用户输入的症状共有10个,最坏的情况(每个症状对应的药组为3个)下,如果通过从每个症状中选取一个药组来组成中药方剂,则一共有310=59 049个不同的中药方剂。如果在这么多的方剂中要人为去选择,就不可能提供良好的决策支持。

  若对59 049种不同的中药方剂进行分析,可以发现,其中有大量的方剂只有很细微的区别,并不具代表性,完全可以合并。为了组合方剂,使方剂的数量尽量地少,而各条方剂又都具代表性,本系统设计了如下的药组连接方法:

  定义2 U连接

  设有n个症状(A1, A2, … An) (n≥1),分别从(症-药组)知识库中查找到各自的药组有:(A1;B11, B12,…,B1i),(A2;B21,B22,…,B2j),(A3;B31, B32,…,B3k)…(An;Bn1, Bn2, …,Bnl)(一个症状对应的药组个数:i, j,k…l≥1),取前三位症状的药组个数i、j、k,设y=max(i,j,k),则这n个症状的U连接操作如下:

  

 

  当症状Ax对应的药组个数Γ(Γ≥1)小于y时,则取Bxt=B1(Γ  因此,通过把用户输入的症状进行U连接,可以得到中药方剂个数为y。为了更明显地区分各个方剂的代表性,再做如下预处理:

  (1)对用户输入的症状进行一定的限制,按照症状表现的明显程度和影响程度从高到低输入症状,即(A1, A2,…An) n个症状中A1的影响和表现是最强的。

  (2)对已知的一个症状从(症-药组)知识库中查找药组时,按照药组的支持数由高到低排列。

  通过以上的预处理再进行U连接,便得出了比较具有代表性、数量较少的中药方剂。从医学的角度看,某种疾病一般而言有1~5种最能体现疾病的基本症状,因此,本系统在生成主方剂时重新考虑了前三个症状,所以有y=max(i,j,k),前三个症状所拥有的药组数决定了将生成中药方剂的数目。

  为了加深U连接操作的理解,以图2表示主方剂的生成过程。

  

 

  通过以上方法,就可以将(症-药组)知识库转换成症状的主方剂。

  步骤2 应用配伍知识修正主方剂

  在数据库设计中,可以知道配伍知识主要是收集了中药性相克、会发生反应、药物组合显毒性的规则。这项处理起来比较简单,关键问题在于如何建立知识库。

  修正方法:把各主方剂依次和配伍知识库中的属性进行匹配,如匹配成功,则说明需对主方剂添加或减去药组中的相应药物,从而达到方剂的配伍修正。

  步骤3 方剂四气调整

  四气的调整旨在为用户开出特定四气的中药方剂。为了便于调整,可将四气分成如表3所示的几种,并且加以数字化。

  

 

  经过对方剂四气的数字化,就可以用数字来计算方剂的平均四气,并可以为用户配出一定四气值的方剂。有关方剂的四气计算公式如下:

  

 

  

 

  在公式(3)中,调整药物是系统提供的少量几种不影响药性但能调整方剂四气的中药材,可以供用户选择或系统推荐(按最大推荐法,即如果需要添加四气为凉的药物,则选择四气值最低的药物进行调整)并自动计算需要的剂量。通过公式(3),用户即可以得到想要的四气方剂。

  步骤4 方剂五味调整

  中药理论将五味分为:甘、苦、酸、咸、辛。五味的调整旨在为用户开出特定五味的中药方剂。为了方便调整可将五味数字化,用一个四元向量β(a, b, c, d)来表示,如表4所示。

  

 

  因此,可以得出一个方剂的五味,其计算公式如下:

  

 

  根据公式(4)就可以得到已经方剂的五味向量。由于五味中只有甘、苦是明显相克的,所以对五味的调整主要是对方剂甘、苦味觉的调整,调整的方法与四气的调整方法相似,这里不再赘述。

  经过以上一系列过程的处理,系统已经对用户的需求开出了系统认为最佳的方剂。

  4 对症开方模型的实现

  对症开方系统运行于Windows操作系统上,采用了B/S结构,Tomcat5.5 作为Web服务器,SQL Sever2000作为系统数据库,用Java Server Page(JSP) 及JavaBean技术编写而成。用户只需根据上述对症开方流程在操作界面内输入相应参数,系统就可自动生成中药方剂。例如,用户在完成输入如下四个症状:鼻塞、咳嗽、发热和头痛;方剂四气设置为:微温;方剂五味设置为微甘等步骤后,系统就会针对所输入症状给出如图3所示的推荐的中药方剂。

  

 

  本文重点研究了中医药的对症开方模型,该模型是数据挖掘技术与中医配伍理论相结合的结果。中医药与计算机的结合是全新的中药配伍方法。它通过对药组进行U连接产生主方剂,再经配伍修正、四气、五味调整,实现了对症开方功能,成功地为用户开出治疗特定症状的量化中药方剂,以此形式为病人、中药研发人员提供强有力的决策支持,也为中医药现代化建设做出了贡献。

  参考文献

  [1] 邵虹,崔文成,张继武,等.医疗诊断专家系统研究进展[J]. 小型微型计算机系统,2003,24(3):509-512.

  [2] 林媛,陈新,崔智.面向对象的医疗诊断推理机设计[J]. 计算机应用与软件,2001,18(1):5-9.

  [3] 张红梅,王永成.一个仿人疾病诊断专家系统模型[J]. 计算机应用研究,2000,(1):41-43.

  [4] 谭义红,陈治平,李学勇.基于决策树 的中毒诊断专家系统实现[J]. 计算机应用,2005,(10):2315-2317.

  [5] 朱金伟,鞠时光,辛燕.基于数据挖掘 的中医药数据预处理方法[J].计算机工程,2006,32(15):280-282.

  [6] 辛燕,鞠时光.基于多维数据模型的交叉层关联规则挖掘[J]. 小型微型计算机系统,2006,27(4):681-686.

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客