基于Ontology的建模方法

  • 格式:pdf
  • 大小:264.49 KB
  • 文档页数:4

-1575-0引言近年来,本体论在人工智能界引起越来越多研究人员的兴趣,一个重要的原因是对知识共享和重用的巨大需求。随着各种已有的和将要研制的知识库和知识系统的不断增多,人们希望已有的知识库能够在后面的知识系统中继续使用,也希望不同的知识系统能够共享某个共同的知识库[1]。这样会大大减少研究开发中的工作量,利于对系统规模化,对知识工程将起到巨大的促进作用。而普遍认为本体论的理论研究和体系构建是实现这些目标的重要基础,因为任何一个知识系统都是基于对目标世界的某种概念化,而本体正是这样的概念化规范说明系统,并且独立于具体的符号层表示方式[2],因而成为具有不同知识表示的智能系统之间进行知识交换和知识共享的基础结构。本体的提出减少或消除了领域概念及术语间的混乱,成为系统间通信、共享、互操作的基础,解决了知识共享和重用的问题,避免重复开发,节省投资[3]。1本体的定义Ontology最早是一个哲学上的概念,从哲学的范畴来说,Ontology是客观存在的一个系统的解释或说明,关心的是客观现实的抽象本质。1993年,Gruber给出了Ontology的一个最为流行的定义[4],即“Ontology是概念模型的明确的规范说明”。后来,Borst在此基础上,给出了Ontology的另外一种定义[5]:“Ontology是共享概念模型的形式化规范说明”。Studer

等对上述两个定义进行了深入的研究,认为Ontology是共享概念模型的明确的形式化规范说明。这包含4层含义[6]:概念模型、明确(explicit)

、形式化和共享。“概念模型”指通过抽象

出客观世界中一些现象的相关概念而得到的模型。概念模型所表现的含义独立于具体的环境状态。“明确”指所使用的概念及使用这些概念的约束都有明确的定义。“形式化”指On-

tology是计算机可读的(即能被计算机处理)。“共享”指Ontol-ogy中体现的是共同认可的知识,反映的是相关领域中公认的概念集,即Ontology针对的是团体而非个体的共识。Ontology

的目标是捕获相关领域的知识,提供对该领域知识的共同理解,确定该领域内共同认可的词汇,并从不同层次的形式化模式上给出这些词汇(术语)和词汇间相互关系的明确定义。定义1本体是某一领域-1576-

