《资治通鉴》历史领域本体构建及其应用研究
2010-07-18彭炜明宋继华
彭炜明,宋继华
(北京师范大学信息科学与技术学院,北京100875)
1 引言
自“万维网之父”Tim Berners-Lee提出的语义网的概念以来,本体(Ontology)就逐渐成为计算机界的一个研究热点,被广泛应用于知识工程、数字图书馆和信息检索等领域。其中,领域本体的构建是各种应用得以实现的前提。然而,从目前问世的大量本体来看,仍存在诸多问题。一方面,构建领域本体是一项浩大的工程,需要大量领域专家的参与,建设周期长,面对大量的领域知识,仅依靠领域专家手工构建显然是不现实的。因此,自然语言处理、文本挖掘等手段的介入以实现本体构建的自动化或半自动化是必要的。另一方面,许多半自动化构建起来的本体由于缺乏有效的领域分析和良好的结构设计,质量不高,应用十分有限。
作者认为,选择一个相对稳定和清晰的领域并作深入的领域分析对本体构建工作来说是极为重要的。中华五千年文明为我们积淀了大量的历史典籍,文化是传承的,因此其中记载的悠悠历史必然是一张经纬交错的知识网。如果能将这些深藏在文字里的知识从文本中挖掘出来,并按历史本来的面目和结构组织起来,那么对于我们把握历史脉络、传承中华文化具有重要意义。作为当前广泛应用的共享语义模型,本体非常适合用来构建这个国史网。
2 本体定义及析疑
目前得到最广泛认同的是Studer在1998年提出的定义:本体是共享概念模型的明确的形式化规范说明[1]。在这个文字描述的定义之上,学者们提出了很多形式化定义,有五元组定义也有七元组定义,如O=(C,AC,R,AR,H,I,X),其中,C是概念的集合;AC是概念属性的集合;R是关系的集合;AR是关系属性的集合;H表示层次的集合;I是实例的集合;X是公理的集合[2]。
这里面比较有争议的是实例。有些研究者认为,实例相对本体其他组成成分来说是动态的,一方面现实世界中的实例无法穷尽,另一方面新的实例会不断产生而原有实例也会不断消亡,因此本体的构建一般不考虑实例部分,在常见的五元组本体定义中就没有包含I。还有人认为,本体的建模活动中一般不考虑实例或只考虑少数重要的实例,当本体和应用相结合的时候再将领域内的个体作为实例添加进来[3]。
作者认为,实例是否应该作为本体的组成成分应当从知识共享的角度来看。对于那些以问题求解为目标的任务本体来说,实例确实是动态、无法穷尽的,因此,这类本体的构建尽量少或者不考虑实例。但对于以知识表示为目标的领域本体来说,共享知识中大部分应当是实例。比如目前所见到的许多课程领域本体,由于受五元组定义的束缚,构建者将大量本该当作实例的课程领域术语设为本体中的概念(或类),比如,“计算机科学技术→计算机软件→软件理论”这样一个“类”层次。这种将实例误作类的设计其实是违反了Studer本体定义中的“明确”性,体现在以下几个方面:
(1)概念的内涵不明确。像“计算机科学技术”这样的“类”似乎很难找什么具体的属性,要给出明确的形式化的说明更是不现实。
(2)概念的外延不明确。因为把本该作为实例的术语都设为类了,因此这些“类”下面只有子“类”,而无法找出额外的实例来了。
(3)层次关系和非层次关系的混乱。很明显,“软件理论”和“计算机软件”之间的关系不是类一级的“is-a”层次关系,它们之间只存在实例一级的“学科子范畴”非层次关系。
可见,上例中的三个学科术语其实都应该是该课程本体中的实例。而这些实例在计算机学科领域中的地位是基本稳定的,可共享的,因此,这些实例必须纳入领域本体构建体系中。而且作者认为,在学科领域这类以知识表示为目的的领域本体建设中,最终应用其实是作用在实例层面的,实例在本体共享知识中占绝大部分,其地位的重要性是不容忽视的。在本体的构建过程中,实例绝不应该是在类、层次、属性等本体要素构建完成后的应用时再考虑添加的,而应该贯穿于本体的整个生命周期,从领域分析开始就有对实例的思考。
这其实也符合人类认识的一般过程,本体构建本质上是人对世界的建模,领域本体是对领域的建模,领域中大量存在的对象(实例),由于某些具有共同属性,便抽象出它们的概念(类)。因此,实例属于存在的范畴,是第一位的;类属于认识的范畴,是第二位的。因此,在本体构建时,特别是领域分析时,一定要分析清楚领域内的实例是什么,这是基础的一步。因为只有实例明确了,构建在其上的类、属性等才可能准确反映本领域,也才能谈得上知识的共享和推理。上例就是因为实例不明确,从而导致领域发生了偏离:从“计算机学科领域”到“计算机科学与技术领域”。
当然,这里所说的“先明确实例”是针对本体设计的思维过程而言,实际构建过程不一定就从实例到类的自底向上的获取,因为实例可能不定(不可穷尽或动态变化),如某些任务本体。但需注意的是“不定”不等于“不明确”,具体说来,“明确”是指,特定某个实例,可以明确地形式化描述,即实例的各属性取值也许目前尚未知,但必然客观存在。
3 历史领域本体工程及构建方法
随着本体应用的日益深入,领域本体的开发不能再简单视为项目开发,而应看成是工程开发[5],这已经成为学界共识。然而目前尚无一种标准的本体构建方法,较有代表性的有骨架法、企业建模法、IDEF-5、METHNOTOLOGY和循环获取法等。国内学者亦提出许多面向中文文本的领域本体学习方法[5-8],并用这些方法构建出多个领域本体,为中文本体的构建积累了大量的经验,但也存在不少问题,比如(1)实例不明确;(2)关系的获取多集中在分类关系上,而缺乏有效的非分类关系获取方法;(3)缺乏有效的评价方法。
选择一个合适的领域是本体工程的第一步。如前所述,中国有着悠久的历史和浩瀚的史书,历史领域是本体技术应用的一个绝佳平台。作为我国第一部编年体通史,《资治通鉴》具有极高的史学价值。《资治通鉴》的内容以政治、军事和民族关系为主,兼及经济、文化和历史人物评价,通过对事关国家盛衰、民族兴亡的统治阶级政策的描述,以警示后人。也就是说,《资治通鉴》编著的思想是从大量的历史事实中总结历史规律和经验教训,这与本体“从世界对象中抽象类和关系”的思想是吻合的。因此,《资治通鉴》历史领域本体工程的开发是现实可行的。
考虑到时间限制,本研究暂将《资治通鉴》历史领域本体工程的开发范围限定在先秦部分(第1~5卷),即先秦史本体。采用模式驱动的方法,自底向上构建。构建流程如图所示:
图1 领域本体构建流程图
3.1 领域分析
在本体工程初期,做好充分的需求分析。首先,明确领域本体构建的目的、范围、使用者。为此,本体开发者需要了解本领域的基本知识,包括领域特点、规则以及技术方法,并尽可能与领域专家作深入的交流。其次,分析系统可共享的知识,明确实例。如前所述,实例其实是决定一个领域的第一位因素,在领域分析阶段,就应考虑清楚哪些是实例,哪些是类?实例是否是可共享知识?如果是可共享知识,那么该实例就会进入本体库中。
在《资治通鉴》历史领域本体工程的实践中,作者通过学习相关历史领域的知识,可以总结出以下几点领域特点:
(1)《资治通鉴》是北宋司马光所主编的一本长篇编年体史书,共294卷,耗时19年。共记载 16个朝代的历史,计1 363年。其中先秦史分布在前5卷,共148年。由于是编年史,《资治通鉴》中记事的时间年信息获取比较方便(当然,也有一些例外,如为介绍某事缘起而引出的事件,在文中常以“先,……”的形式出现)。
(2)史书的编写遵循一定的体例,这其实就是我们后面要大量获取的模式。
(3)历史本体是以知识表示为目的的,本体中大部分实例都是可共享知识,因此本体构建的很大一部分工作将在实例获取上。
(4)历史是发展的,各个历史时期都有其明显的时代特征,某些概念在一个朝代适用而在另一个朝代也许就不再适用,对这部分概念需谨慎处理。
(5)有大量的历史文献可供参考,如历史年表、人物表等历史工具书,以及相关历史的其他史书。这些资料既可用于本体的构建的开发过程,也可用于之后的本体评价和应用。
3.2 原始文本的预处理
这一阶段的工作包括收集并整理领域内可资利用的原始资料,对文本进行一定的预处理,如格式转换。
为了利用目前中文信息处理(主要是现代汉语)在句法、语义方面的技术成果,本研究采用的《资治通鉴》电子版是网上通行的《资治通鉴》(柏杨白话版),其文本格式如下所示:
图2 《资治通鉴》原始文本格式
每卷中年份单独成行,并附有干支和公历纪年,顶格。年下纪事,依事分段,古文今文对照并排。本文中称每一段为一“条目”,可以将原始文本按条目导入到关系数据库中。
3.3 手工建立本体初始框架(基本类和属性)
初始框架主要包括领域内最基本的核心概念、属性、层次关系以及比较确定的部分实例,它们通常都是较明显的,可由领域专家手工构建,或者借鉴领域内的术语表,或者采用各种本体学习算法自动提取,如基于统计的方法[10]、形式概念分析[11-12]和聚类[13]等方法。采用自动提取方法得到的结果最后都必须经由专家筛选确认。这一阶段不强求获取领域中全面的概念,但要求每个概念准确,可形式化。
本研究历史本体的初始框架是在领域专家的指导下,结合相关历史工具书手工构建。其结构如下:
图3 本体初始框架
其中有些类的实例是特定可穷举的,如诸侯国(赵 、魏 、楚 、燕 、韩 、齐 、郑 、周 、宋 、秦 、鲁 、中山 、晋 、蜀、卫、义渠、胡、越、狄、吴、蔡),可根据专家知识手工建立。而其他一些类在文本中有明显的模式可寻。
3.4 模式匹配方式获取实例
根据前一阶段获得的概念和模式,利用如正则表达式之类的工具从文本中自动获取实例。这一阶段可能会根据具体情况,修正和完善模式。
《资治通鉴》中可挖掘的模式很多,有些可能直观就可看出,有些可能需要做一定的语义标注后方可发现。前者可直接用正则表达匹配,后者就有待于下面的迭代过程了。初始时可直接用正则表达式匹配到实例的类有(括号中数字是匹配到的实例数):时间年(134)、地点(281)、国君(73)、彗星(2)、日食(5)。举“时间_年”为例,其模式如下:
相应的Perl正则表达式获取语句为:
图4 “时间_年”模式示意
($年号,$年数,$天干,$地支,$公历年)=
/(?:周(.{2,4}王))?(.{2,6})年((..)(..),公元前(d+)年)/;
3.5 基于本体的文本语义标注
利用中文信息处理技术对文本进行词法和句法分析,并用上一阶段获取的实例结果作语义标注。
本研究采用的句法分析模块来自于哈尔滨工业大学信息检索研究室语言技术平台共享包(LTP)中的依存句法模块。下面是对“齐国攻打燕国,夺取桑丘。”(齐伐燕,取桑丘。)进行句法分析和本体语义标注后的数据:
图5 语义标注
其中
3.6 挖掘更多模式,抽取类和属性
随着文本语义标注的深入,新模式就会越明朗。比如,可根据句子中心词的语义相似度,对句子进行聚类。
本研究采用的中心词语义相似度包含两部分信息:词汇语义和本体语义。以“攻伐”类为例分析,以下是该类的几个实例:
·齐国攻打燕国,夺取桑丘。
·魏、韩、赵三国攻打齐国,兵至桑丘。
·赵国入侵齐国,占领长城。
·赵国袭击卫国,未能攻克。
“攻打”、“入侵”、“袭击”三个主动词本身的词汇语义是相近的,另外它们所处的本体语义模式也有利于这些样本点聚类到一个簇下面。而分析这个簇可以很容易得出新的模式:
图 6 “攻伐”模式示意
从这个新模式中,我们可以提取新的类和属性:
图 7 “攻伐”类图
3.7 迭代
将阶段3.4至3.6作为一个周期进行迭代,这样就形成了一个以模式为驱动,自底向上的领域本体构建方法。
通过《资治通鉴》先秦史本体的具体实践,共得到类62个,对象属性54个,数据类型属性22个,实例1 793个。表1为部分模式抽取实例效率统计和最终的本体结构图片段,抽取结果的主要错误是某些实例的属性取值,很容易人工纠正。
表1 部分模式抽取结果
续表
4 先秦史本体的应用和评价
目前对本体的评价还没有形成一个统一的标准,常用的评价方法有以下两种[14]:
(1)在同一个领域使用交叉评价的方法比较两个或多个本体。
(2)基于应用的评价,即通过应用来评价领域本体本身。
对于先秦史本体,这里采用基于应用的评价,主要从本体的搜索和可视化两个方面展开。基于本体的搜索表明,计算机对《资治通鉴》先秦史知识已经有了初步的语义理解;而本体可视化技术直观地将原来深藏在文本字符串中的线性信息以知识网的形式关联起来,可以很好服务于历史领域的研究。
4.1 基于本体的搜索
SPARQL[4]作为W 3C的候选推荐标准正被越来越多的研究者所采用,其语法简明,可以像SQL语句一样方便的查询。比如用SPARQL检索赵武灵王参与的历史事件,可生成一份简单的“赵武灵王年表”,见表2。
表2 赵武灵王年表
4.2 可视化
TouchG raph是一个基于java实现的关联可视化开源组件,Protégé中 TGViztab插件就是基于TouchG raph组件的一个应用,在Protege_3.4_beta版中TGViztab存在两个bug:一是关联边上的中文显示出现乱码,二是节点到自身的边尚不完善,没有以环的形式显示。经过修复后的TGViztab很好地展示了本体类、实例等相关关系。图8显示公元前305年发生的相关历史事件。
图 8 以“公元前305年”节点为中心的可视化显示
5 结束语
本研究提出了一项《资治通鉴》历史领域本体工程和与之相适应的领域本体构建方法,并在工程实践中实现了先秦史本体。该方法采用模式驱动,综合应用了自然语言处理和数据挖掘等技术,并且特别强调实例在领域本体构建中的基础地位。虽然方法的提出是基于历史领域的本体构建背景,但对于其他相关领域,只要本体共享知识具备大量实例并有模式可寻,都应该适用。
感谢 本研究中使用了哈尔滨工业大学信息检索研究室语言技术平台共享包(LTP),特此感谢。
[1] R.Studer,V.R.Ben jam ins,D.Fensel.Know ledge Engineering:Principles and Methods[J].Data and Know ledge Engineering.1998,25(1-2):161-197.
[2] 苗壮,张亚非,陆建江.从多个RDFS本体中抽取子本体[J].情报学报,2007,26(1):71-76.
[3] 陆建江等.语义网原理与技术[M].北京:科学出版社,2007.67-67.
[4] Eric Prud'hommeaux,Andy Seaborne.SPARQL Query Language for RDF[EB/OL].http://www.w 3.org/TR/rdf-sparq l-query/,2008.
[5] 李勇,张志刚.领域本体构建方法研究[J].计算机工程与科学,2008,30(5):129-131.
[6] 郁书好.基于本体的教学知识库研究[D].南京:河海大学,2006.
[7] 何燕,穗志方,段慧明,等.基于专业术语词典的自动领域本体构造[J].情报学报,2007,13(8):35-38.
[8] 徐力斌,等.基于W ordNet和自然语言处理技术的半自动领域本体构建[J].计算机科学,2007,34(6):219-222.
[9] 韩韧,等.OWL本体构建方法的研究[J].计算机工程与设计,2008,29(6):1397-1400.
[10] 魏顺平,何克抗.基于文本挖掘的领域本体半自动构建方法研究[J].开放教育研究,2008,14(5):95-101.
[11] 黄伟,金远平.形式概念分析在本体构建中的应用[J].微机发展,2005,15(2):28-31.
[12] Cimiano P,Hotho A,Staab S.Learning concept hierarchies from text corpora using formal conceptanalysis[J].Journal o f A rtificial Intelligence Research,2005,24:305-339.
[13] Bisson G,Nedellec C,Canamero D.Designing clustering methods for ontology building[C]//Proceedings of the ECA I2000W orkshop on Ontology Learning,2000.
[14] 贾秀玲,文敦伟.面向文本的本体学习研究概述[J].计算机科学,2007,34(2):181-185.