农业古籍本体构建与检索机制研究_检索词论文

农业古籍本体的构建及其检索机制研究,本文主要内容关键词为:本体论文,古籍论文,机制论文,农业论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

收修改稿日期:2006-10-18

【分类号】G320

1 引言

目前,Internet在信息表示和信息检索方面存在的缺陷主要在于缺乏计算机可理解的语义信息。语义Web的研究正是以本体为基础,以机器可理解的形式化语言来描述知识,从根本上解决人与机器、机器与机器之间的信息交流障碍,使得计算机能够从语义层次上理解信息。

本文以农业古籍为例,从数据选择、构建方法、系统设计三个方面探讨领域本体构建流程,以领域概念作为语义检索的基础;探讨基于领域本体的语义检索机制,利用领域本体对概念进行规范化描述,将检索从目前的字面匹配提高到语义计算匹配的层面。采用Jena[1] 作为语义解析工具语言开发了一个语义检索原型,实现了领域本体的可视化浏览查询以及基于自然语言的语义检索。

2 语义Web相关工具

语义Web相关工具主要有本体编辑工具、本体解析和推理工具。经过多年发展,各研究机构相继开发了多种相关工具,本研究在语义模型构建中采用了本体编辑工具Protégé和本体解析工具Jena。

2.1 Protégé

Protégé是由斯坦福大学医学院开发的本体编辑工具,由于其开放性和兼容性,目前应用最为广泛,成为构建本体的首选工具。本研究采用Protégé对农业古籍本体进行编辑,该工具具有以下显著特点:

(1)对第三方推理机的推理支持。

(2)界面友好,具有良好的互操作性,支持图形化本体显示方式。

(3)开放源码,不断有新版本推出,允许开发插件拓展Protégé的功能。

(4)数据与表示语言的独立性,支持RDF、OWL等多种本体表示语言。

2.2 Jena

Jena是一个由惠普实验室开发的基于Java语言的先进的语义网开发工具,已经被广泛地应用于语义网开发中,目前的版本是Jena2.3。Jena是一个具有三层架构和多种视图的语义网开发框架,有很多应用程序开发接口提供给开发人员,因此具有很高的灵活性。Jena主要由6大部分组件构成:ARP,RDF API,持久性存储,推理子系统,Ontology API和RDQL。本研究主要采用RDF API,推理子系统及RDQL下文中作简要介绍。

3 农业古籍本体的构建

3.1 构建方法

农业古籍本体的构建首先邀请专业人员给出农业古籍本体的骨架作为本体构建的指导;根据骨架本体的范围,从专业文本以及专业词典中抽取关键词,得到本体的概念集合。将概念进行分面分析,形成表达相同含义的一些分面(Facet),结合骨架本体给出本体的等级关系,同时细化概念的各种语义关系形成本体类模型,利用专门的本体构建软件工具Protégé输出形式化语言的本体描述,提供机器可理解的描述。

3.2 农业古籍概念的获取

领域概念的获取要坚持用户保障、文献保障和机构保障原则,同时专业人员给出的骨架本体也为概念的进一步获取圈定了范围,农业古籍本体的概念获取有以下两个途径:

(1)专业词典 从《中国农业百科全书(农业历史卷)》、《中国农业古籍目录》中抽取相关部分概念。

(2)标引记录 抽取近20年10000篇关于农业古籍的研究论文的标引词,保留频次大于2的标引词。

3.3 农业古籍概念语义关系的确立

(1)等级关系

由印度图书馆学家阮冈纳赞和英国分类法研究小组(Classification Research Group)提出和发展的分面分类法是一种自底向上对概念综合分析的有效方法。本研究通过分面分析对农业古籍的概念进行归纳,提取领域概念的属性,将概念分成不同的组面。将分面分析的结果同骨架本体结合,把农业古籍概念分成作者组面、版本组面、研究机构组面等,从而形成农业古籍本体的最终框架,并且每一个组面都是概念的一个有效属性。

(2)其他语义关系

