<语义网基础教程>笔记(四)

本体工程

Posted by Pelhans on February 21, 2019

本部分将介绍手工构建本体、本体复用和使用半自动化方法等技术。其实原计划后面还应有一个逻辑与推理:规则部分,但是我自己也没太理解,因此等以后再补。

手工构建本体

将本体开发区分为以下几个阶段:

    1. 确定范围
    1. 考虑复用
    1. 枚举术语
    1. 定义分类
    1. 定义属性
    1. 定义刻面
    1. 定义实例
    1. 检测异常

不幸的是,在实践中这个过程并不是线性的,在开发过程中的任何时间点都有可能回到更早的阶段。下面我们介绍单个步骤。

确定范围

开发一个领域本体本身不是目的。开发一个本体类似于定义一组被其他程序所使用的数据和结构。换句话说,一个本体时一个特定领域的模型(model),为特殊目的而构建。作为结果,对一个具体的领域而言不存在正确的本体。一个本体必然是一个特定领域的抽象,因此总是存在可行的替代品。

这个阶段将要回答的问题是:这个本体将涵盖什么领域?我们处于什么原因使用这个本体?这个本体应该回答什么问题?谁将使用和维护这个本体?

考虑复用

许多本体,尤其是在公共领域已经可用。因此我们很少需要自己从头定义本体。几乎总是存在一个可用的第三方本体,至少可以为我们自己的本体提供一个有用的起点。

枚举术语

在实际定义一个本体的过程中,第一步是写下一个所有先关术语的非结构化列表,期望这些术语在本体中出现。通常名称构成类名的基础,而动词(或动词短语)构成属性名的基础。传统的知识工程工具,例如梯形和格分析,可以被有效地用于本步骤,用来获得术语集合及这些术语的初始结构。

定义分类

在识别先关属于后,这些术语必须被组成成一个分类层次。对于采用自顶向下还是自底向上的方法那个更有效/更可靠会存在分歧。很重要的一点是,确保层次确实是一个分类(子类)层次。

定义属性

这一步通常和之前的步骤交叉:在组织层次的过程中,组织链到累的属性很自然。在将属性关联到类时,立即为这些属性提供定义域和值域声明也很有意义。

定义刻面

经过上面步骤后,该本体只需要 RDF 模式所提供的表达能力,而没有用到 OWL 中的额外的原语。在本阶段,将用刻面来丰富之前定义的属性。

  • 基数:为越多越好的属性指出它们是否允许或需要拥有特定数目的不同取值,如最少1个值这种。
  • 需要的取值:经常借助某个属性含有特定的值来定义类,而这些所需取值可以在 OWL 中使用 owl:hasValue 指定。
  • 关系特征:刻面的最后一类关注属性的关系特征:对称性、传递性、互逆属性和函数型取值。

完成这步后,需要检查本体内部是否有不一致性。

定义实例

使用本体来组织一组实例,本体的种类的数目从几百个到数万个,而实例的数目就可能大几个数量级。

检测异常

继续检查不一致性,经常发生不一致性的例子包括对于传递的、对称的或互逆的属性的定义域和值域定义的不兼容。类似地,基数属性经常是不一致性的来源。

复用已有本体

已有本体的来源包含但不限于以下几个方面:

  • 专家知识的编纂:由领域专家一点一点编写的本体。
  • 集成的词汇表:如 unified Medical Language System 集成了100 个生物医学词汇表和分类的75万个概念。
  • 上层本体:除了领域本体,还有一些非常普遍适用的本体(上层本体),如Cyc 包含6千个概念和 6万个断言。
  • 主体层次:术语的简单集合,被松散的组织成一个特殊化层次,这个层次不是一个严格的分类,而是混合了不同的特殊化的关系,如 is-a、part-of、contained-in。
  • 语言学资源:这些资源起初并不是为抽象一个领域而构建的,而是作为该领域的语言学资源,但也可以作为本体开发的起点。
  • 百科知识
  • 本体库

在很少一些情况下,现有本体可以不加修改地被复用。通常,现有概念和属性必须被精化(使用 owl:subClassOf 和 owl:subPropertyOf)。另外,别名也被引入以更好地适合特定领域(例如,使用 owl:equivalentClass 和 owl:equivalentProperty)。此外, RDF 和 OWL 提供了进一步开发本体的机会,允许私自修改其他本体定义的类。

