知识工程方法温有奎一、知识工程概念的提出知识工程就是探索关于知识的表示、获取(包括学习、保存及交换)和运用(包括检索、推理以及其它各种形式的加工)的理论、方法及实现技术。在1975年第五届国际人工智能会议上,有美国斯坦福大学计算机系教授哥鲍姆作了关于“人工智能技艺”的演讲,提出了知识工程这一概念,由此出现了知识工程的学科,并在近些年来迅速发展和演化。从传统意义上讲,知识工程与信息系统的发展有关,在信息系统中,知识和推理扮演着关键的角色。CommonKADS是一系列国际研究和知识工程应用项目的结晶。CommonKADS的实际应用表明许多系统项目之所以失败是因为一种叫做技术推动的方法。只有清楚系统的角色和它对组织的潜在影响,并且在系统开发之前和系统开发期间两者达到高度的一致,一个组织才能成功的应用信息和知识技术。因此对于组织的分析而言,引入面向知识的方法和技术是一个很大的进步。组织的分析目的是建立一个应用推动的方法。这种方法可以面向用户、客户和项目相关人员保证新系统能够解决实际问题或者利用组织内真正的机会。这个方法的其他有用的功能是可以解决复杂人机交互的建模问题,解决新规范技术的引入问题,解决灵活性、风险驱动定义以及可配置的生命周期管理方法的定义问题,该方法替代了用于信息系统项目的瀑布模型(该模型很经典,但过于严格)。4.1知识工程的含义与原理CommonKADS方法学提供了一种结构化方法。它基于几个基本思想或原则,而这些基本思想或原则是从长年的经验中得到的。我们简要地介绍作为现代知识工程基础的基本原则。知识工程不是“从专家的头脑中挖掘”的某种东西,而是由构造人类知识不同方面的模型组成。习惯上,知识工程被视为一种从专家的头脑中“提取”或“挖掘”出来并以可计算形式传送到机器的过程。这已被证明是原始和相当幼稚的观点。今天,知识工程被视为一种建模活动。模型是对现实的某一部分进行的一种有目的的抽象。建模是对知识的少数几个方面建立一种好的描述(即能够清楚地表达你的目的),而又忽略其他方面。按照CommonKADS的观点,知识项目用于构造某些方面的模型,这些模型应成为项目所提交的产品的一个重要部分。CommonKADS模型套件是分解和结构化知识工程过程的方便工具。知识级原则:在知识建模中,首先要集中考虑知识的概念结构,而把编程细节留在以后考虑。知识级原则首先是由AlanNewell(1982)提出的,他说:知识要在概念级上建模,而不应依赖于特殊的计算结构和软件实现。知识建模中所使用的概念应参照和反映现实世界领域,并用相关人员可理解的词汇进行表达。按照CommonKADS的观点,知识系统的制品的设计应当称为保持结构的设计,因为它遵循和保持了所分析的知识的概念结构。尽管知识的体系结构明显比基于规则的系统的结构更为复杂,但知识确实有可以理解的结构,这就是我们进行成功的知识分析的出发点。从概念上来说,知识级模型通过知识分类可帮助我们理解人类解决问题的世界。现代知识工程的一个重要结果是:人的专长可根据知识的稳定和通用的种类、模式和结构来进行明确的分析。因此,我们把知识看作是具有良好结构的函数模型,其不同部分在人类问题求解中担当着不同的、有限制的和专门的角色。开发简单或非常著名的信息系统通常遵循一种固定的管理路线。这就是所谓的系统开发的瀑布模型。它由按照预先定义好顺序的一些预先定义的阶段组成:项目的准备和计划;找出客户需求;详细说明和设计系统;编程、测试和交付使用——并且只能按这种顺序进行。知识非常丰富,直接套用这种严格的方法非常困难。快速原型法在知识系统中非常流行,因为它能进行现场学习,并能根据需要随时改变流程。快速原型法的缺点是难以预测和管理,这是它特定的本质。因此,ComnonKADS采用的一种可配置的、平衡的项目管理方法,它比瀑布模型更灵活,比快速原型法更易于控制。知识项目管理遵循螺旋式方法,这种方法支持结构化学习,即CoommonKADS模型的暂时结果或“状态”可作为下一步来采取什么步骤的信号。在确定这些步骤时,目标和风险概念起着关键作用。我们主要对知识抽取这一技术进行。知识抽取是由一组技术和方法组成的.这些技术和方法通过与专家不同形式的交互来抽取该领域专家的知识。领域专家是指掌握特定知识的人,这些知识可以用来解决我们感兴趣的应用任务。从始至终,我们将重点放在执行抽取的实际方法和方式上。在知识建模方法论语境中,我们使用例子来说明不同的技巧和工具是怎样在一起协调。知识抽取的特征知识抽取可以为知识建模提供素材。这些素材不全是“未加工”的,使用抽取技术后的结果通常是得到一种结构化的数据,例如,标记、图表、术语表、公式和非正式的规则等。意识到脱离了抽取技巧,一个人就无法得到真正且正式的描述是很重要的。在抽取上强加正式的表示将会在抽取过程中导致偏见,甚至经常会得到错误的数据。抽取应该要集中化和结构化,但是也要尽可能的开放。将抽取的原材料转化成问题解决过程中更正式的描述是知识建模的一个任务。执行知识抽取和知识分析的知识工程师(或者叫知识分析员)实质上不需要掌握很深的应用领域知识。在大多数情况下,他(她)实际上需要请教资深专家。这也许是因为当时没有可用的文档,或者他们意识到在从事的领域中真正的专家来自与实践,而不是死读书本。以下两个问题在知识抽取过程中相当突出(1)我们怎样让专家们告诉我们或者给我们演示他们做什么?(2)我们怎样决定他们解决问题的能力是由什么形成的?这个任务是非常艰巨的,特别是在大的应用语境中显得尤为突出。有很多情况会使问题变得更加难以处理。许多技术知识是从多年积累的经验中获得的,并且是以直观推断的形式表示的。直观推断是一种经验规则或者是一种已证明了的方法这些规则和方法可以用来获得特定信息的结果。通常,专业技术变得如此墨守成规,以至于专家们都无法知道他们做什么或者为什么做。。知识库(KB)知识库管理系统(KBMS)要用计算机进行知识处理和智能处理,则必须要有个“能对知识进行系统化地组织与管理、能存储、增、删、改、查询和检索知识的机构,这就是知识库和知识库管理系统的功能。因此,研究、开发知识库相知识库管理系统就是迫切而又必须要做的事情。知识的系统化组织与管理所谓知识,是人们对自然现象的认识和从中总结出规律、经验。人类的知识是极其丰富与庞杂的,如何规范地描述这些认识、规律、经验,一直是人们所探讨的问题。至今还没有一个统一的格式,但常用K=F十R十C模式来表达,其中;K表式知识项(Knowledge),F表事实(Fact),R表示规则(Rules),C表示概念(Concepts)。这里的概念主要指术语的含义、规则的语义说明等。知识的系统化的组织与管理机制包括:知识的结构化的存储。由于人类的知识太庞杂了,首先要对知识进行分类,再进行结构化处理,抽象出来,以便能由计算机进行有效的存储,这要与所用的知识表示的方式结合起来,在知识表示里大家可能已经知道了,但还要考虑知识库的存储结构,在下面小节里将对此进行介绍。技术工具(方法、硬件、软件、系统)包括:对知识库里存放的知识进行快速有效的查询与检索,对用户提供行之有效的查询与检索工具,是知识库最基本的功能。还应考虑在查询中用户提出的各种约束条件的处理,这个过程就包含了推理的因素,所以有人把这称为“智能性查询”。是有道理的。对知识库进行增、删、改操作,这是知识库的生命力的体现。因为人类的知识的变化与更新是很频繁的,对知识库里存放的知识进行增、删、改的操作是不可避免的,而且操作的次数还不会少,因此,向用户提供方便的增、删、改操作就显得特别重要了。在对知识库的增、删、改操作过程中必然会发生矛盾,即非一致性问题。还会出现知识的不完整性问题,这就要进行一致性与完整性处理,这是保证知识库所提供知识的正确性、完整性的重要措施。对知识进行结构化处理的方法引入“元规则”(Meta—Ru1e),即阐述规则的规则,用来指导规则的存储;构成具有层次结构的规则库,以便于查询、检索和运用;组成“树形结构”,如马里兰大学的CSA系统,将规则组成“激发树”;采用“树形结构”,如利用语义网络方法来表达和存储知识;适当地分类组织知识,如卡内基梅隆大学的AM系统,将数学核心概念知识以框架方式存放在事实库中;采用数据库技术,利用各种索引、目录、词典等技术,提高存储、检索效率。下面介绍的一种规则连接表和谓词/规则索引技术的方法,就是一种在一阶谓词逻辑的表示形式下,利用关系数据库提供的存储与管理数据的功能来对规则、事实、概念进行有效管理的一种方法。在一阶谓词逻辑中,谓词是最基本的语句表示单位,所有的规则和事实都是用谓词表达的。因此,通过谓词将规则库和知识库联系起来,能改变知识库的组织化程度,提高知识检索的效率。假设知识库KB中所有的谓词集合为P(1)事实库FB可表示成:FB=f(Pi)),Pi属于P其中,(f(Pi))表示所有的以谓词Pi打头的事实;(2)规则库RB可表示为:RB={r(pi)};Pi属于P其中r(Pi)=(Pi,ci1,ci2,..,cin)表示以pi为结论谓词,以cil,ci2,…,cin为条件谓词的一条规则:{r(Pi)}表示所有的以谓词Pi为结论谓词的规则;规定规则连接图的结点表示规则库中的一条规则。若ci是规则r(Q)的一个条件谓词。并且r(ci)属于RB,则在规则连接图中,从结点r(Q)到结点r(ci)画—条有向弧。这样,就可以建立起对应于规则库RB的规则连接图RcG;同时,建立从结论谓词到规则的谓词/规则索引,就可以一次性地快速检索出与某谓词有关的所有事实和规则。根据这些谓词很容易从事实库中找出所有以它们打头的事实来。用这种方法,可以快速、一次性地找出所有与某谓词有关的事实和规则来。即使出现递归的情况,也不会影响算法的正确性和效率,因此,这是一种非常有效的知识检索算法。知识库和知识库管理系统的功能知识表示功能;应能提供用户一种或多种知识表示方法,目前已有的知识表示方法有谓词逻辑方法、以框架为基础的知识表示方法、产生式规则、语义网络方法、脚本方法等等。常用的是谓词逻辑方法(尤以一阶谓词逻辑用得最为普遍)、框架方式和产生式规则。2.对知识有系统化的、组织管理机制,包括事实管理,规则管理,及概念管理,还有知识字典的管理工作。大容量知识的存储与管理是人们必须重视的。3.知识库的操作:知识库的建立与撤消,知识的插入、删除和修改,知识库的重组工作。4.能向用户提供对知识项进行查问、检索的功能,例如“知识查询语言”,还应能对用户的查询请求进行语法检查,并给出出错信息。将来,系统会用声、图、文的形式与用户进行交互活功。5.知识的获取与学习功能,知识的编辑功能,在获取新知识的过程中要对知识的完整性、新旧知识的一致性进行处理。6.知识库与知识库管理系统的维护与诊断,包括日常的系统事务管理、出错处理等等。7.知识库和知识库管理系统的安全控制用户的使用权限管理。知识模型组件“知识”与“信息”紧密相关,我们说:一个患者体温达到39.0°C的事实是一条信息,但内科医生有相应的知识推断出是否患者发烧。从系统工程的观点来看:知识最可能被看作是一种特殊类型的信息,叫做“关于信息的信息”。知识告诉我们关于特定信息的事情。将知识整合到一个子类体系中,这通常会成为知识建模的工具。两类之间子类链接提供这两类的信息。因此知识具有典型的“关于”特征:它告诉我们关于理解一些其他信息的方式:四、知识系统的开发步骤进入与知识建模相关的详细内容之前,我们先来看一个简单例子。试想一个提供贷款的财务应用。这个领域中的两个类和其他一些典型属性如图4.1所示。该图还表示了信息和知识的区别。信息通常是一个某人X有一笔贷款Y。我们用一个信息type(类型)做这个信息的模型,在这个例予中,在person(人)和loan(贷款)之间有has_loan(借贷)关系。图中还包含被我们直觉地称为知识的三个陈述。例如,所有申请贷款者至少18周岁。知识作为“关于信息的信息”的观点在这里得到支持。这些