为该对象集合或其抽象描述。即,为领域元关系用于描述1,¸ö¸ÅÄ³ÆµÑ¿¨¶ù³Ë»ý2×(即2×1,,之间的一个关系。特别地,当1,,若1为2为1,,若1中某个对象的一部分,并且2中的某个对象作为其部分,则概念2之间存在部分整体关系,称1的部分。2本体的分类和组成现在对于本体的分类法尚没有统一的标准,通常可以区分以下几种本体类型[7]:①领域本体:针对特定的应用领域抽象领域知识的结构和内容,包括各种领域知识的类型、术语和概念,并对领域知识的结构和内容加以约束,形成描述特定领域中具体知识的基础;②通用或常识性的本体:主要描述客观世界一般性的知识,如时间、空间、状态和事件等,它们通常适用于几个领域;③应用型的本体:针对特定应用领域知识建模的抽象定义,如方法本体和任务本体。它们是针对特定的任务和方法构建的本体;④表示本体:通常不限制于一个特定的领域,仅仅提供了一种表示实体的方式但是没有规定必须表示什么。一个本体由以下4个方面组成:①类:指对于某一领域概念规范而清晰的描述,它是本体的核心部分;②属性插件:描述概念各种特征的属性;③分面:属性插件的限制条件;④实例:指一系列与某个类相关的实例。3构建本体的方法3.1确定本体的领域和范畴首先,我们要明确构建的本体所要覆盖的专业领域、使用该本体的目的、本体应该能回答哪些类型的问题以及它的系统维护者与应用对象。这些问题限制模型的范畴,所以需要相对稳定。在本文中使用关于酒类与食物的搭配建议的应用本体,该本体中需要描述各种类型的酒,主食的种类,以及酒与食品之间搭配好坏的概念。如果设计的这个本体是用来对酒类杂志的文章进行自然语言处理的,那么该本体中包括一些同义字及词性词类的概念是非常重要的。如果该本体是用来帮助饭店的顾客来决定选购哪种酒时,那么本体中就需要包含详细的价格信息。如果本体的维护者描述本体所使用的语言与本体的使用者所使用的语言不一样时,本体中就需要提供这两种语言之间的映射或者转换。对本体的应用不同,那么其中所包含的类或者概念就有所区别。确定本体范围的方法之一是列出基于本体的知识库能够回答的问题清单[8]。在酒与食物的本体中,问题清单应该可能包含如下问题:①当选购一种酒时,顾客应该考虑酒的哪些特征?②当吃烤肉的时候,什么酒是最佳的选择?③吃鱼的时候,选择具有哪种特性的酒最为合适?④随着酒酿成的年分的改变,酒的芳香度或者质感是否会发生变化?从上面这些问题我们可以看到,该本体应该包含酒的各种特征,酒的不同种类,酿造佳期以及食物与酒水的恰当的搭配等。3.2复用现有的本体我们应该考虑在现存的资源中有没有可以为某个特殊的领域和任务所能提炼和扩展的本体。如果系统需要和其它的应用平台进行互操作,而这个应用平台又与特定的本体或受控词表连锁在一起,那么复用现有的本体是行之有效的方法。许多本体已经以电子资源的形式可以利用,并且可以被转入你所使用的本体开发环境中。本体的表达形式并不重要,因为现在许多知识表示系统能够转入转出本体。即使一个知识表示系统不能直接对某种形式的本体起作用,该本体从这种形式转换为另外一种形式也不是很困难的一件事。目前在网上和一些文献中有一些可以复用的本体。例如:Ontolingua的本体文库、DAML的本体文库、UNSPSC和DMOZ等。3.3列出本体中的重要术语列出一份所有术语的清单,这些术语是需要声明或解释给使用者的,包括我们所要讨论的术语,术语所具有的属性,对于这些术语我们将要说些什么等。比如说,和酒相关的重要术语包括:酒、葡萄、酿酒厂、地点、酒的颜色、酒的质感、酒的味道以及含糖量等;首先,需要一份最全的术语清单,而不要担心清单上的概念,术语之间的关系或概念所具有的属性会有所重复。3.4定义类和类的等级体系建立一个等级体系有几种可行的方法:①自顶向下法:由某一领域中最大的概念开始,而后再通过添加子类将这些概念细化。比如:首先为葡萄酒和食物最大的概念创建类;然后再通过创建葡萄酒的子类来详细描述葡萄酒的种类,包括白葡萄酒、红葡萄酒、桃红葡萄酒;还可以再对红葡萄酒的种类继续进行划分。②自底向上法:由最底层最细小的类的定义开始,然后将这些细化的类组织在更加综合的概念之下。比如:我们首先定义张裕和王朝葡萄酒,然后再创建这两个子类的超类红葡萄酒,而红葡萄酒同时又是葡萄酒的子类。③综合法:是将自顶向下法与自底向上法结合起来的一种方法。首先定义很多非常显而易见的概念,然后分别将它们进行恰当地归纳和细化。从一些顶层概念着手,将它们与一些中级概念关联起来。这3种方法各有优点,采取什么方法主要依赖于开发人员对专业领域的个人观点。如果开发者对于某领域有系统的“自顶向下”的见解,那么使用“自顶向下”的方法就比较容易一些。由于“中级概念”在领域的概念中更具代表性,所以综合法对许多本体开发者而言最便捷。在酒的那个实例中,如果想要区分酒的最一般的分类,那么用自顶向下的方法最好。如果想要收集关于酒的更多更广泛的实例,那么自底向上的方法更加适合。无论选择哪种方法,都要从定义类开始。选择描述独立存-1577-

在的对象的术语,作为本体中的类,而且嵌入类的等级体系中。3.5定义类的属性插件仅仅有类还不能提供足够的信息来回答基于本体的知识库中的问题,因此除了定义类外,还必须描绘概念间的内在结构。我们已经从第3步创建的术语清单中选择了类名,剩下的大部分术语就属于类的属性了,比如:酒的颜色、质感、味道、含糖量以及酿酒厂的位置。对于每一个属性,我们要确定该属性是属于哪个类的属性插件。例如,酒类应该包含以下属性:颜色、质感、味道和含糖量;酿酒厂类应该包含位置属性。通常,有这样几种类型的对象属性能够成为本体的属性插件:①内在属性:例如酒的味道;②外在属性:例如酒的名字和出产地;③部分:如果对象是结构化的,那么它的一部分,可以是具体的或抽象的元素;④与其它类之间的关系:类中的个体成员与其他类之间都有一定的关系。例如:酒的制造者代表着酒与酒厂之间的关系以及酿造酒的葡萄种类;任意类的所有子类都继承了该类的属性插件,比如:酒的所有子类继承了酒的所有属性插件。如果给红酒类再加入一个额外的属性插件——丹宁酸度(低、适度或高),该属性将被所有属于红酒类的子类所继承。一个属性插件应该被附加在拥有该属性的最大的类上。比如:酒的颜色和质感应该被附加在酒类上。3.6定义属性插件的分面属性插件可以有不同的分面来描述赋值类型、允许的赋值以及赋值的基数,属性插件可以接受的赋值的其它特征。例如:名称属性(酒名)就是一个具有字符类型的赋值;产品属性(酒厂生产的酒)就有多个赋值并且这些赋值都是酒类的例子。下面我们将描述几个常见的分面:(1)属性插件的基数:描述了一个属性插件可以有几个赋值。有些系统仅仅能够区分单一基数和多元基数。例如:酒的质感就是单一基数的属性,因为酒只能有一种质感;而某个酿酒厂生产的产品则是多元基数的属性。一些系统通过最大与最小基数的规范说明来描述属性插件赋值的个数。最小基数个赋值。例如:酿造酒的葡萄种类数最小基数应该为1,因为每种酒至少是由一种葡萄酿造而成的。最大基数个赋值。有时候将最大基数定义为0是很用处的,表示某一子类的属性插件不能有任何赋值。(2)赋值类型:赋值类型的分面描述了属性插件的赋值类型。下面是一些比较常见的赋值类型:①字符型:指名称这种赋值类型;②数值型:包含浮点数和整数,用来描述属性插件的数据值,例如:酒的价格就是一个浮点数类型的值;③布尔型:是单纯的yes,no标记,例如:如果我们将不起泡的酒分作单独的一类,那么某种酒是否起泡就可作为一个布尔类型的属性插件;④枚举型:是某个属性插件的赋值清单,例如:可以从以下3个赋值中选择一个来描述酒的味道:浓烈的、适中的或柔和的。⑤实例型:允许定义个体间的关系。(3)属性插件的域和范围:当某一属性插件被添加在一个特定的类时,允许限制属性插件的范围。一个属性插件所隶属的类集合,称为这个属性插件的域。在系统中,属性插件所隶属的类集合,通常就构成了该属性插件的域,不需要再单独说明域了。确定一个属性插件的域或范围的基本规则通常是相同的:在为一个属性插件确定它的域时,找出最大的类或是分别能成为这个属性插件的域或范围的类。另一方面,不要定义太过通用的域和范围。如果定义某个属性插件的范围或域的类列表清单包含了某个类以及它的子类,那么将子类去掉。例如:如果一个属性插件范围包含酒类及红酒类,那么就将红酒类去掉,因为红酒类是酒类的子类,它的存在并不会增加新的信息,该属性插件范围已经包含了酒类的所有子类了。如果定义某个属性插件域或范围的类清单包含类A中的所有子类,但是未包含类A本身,那么这一范围应该只包含类A,而不是类A的那些子类。如果某个属性插件域或范围的类清单几乎包含了类A中的所有子类,仅有少数几个子类未包含在内,那么应该考虑是否需要重新调整类A的范围。在系统中,将某属性插件添加到某类中与将某类加入到该属性插件的范围中是一样的。一方面,要为该属性插件找到最大的类;另一方面,必须确定属性插件添加的每一个类是否具有属性插件所代表的属性。例如:可以将丹宁酸度这个属性插件加入到张裕葡萄酒,王朝葡萄酒等红酒类中,然而,由于红酒类都包括丹宁酸度这个属性,就应该将该属性插件加入到红酒这个更大的类中,但是,如果将丹宁酸度加入酒类这个更大类中就不正确了,因为该属性不能用来描述白酒类。3.7创建实例及本体的构造图最后一步就是在等级体系中定义类的实例。定义某个类的一个实例需要:确定一个类;创建类的一个实例;添加属性插件的赋值。例如:创建一个张裕解百纳干红葡萄酒来代表红葡萄酒类的一个具体实例。该实例包括以下属性插件定义:①质感:醇和清香;②颜色:深宝石红色;③口味:柔和的;④丹宁酸度:低;⑤葡萄:蛇龙珠;⑥生产者:张裕;⑦地区:烟台。本体的构造如图1所示。