根据OWL本体的特点,将组面(类)之间的关系设置为Object属性,对概念本身进行分析所获得属性设置为Datetype属性。将类之间按照继承关系设置好等级体系。例如,农业古籍与收藏机构之间的收藏关系为Object属性,而农业古籍本身的年代属性则为Datetype属性。

根据专业领域人员给出的骨架本体和在文献中获得的概念,经过迭代交互之后得到的书本体的主要类模型如图1所示。

图1 农业古籍本体类模型图

4 基于农业古籍本体的语义检索模型的设计与实现

基于农业古籍本体检索模型是一个以领域本体为基础的语义检索模型,通过本体对领域概念的规范化描述,使得用户和机器获得统一的机器可理解的语义知识,实现信息资源的语义检索。该模型主要由提问词分析模块、语义推理模块、本体浏览模块以及语义查询模块组成,具体架构如图2所示。

图2 基于领域本体的语义检索模型

4.1 本体浏览模块

以树形结构表示本体的等级体系,将本体中的类表示为根节点,将实例表示为叶子节点,点击树的节点,可以显示该节点相关的各种属性。通过对树的浏览实现对本体的内容浏览,通过关键词查询可以检索到该关键词在本体中的等级关系以及所有的属性。

解析方法:

(1)类的解析

利用listHierarchyRootClasses()方法得到本体的根节点,然后利用listSubClasses()方法对根结点判断是否有子类,通过递归的方法得到所有的子类。

(2)实例的解析

根据(1)得到的类,对每个类通过listSubClasses()方法判断并获取类的实例,利用getLocalName()方法得到实例的名称。

(3)属性的解析

首先利用isDatatypeProperty()和isObjectTypeProperty()方法判断是数据属性还是对象属性,然后利用各自不同的特征对属性进行进一步解析。如果是Datatype属性则属性值为Literal类型,如果是ObjectType属性,则属性值为Resource类型。

4.2 提问词分析模块

(1)抽词

对用户的检索式进行抽词,抽取其中有检索意义的实词。

(2)检索词标注

利用本体中的类别信息对检索词进行标注,将具体实例标注为其所属的类,这是对检索词进行的规范化处理,是建立计算机理解检索词的基础。例如,对于含义模糊的检索词“熊猫”则标注为动物或品牌,以便于进一步的语义判断。

(3)抽取提问中心

在用户的检索式中,提问中心通常是抽象词,而具体的实例则是对提问中心的限制或描述,例如“北京市图书馆”,其中北京市为具体实例,而图书馆则是提问中心。利用本体的类名词对检索式进行抽取,抽取到的类名词则为提问中心。

以“华东地区收藏的齐民要术的版本”为例,经过提问词分析模块处理后的检索结果为:华东地区/PL齐民要术/NS版本/BE,What,其中PL为地点,NS为农业古籍,BE为版本,What为提问中心。

4.3 语义关系推理模块

(1)建立推理引擎

本体的查询需要借助RDQL语言,但该语言本身不具备推理功能,只能查询模型中有直接关系的数据,因此需要建立推理引擎,将本体中具有隐含语义关联的数据推理出来,获得所有相关联的数据作为RDQL查询的数据库。推理引擎借助于本体信息及相关的公理描述可以从基本的RDF描述中获取额外的断言(Assertion),经过推理处理可以获得RDF有向图中的所有语义闭包。在Jena中建立推理引擎需要以下步骤[2]:

①建立推理引擎;

②配置推理引擎;

③建立推理规则;

④执行推理规则。

本文中的处理方法如下:

Model data = ModelFactory.createDefaultModel();

Model model = ModelFactory.createDefaultModel();

configuration.addProperty(ReasonerVocabulary.PROPruleMode," forward" );

configuration.addProperty(ReasonerVocabulary.PROPruleSet," allrule.rules" );

Reasoner reasoner=GenericRuleReasonerFactory.theInstance().create( configuration) ;

infModel=ModelFactory.createInfModel(reasoner,data);

