本文参考:专家系统中的推理机实现

专家系统

专家系统:模仿人类专家的思维方式进行决策的人工智能算法,算法核心是“知识库(knowledge base)”和“推理机(inference engine)”。专家系统通常包括6个部分:人机交互界面、知识库、综合数据库、推理机、解释器、知识获取。

  • 知识库:包含解决问题相关的领域知识。在基于规则的专家系统中,知识用一组规则来表达。其具有IF(条件)THEN(行为)结构,当规则的条件被满足时,触发规则,继而执行行为。
  • 数据库:包含一组事实,用于匹配知识库中的IF(条件)。
  • 推理机:执行推理,专家系统由此找到解决方案。推理引擎链接知识库中的规则和数据库中的事实。
  • 解释器:用户使用解释器查看专家系统怎样得出解决方案的过程。
  • 人机交互界面:人机交互界面是实现用户(查询问题解决方案)和专家系统之间交流的途径。

一个完整的专家系统图示如下:

专家系统 推理机 python 专家系统 推理机_数据库

推理机

“推理机”根据“知识库”对“数据库”做出决策的基本原理图如下:

专家系统 推理机 python 专家系统 推理机_CLIPS_02

CLIPS(C Language Integrated Production System)是一类推理机,原则上可以处理各种领域的推理任务,只要系统能够为CLIPS提供这个领域的特有领域规则(知识库)和事实信息(数据库)。

Jess

Jess(Java Expert Shell System)是基于Java语言的CLISP推理机。Jess(CLIPS)的优点是:推理机是开放的,用户提供不同的规则系统,就可以进行不同领域的推理工作,用户可以对推理机的推理能力进行扩展。但,作为前向推理系统,Jess用空间换时间,推理会产生大量的中间数据,空间效率很低;同时,由于Jess(CLIPS)是通用推理引擎,不可能提供针对各种具体领域的优化能力,使得这种推理机制的效率很难优化。

针对本体的几类推理机

针对本体的推理一般集中在集中标准的本体语言上,如OWL、RDFS/RDF、DAML等。针对本体的推理机,如Jena、Pellet、FaCT、RACER等,效率较高,但推理能力局限在以上的本体语言中。

Jena

Jena是面向语义Web的应用开发包,包含的内容比较全面,推理机只是其中一部分。但Jena本身并不是‘推理机设计专家’,它自身包含的推理机基本上就是一种CLIPS配合本体领域产生式规则的前向推理系统。因此,它的运行效率不是很高。好在现在有DIG接口,DIG有点象数据库中的ODBC,允许前端挂接到后台不同的推理引擎上。

Pellet

Pellet是一个较为“专业”的推理机,由美国马里兰大学(College Park分校)的MindSwap实验室开发。Pellet是基于Java的开放源码系统。Pellet效率较高,但是缺乏对本体规则语言SWRL的支持并且支持的查询语言不够全面,一般只是进行A-Box推理的时候使用Pellet,如果牵涉到T-Box则推荐使用Racer。

RACER

Racer由德国汉堡大学开发,采用Tableaux算法。给定一个Tbox后,Racer可以完成各种查询服务,在Tbox方面推理能力较强,对大本体文件支持良好。但是Racer不支持对枚举类和用户自定义数据类型的推理。

FaCT++

FaCT++是FaCT的新一代产品,由英国曼城斯特大学开发,采用Tableaux算法。Fact++采用了c++语言,但是没有提供OWL接口,不支持对实例的查询。

Hermit

HermiT支持OWL2本体语言的所有特性,包括OWL 2的所有数据类型,并且它正确地执行对象和数据属性分类,其中有些推理任务并不完全由其他OWL推理器支持。

在Protege中,常用的OWL推理机主要包括HermiT、FaCT、Pellet。

[1] 潘超, 古辉. 本体推理机及应用[J]. 计算机系统应用, 2010, 19(009):163-167.