引入本体和建立它们之间映射的主要问题还待研究,这被认为是语义网研究中最难的问题之一。

自动化的本体获取

想要实现本体的高速且低成本的生产,需要通过本体融合和配准来建立语义互操作性的任务可能需要机器学习技术的支持。

下面这些任务可以通过机器学习技术支持。

  • 从万维网上已有的数据中抽取本体。
  • 从万维网上已有的数据中抽取关系数据和元数据。
  • 通过分析概念的外延来融合和映射本体。
  • 通过分析实例数据来维护本体。
  • 通过观察用户来改进语义网应用。

机器学习提供了一组技术支持下面任务:

  • 聚类
  • 增量式本体更新
  • 对知识工程师的支持(?)
  • 改进大型的自然语言本体
  • 纯(领域)本体学习

Omelayenko 标识了下面3种类型的本体,它们能够使用机器学习技术来支持。

  • 自然语言本体(Natural Language Ontologis, NLO):包含语言概念之间的词汇关系,它们规模很大并且不需要经常更新。通常它们代表系统的后台知识,被用于扩展用户查询。
  • 领域本体:领域本体捕获一个特定领域的知识。这些本体在一个受限领域中提供了对领域概念的详细概述。通常,它们是手工构建,但是不同的学习技术可以辅助(尤其是缺乏经验的)知识工程师。
  • 本体实例:本体实例可以被自动化地生成并经常更新(例如,黄页中的某个公司的信息会常更新),而本体保持不变。

除了能够被支持的本体的不同类型(这句话的翻译。。),本体学习中也存在不同的用法。下面列表中,前3个任务设计知识工程中的本体获取任务,而后3个涉及本体维护任务。

  • 由知识工程师开始创建本体。
  • 从万维网文档中抽取本体模式
  • 本体实例抽取为本体模式填充数据
  • 本体继承和浏览处理重构与浏览大型的、可能机器学习可学习的知识库。
  • 本体维护任务更新本体的某些部分
  • 本体扩充(或本体调谐)将微小的关系的自动修改加入已有本体。这不改变本体中的主要概念和结构,但是会使得本体更加精确。

机器学习领域已有各种各样的技术。但是,本体表示的一个重要需求是本体必须符号化、人类可读、可理解。这使得我们只涉及产生泛化的符号学习算法,而跳过诸如神经网络、遗传算法之类的其他方法。下面是一些潜在适用的算法:

  • 命题规则学习算法学习关联规则或其他形式的属性-值规则。
  • 贝叶斯学习的最佳代表是朴素贝叶斯分类器。它基于贝叶斯定理,基于训练实例间的属性是条件独立的这一假设,生成概率性的属性-值规则。
  • 一阶逻辑规则学习归纳出包含变量的规则,称为一阶 Horn 子句。
  • 聚类算法使用基于实例的属性值定义的相似度或距离度量将实例聚类在一起。

还有很多其他可行的技术,但距离完全掌握还为时尚早。

本体映射

很少有可能单个本体完全满足一个特定领域的需求,更多的情况是多个本体需要被组合。这就导致了本体集成问题(也称本体配准或本体映射)。当前本体映射的方法包括各个层次和领域的的,我们将他们分为语言学、统计的、结构的和逻辑方法的。

  • 语言学方法:最简单的方法试图李彤附着于源本体和目标本体中概念上的语言学标签来发现潜在的匹配。如基于提取词干的技术和计算汉明距离。
  • 统计方法:使用实例数据来确定概念间的对应。如果源本体和目标本体中的概念的实例存在一个显著的统计对应关系,则有理由相信这些概念是(通过一个包含关系或者甚至可能是等价关系)强关联的。
  • 结构方法:利用源本体和目标本体的图结构并试图确定这些结构间的相似度。
  • 逻辑方法:根据R.Studer定义的本体”一个共享概念体系的形式化规约”,利用源本体和目标本体的形式化表达是可行的。该方法的缺点是实际使用的本体的语义是轻量级的,因此没有携带很多逻辑公式。
  • 映射实现:已经有一些本体映射框架,例如 R2R 和 LIMES。