例如,在本体库中存在“收藏机构locate_in地区”,“收藏机构collected农业古籍”,经过传递性推理就可以得出“地区collected农业古籍”。经过推理引擎处理,可以得出本体库中所有具有隐含语义关联的类以及实例间的语义关系。

(2)建立语义模式库

抽取本体库中所有的语义属性(主要针对ObjectType属性),按照(Domain,属性名,Range)的形式建立语义模式三元组构成语义模式库。根据语义模式库,经过相关计算就可以确立标注后的检索词之间的语义关系。

for(StmtIterator i = model.listStatements(); i.hasNext(); ){

Statement stmt = i.nextStatement();

Resource subject = stmt.getSubject();

Property predicate = stmt.getPredicate();

RDFNode object = stmt.getObject();

if(object instanceof Resource){做相应的输出;}}

(3)确立检索词的语义关系

本体中的三元组都是(主语,谓语,宾语)的形式,用户的检索提问通常都是对主语或者宾语提问。通过步骤(1)的语义推理已经得到RDF有向图的所有语义闭包,因此若本体库中存在用户提问的检索结果,至多通过两个三元组组合便可以得到检索结果。

本文利用传统的向量空间模型构建检索词的语义关系,将标注后的检索词以及语义模式库中的语义模式视为向量,通过余弦函数进行匹配判断。

For每一个语义模式向量

If Sim(检索向量,语义模式向量)>0.7存入提问候选集

EndFor

其中,d[,i],d[,j]分别为检索向量和语义模式向量的距离,W为分别对应向量。仍以“华东地区收藏的齐民要术的版本”为例,经过语义匹配得到的提问候选集为(华东地区,collected,版本),(齐民要术,has_edtition,版本)。

4.4 语义查询模块

(1)构建RDQL查询语句

RDQL[3]是Jena中针对RDF的查询语言,这种查询语言将RDF视为三元组,也就是带有向边的图,图的节点是资源(Resource)或者文字(Literal)。RDQL提供了一种图匹配策略,查询RDF中满足一定节点的图,查询结果返回匹配到的属性值。本文的查询关键是根据检索词的语义关系自动构筑RDQL语句对本体库进行检索。

RDQL满足一定的范式,基本由SELECT、FROM、WHERE和USING字句组成。其中SELECT字句衔接的是提问中心,WHERE字句衔接的是查询条件,也就是4.3中生成的提问候选集,即满足一定语义关系的用户查询组合。因此,把4.3中形成的提问候选集组合起来添加到WHERE字句之后,而FROM和USING字句分别衔接的RDF模型和本体的URI地址,由检索时设定。以“清代描述大麻栽培的农书有哪些”为例,生成的查询语句如下:

SELECT ? xWHERE(c:齐民要术,c:has_edtion,? x),(c:华东地区,c:collected,? x)

USING c for http://www.owl-ontologies.com/unnamed.owl#

(2)查询结果处理

将(1)中形成的查询语句交给本体模型,如果本体中存在符合语义关系组合的三元组则返回属性值;如果不存在,则返回NULL。在Jena中查询的执行代码大致如下:

String queryString = " SELECT…" ;

Query query = new Query(queryString);

query.setSource(model); (model为定义的本体的模型接口)

QueryExecution qe = new QueryEngine(query);

QueryResults results = qe.exec();

for(Iterator iter = results; iter.hasNext(); )

{查询结果处理;}

results.close();

5 结语

本文以农业古籍本体为例,从数据选择、构建方法、总体设计几个方面探讨领域本体构建流程。利用Jena提供的语义网开发接口,开发了一个基于领域本体的语义检索原型系统,该模型允许用户利用自然语言进行检索,允许用户对本体进行可视化浏览,辅助用户进行检索式构建。经过测试,证明该语义检索模型比传统的检索模型有更好的检索精度。在今后的研究中,将进一步实现对大规模文献信息资源的智能语义检索。

标签:;  ;  ;  ;  ;  

农业古籍本体构建与检索机制研究_检索词论文
下载Doc文档

猜你喜欢