专家系统中的推理机(inferenceengine)以及主要种类
本⽂参考:
专家系统
专家系统:模仿⼈类专家的思维⽅式进⾏决策的⼈⼯智能算法,算法核⼼是“知识库(knowledge base)”和“推理机(inference engine)”。专家系统通常包括6个部分:⼈机交互界⾯、知识库、综合数据库、推理机、解释器、知识获取。
知识库:包含解决问题相关的领域知识。在基于规则的专家系统中,知识⽤⼀组规则来表达。其具有IF(条件)THEN(⾏为)结构,当规则的条件被满⾜时,触发规则,继⽽执⾏⾏为。
数据库:包含⼀组事实,⽤于匹配知识库中的IF(条件)。
推理机:执⾏推理,专家系统由此到解决⽅案。推理引擎链接知识库中的规则和数据库中的事实。
解释器:⽤户使⽤解释器查看专家系统怎样得出解决⽅案的过程。
⼈机交互界⾯:⼈机交互界⾯是实现⽤户(查询问题解决⽅案)和专家系统之间交流的途径。
⼀个完整的专家系统图⽰如下:
推理机
“推理机”根据“知识库”对“数据库”做出决策的基本原理图如下:
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接⼝,不⽀持对实例的查询。
hermitHermit
HermiT⽀持OWL2本体语⾔的所有特性,包括OWL 2的所有数据类型,并且它正确地执⾏对象和数据属性分类,其中有些推理任务并不完全
由其他OWL推理器⽀持。
在Protege中,常⽤的OWL推理机主要包括HermiT、FaCT、Pellet。
[1] 潘超, 古辉. 本体推理机及应⽤[J]. 计算机系统应⽤, 2010, 19(009):163-167.