针对中医诊断流程所涉及的中医领域知识,对中医本体概念及其属性进行分析,利用Protégé软件构建中医领域的知识本体。以知识本体为基础,提出基于SWRL语言的诊断推理规则,引入C-F模型对中医症状、诊断规则等不确定性因素进行匹配度计算,通过Jess推理引擎进行诊断推理的验证,尝试中医诊断推理过程中组合条件下的语义推理,为构建中医智能诊断系统打下基础。
According to the diagnosis process, this article analyzes the concepts and properties of TCM knowledge, constructs the Ontology for TCM by Protégé. Based on the Ontology, it proposes a method to express the diagnosis reasoning rules by SWRL, combines the SWRL rules and C-F theory to realize semantic reasoning in the field of fuzzy inference under multiple conditions. The method is a useful exploration for Ontology application in the professional field, and lays the foundation for building intelligence system of diagnosis.
本体是共享概念模型的形式化规范说明[ 1, 2],能够准确描述概念与概念间的内在关联,并通过逻辑推理获得概念之间的蕴涵关系,具有语义表达和推理的能力。将本体的方法应用于中医概念的提取和关系的分析,有利于明确、规范地表达中医知识,并为中医领域知识库的建设、语义检索和知识推理打下基础。
基于中医子领域本体的应用研究主要集中在语义检索和知识推理。张海舒等[ 3]从规范控制、构建原则、本体构建工具、系统架构等方面论述了基于本体的中医古籍知识库构建。林尔正[ 4]构建了中医骨伤古籍本体,并尝试实现骨伤古籍语义检索。易钢等[ 5]以KAON2为本体开发平台,构建基于J2EE分布式组建环境的知识管理系统。李永瑾[ 6]探索了基于MPI+OpenMP混合编程模型的本体语义检索。于静等[ 7]关注中医方剂本体构建过程中的概念形式化研究,并实现了“类方”概念的形式化,将其应用到方剂本体语义查询和知识推理的平台开发中。李新霞等[ 8]以诊断推理为应用场景,讨论了中医本体在脾胃病辅助诊断中的应用。
总体来说,基于中医本体的应用研究多采用单一条件、单一规则的知识推理,而现实问题多涉及复杂条件和各种模糊因素,如何模拟这样的实际情况是实现智能推理需要解决的重要问题。本文以中医诊断为应用场景构建领域知识本体,基于语义网规则语言[ 9](Semantic Web Rule Language,SWRL)推理机制进行中医诊断推理规则的设计,并引入非精确性推理模型C-F[ 10, 11, 12]的理论和方法来描述推理过程中不确定因素的匹配概率,从而解决组合条件推理中对于模糊因素的计算问题。
中医诊断过程中,医生通过对病人观察、病人口述病情结合现代医学的一些检查化验结果来得知病人病情,然后把病人的病情状态总结为中医的症状、脉象和舌象等,通过这几个概念来诊断病人患病症候,最后针对症候所处的状态开具药方。通过模拟这一过程,得出的中医诊断流程如图1所示:
可以看出,模拟中医诊断的过程主要是完成诊断推理和方剂推理这两个任务,涉及到以下的中医领域知识:
(1)症状集合、脉象集合、舌象集合和方剂集合的定义;
(2)诊断规则的定义。
本文基于诊断流程的领域本体构建,继承了NKIMed[ 13]对于中医概念的分类,如中医术语、中医症、中医脉象等本体类。方法上,通过模拟中医诊断流程来提取中医的概念类;自顶向下逐级细化建立其下一级子类,实现对核心概念的层次体系结构扩展(图2为中医诊断本体的概念层次模型);对图2中最低一级概念类逐一分析,厘清类之间的属性关系,实现对中医诊断概念间内在隐性关系的挖掘[ 14]。
采用OWL DL[ 15]作为知识的表达方式,并利用斯坦福大学的Protégé[ 15]软件构建中医诊断本体,建立类、子类、属性和实例,图3为中医诊断本体类的属性关系图,类之间的属性关系是实现推理的基础。
2.3 基于SWRL的诊断推理规则
OWL DL虽然提供完备的概念和分类定义,但它不能把属性表示成一般形式的规则,无法实现基于规则的推理,因此采用SWRL来定义中医诊断的推理规则。SWRL以OWL DL、OWL Lite和Rule为基础并加入规则,可以驱使规则实现与OWL知识库的结合,其实现的诊断推理规则有两种制式[ 16]:
(1)C(x):x可以是变量或实例;C是类。说明x是C类的一个实例,如症候(?x)。
(2)P(x,y):x、y可以是变量、实例或数值;P是OWL的属性。说明具有P属性y,如主症不满足(?x, ?y)。
通过模拟图1所示的中医诊断流程,定义诊断推理的SWRL规则,原理是把病人各种症状和脉象等信息,与中医症候的症状集合进行匹配,包括症状满足与症状不满足两种,病人症状满足某一症候时,推理得出结论为“症状满足”,否则为“症状不满足”[ 8]。诊断推理规则的Atom表如表1所示:
![]() | 表1 诊断推理规则的Atom列表 |
部分诊断推理规则如表2所示:
![]() | 表2 诊断推理规则 |
基于SWRL的诊断推理规则,可以推断某个症状与症候匹配与否。在现实情况中,病人病情的诊断是一个不确定的过程,病情的症状、舌象、脉象不一定完全匹配某一症候,而不同的症候,病人在症状方面可能会一样或者有相似情况。因此,从这些症状不能百分百地推出结论,针对这一特点,本文引入非精确性推理模型C-F的理论和方法,来计算病人症状与某症候症状集进行匹配时的匹配度。C-F模型给出了通过计算可信度来表示推理过程不确定性的基本方法,为中医诊断推理提供了可应用的模型。但中医领域的知识有其自身的特点,与C-F描述的基本模型有一定的差异。
(1)证据E的可信度取值。C-F模型中证据E的可信度取值为(-1,1),而在现实诊断过程中,医生对于病人情况的诊断所采用的证据,也就是病情的“症状”,其可信度取值应该是大于0的,对于证据为假即E可信度小于0的情况,医生将不会采用该证据,直接舍弃。因此,方剂推理模型的证据可信度取值范围调整为[0,1]。
症状的来源有病人口述、医生观测、把脉、舌象和一些仪器检查单如B超、心电图等。“症状”即证据的可信度,来自医生的判断。比如病人口述自身疾病的症状,某些情况下不是太准确,其可信度可能偏低,而仪器设备检查出的结果可能相对准确,医生会对其提供的病人情况给予更大的可信度。可信度的大小,会直接影响最后疾病诊断的结果。
(2)激活证据E的可信度取值的阈值。这在C-F模型中并没有体现,而中医领域医生诊断治疗过程中,对于证据可信度的取值有一定要求。例如,“畏寒怯冷”这一症状是中医“脾阳不振症”的一个主要表现,那么医生必须确定病人有这个症状,才能考虑诊断病情可能为“脾阳不振症”。也就是说,当病人有“畏寒怯冷”这一症状的可信度较高,比如超过0.8,那么医生才会采纳“畏寒怯冷”这一症状,否则可能导致误诊。因此,方剂推荐模型引入可信度的取值阈值τ,只有当可信度大于等于τ,相应的证据和结论才能被采用,τ值由中医领域知识专家确定。
(3)证据E的加权。C-F模型假设所有证据对于系统的影响都是平等的,即权值相等,所不同的只是证据的可信度。在现实疾病诊断过程中,病人的症状、脉象和舌象等,对病人病情的反映是有主次的。主要症状能主要地反映病情,次要症状反映病情的能力相对弱一些。比如,对低血糖的诊断,有两个知识是血糖检测数据和病人经常头晕,血糖检测的数据更能影响医生对病人情况的了解,而头晕可能的原因有很多,血糖数据对于医生结论的影响可能是0.8,但头晕这个症状对医生结论的影响只有0.2,这就是两个证据权值的不同。方剂推理系统为证据设置了权值λ。
(4)多个证据E的组合。C-F模型中多个证据E的组合分为“析取”和“合取”两种情况,中医领域知识在推理过程中对于知识的运用都是“合取”关系,即多个证据同时有效,根据多个证据推理一个结果。
综上分析,针对中医方剂领域知识的特点,构建方剂推荐的推理模型如下:
①推理公式:
IF E THEN H(CF(H,E), τ) (1)
其中,E是前提条件,H为结论,CF(H,E)为该条知识的可信度,即规则强度,取值范围为[0,1],取值由中医领域专家给出。
②多个证据的“合取”推理公式:
IF E1(cf1, λ1) AND E2(cf2, λ2) AND…AND En(cfn, λn)
THEN H(CF(H,E), τ) (2)
其中,cfi 表示条件Ei的可信度,取值为[0,1],并且条件Ei 可信度有一个阈值τi,当cfi ≥τi时,条件Ei才被采用。λi是证据Ei的加权因子,其取值范围为[0,1],其值由中医领域专家给出,且满足条件:
③组合证据的可信度算法:
E=E1(λ1) AND E2(λ2) AND, …,AND En(λn),对于不同cfi取值的证据可信度算法分别为:
cfi<τi时,CF(E)=0;
cfi≥τi时,CF(E)=
只有当CF(E) ≥λ时,组合证据才被采纳,否则舍弃。
④结论的可信度算法:
CF(H)=
(5)
⑤相同结论的可信度合成算法:
IF EiTHEN H(CF(H,Ei), τi) (i=1,2,…,n)
以递推方法求出H的综合可信度,令C1=CF(H,E1) ×CF(E1)。对于每条证据,对于任意k>1时:
Ck=Ck-1+(1-Ck-1) ×CF(H,Ek) ×CF(Ek),
当k=n时,CF(H)= Ck (6)
根据不同CF(H)值,系统给出不同的推理结果:
CF(H)≥0.7,系统为该病人确诊,根据确诊结果,推荐符合该症候的典型方剂。
0.4 CF(H)≤0.4,系统不作诊断,提示信息太少,需重新录入病人病情信息。
SWRL可以使用本体已定义好的概念来建立推理所使用的规则,C-F模型的引入是对这些规则应用进行组织计算,但SWRL无法直接由推理机释义,本文选择了Jess这种效率较高的规则引擎来实现推理,并使用Protégé软件的Jess Tab插件实现SWRL规则向Jess规则的转换。
举一则中医病例,来说明诊断推理的具体实现。
(1)某病人对自身病情描述为:吃饭后经常胃胀,容易累,而且常常便秘。医生对病人详细的观察后,对其病症做以下的规范化描述:
主症1:食后作胀
主症2:大便秘结
次症1:消瘦
次症2:头晕脑胀
脉象:脉细弱
舌象:苔腻苔薄
系统对规范化的数据进行分析处理,该病例的系统内信息描述如表3所示:
![]() | 表3 病例症状的可信度 |
其中,τi是对症状设置的可信度阈值,λi为各个症状的加权因子,体现各症状对于推出结果的重要性,这两个值都是由中医领域专家设置,用户即医生对系统的使用过程中,无法修改这两个值。
表3中每个症状的可信度cfi都是由用户输入,体现医生对于该症状的可信程度,可以看出,该病例中症状的可信度都大于阈值,即这些症状都可以参与对结果的影响。
(2)系统推理规则
系统每条推理规则对于推理产生的影响不同,因此中医领域专家对于规则设置的可信度也有差异。
SWRL编写的主症满足与主症不满足规则如下:
方剂治疗案例(?x)疾病情况(?x,?y)∧患病主症(?y, ?m)∧症候(?a)∧症状集(?a, ?n)∧sameAS(?m, ?n)→ 主症满足(?a, ?m)
方剂治疗案例(?x)疾病情况(?x,?y)∧患病次症(?y, ?m)∧症候(?a)∧症状集(?a, ?n)∧differentFrom(?m, ?n)→ 次症不满足(?a, ?m)
系统对主症满足规则可信度设置为:主症满足(cfi, τi),是指这条主症满足规则的推理结果为“满足”时,规则可信度为证据原来的可信度不变。τi为该规则的可信度阈值。
系统对主症不满足规则可信度设置为:主症满足(0, τi)。由此可看出,一个症状是否满足某个症候的可能结果只有可信度为cfi的满足、0不满足,这符合现实意义。同样,次症满足规则、脉象满足规则和舌象满足规则的可信度设置都为(cfi, τi),次症不满足规则、脉象不满足规则和舌象不满足规则的可信度设置都为(0,0.7)。
下面是系统内设置的症候推理规则:
IF 主症1满足(cf1, τ1)
AND主症2满足(cf2, τ2)
AND次症1满足(cf3, τ3)
AND次症2满足(cf4, τ4)
AND脉象满足(cf5, τ5)
AND舌象满足(cf6, τ6)
THEN 满足症候(CF(E), τ)
主症2满足(cf2, τ2)表示,主症2满足这个前提条件可信度为cf2,可信度阈值为τ2。组合证据的可信度阈值τ为0.7,推理可信度CF(H,E)为0.9。
(1)以该病例与脾阴亏虚症症候的匹配计算为例,脾阴亏虚症知识如表4所示:
![]() | 表4 脾阴亏虚症知识 |
系统对该病例与脾阴亏虚症的症状集合进行匹配计算:
主症1:食后作胀 →主症1满足(0.95,0.7)
主症2:大便秘结 →主症2满足(0.95,0.7)
次症1:消瘦 →次症1满足(0.95,0.5)
次症2:头晕脑胀 →次症2满足(0,0.5)
脉象:脉细弱 →脉象满足(0,0.8)
舌象:苔腻苔薄 →舌象满足(0.95,0.7)
匹配度计算需要的数据如表5所示:
![]() | 表5 与脾阴亏虚症的匹配度计算 |
根据公式(4)对于组合证据的可信度算法,只有当CF(E) ≥λ时,组合证据才被采纳,否则舍弃。
计算得到:CF(E)=0.4×0.95+0.3×0.95+0.05×0.95+0.05×0+0.1×0+0.1×0.95=0.807 5
根据该病人病情推导得出症候为脾阴亏虚症的证据可信度为0.807 5,显然大于τi阈值0.7,因此该组合证据可以被使用,即该病人病情可以考虑为脾阴亏虚症。再由公式(5)计算得到CF(H)=0.807 5×0.9=0.726 75。由此得出,该病人满足脾阴亏虚症的匹配率为0.726 75。
根据不同CF(H)值,系统给出不同的推理结果:
CF(H)≥0.7,系统为该病人确诊,根据确诊结果,推荐符合该症候的典型方剂。在案例中,推理的诊断结果为脾阴亏虚症,推荐方剂为滋脾更衣汤。
0.4 CF(H)≤0.4,系统不作诊断,提示信息太少,需重新录入病人病情信息。 (2)以该病例与寒湿困脾症症候的匹配计算为例,寒湿困脾症的知识如表6所示: 系统对该病例与寒湿困脾症的症状集合进行匹配计算(表7是该匹配计算过程中需要的数据): 主症1:食后作胀 →主症1满足(0.95,0.7) 主症2:大便秘结 →主症2满足(0,0.7) 次症1:消瘦 →次症1满足(0,0.5) 次症2:头晕脑胀 →次症2满足(0,0.5) 脉象:脉细弱 →脉象满足(0,0.8) 舌象:苔腻苔薄 →舌象满足(0,0.7) 根据公式(4)对组合证据的可信度算法,只有当CF(E)≥λ时,组合证据才被采纳,否则舍弃。 计算得到:CF(E)=0.4×0.95+0.3×0+0.05×0+0.05×0+0.1×0+0.1×0=0.38 根据该病人病情推导得出症候为脾阴亏虚症的证据可信度为0.38,显然小于τi阈值0.7,因此该组合证据无法被用于证明症状满足寒湿困脾症。因此,系统不作诊断,提示信息太少,需重新录入病人病情信息。 表6 寒湿困脾症知识 表7 与寒湿困脾症匹配度计算
基于C-F模型的中医本体推理与实现主要从本体在中医诊断领域的应用进行探索。本文的创新之处在于,将多个单一的知识推理进行不同层次的组合,以模拟现实诊断过程中出现的各种不确定因素,如病人症状获得的可靠性、某一症状符合某种疾病的支持概率、推理规则本身的可靠性等,并引入C-F模型计算组合条件下推理结果的匹配概率,从而实现最优诊断推理。下一步的研究任务是将中医领域知识本体规模化,并探讨在大规模本体中有效实现多条件模拟和匹配概率计算的方法。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
[10] |
|
[11] |
|
[12] |
|
[13] |
|
[14] |
|
[15] |
|
[16] |
|