文档介绍:第6章知识表示
知识及其表示
框架
语义网络
面向对象知识表示
知识及其表示
知识的概念
“知识”是我们熟悉的名词。但究竟什么是知识呢?我们认为,知识就是人们对客观事物(包括自然的和人造的)及其规律的认识,知识还包括人们利用客观规律解决实际问题的方法和策略等。
对客观事物及其规律的认识,包括对事物的现象、本质、属性、状态、关系、联系和运动等的认识,即对客观事物的原理的认识。利用客观规律解决实际问题的方法和策略,包括解决问题的步骤、操作、规则、过程、技术、技巧等具体的微观性方法;也包括诸如战术、战略、计谋、策略等宏观性方法。所以,就内容而言,知识可分为(客观)原理性知识和(主观)方法性知识两大类。
就形式而言,知识可分为显式的和隐式的。
知识表示
这里的知识表示,是指面向计算机的知识描述或表达形式和方法。我们知道,面向人的知识表示可以是语言、文字、数字、符号、公式、图表、图形、图像等多种形式。这些表示形式是人所能接受、理解和处理的形式。但面向人的这些知识表示形式,目前还不能完全直接用于计算机,因此就需要研究适于计算机的知识表示模式。具体来讲,就是要用某种约定的(外部)形式结构来描述知识,而且这种形式结构还要能够转换为机器的内部形式,使得计算机能方便地存储、处理和利用。
知识表示并不神秘。实际上,我们已经接触过或使用过。例如,我们通常所说的算法,就是一种知识表示形式。因为它刻划了解决问题的方法和步骤(即它描述的是知识),又可以在计算机上用程序实现。又如一阶谓词公式,它是一种表达力很强的形式语言,它也可以用程序语言实现,所以它也可作为一种知识表示形式。
知识表示的语言实现
上面谈的知识表示,仅是指知识的逻辑结构或形式。那么,要把这些外部的逻辑形式转化为机器的内部形式,还需要程序语言的支持。原则上讲,一般的通用程序设计语言都可实现上述的大部分表示方法。但使用专用的面向某一知识表示的语言更为方便和有效。因此,几乎每一种知识表示方法都有其相应的专用实现语言。例如,支持谓词逻辑的语言有PROLOG和LISP,专门支持产生式的语言有OPS5,专门支持框架的语言有FRL,支持面向对象表示的语言有Smalltalk、C++和Java等,支持神经网络表示的语言有AXON。
框架
框架的概念
顾名思义,框架就是一种结构,一种模式,其一般形式是:
<框架名>
<槽名1><槽值1>| <侧面名11><侧面值111,侧面值112,…>
<侧面名12><侧面值121,侧面值122,…>
<槽名2><槽值2>|<侧面名21><侧面值211,侧面值212,…>
<侧面名22><侧面值221,侧面值222,…>
…
<槽名k><槽值k>| <侧面名k1><侧面值k11,侧面值k12,…>
<侧面名k2><侧面值k21,侧面值k22,…>
即一个框架一般有若干个槽,一个槽有一个槽值或者有若干个侧面,而一个侧面又有若干个侧面值。其中槽值和侧面值可以是数值、字符串、布尔值,也可以是一个动作或过程,甚至还可以是另一个框架的名字。
下面是一个描述“教师”的框架:
框架名:<教师>
类属:<知识分子>
工作:范围:(教学,科研)
缺省:教学
性别:(男,女)
学历:(中师,高师)
类型:(<小学教师>,<中学教师>,<大学教师>)