基于语义网的自动问答系统实现

文章同步个人独立博客

1.本体的创建

本体的作用是描述概念与概念之间的关系。它给出了构成相关领域词汇的基本术语和关系,以及利用这些术语和关系构成的规定这些词汇外延的规则的定义。
利用本体,我们可以统一管理所有的数据,使得数据规范化、并能利用本体进行一定程度的推理,提高自动问答技术的性能。
为了对图书馆的文献资源进行语义化描述,需要构建本体。我们基于DC和DCTERMS元数据标准, 构建了一个元数据本体。
此外,文献资源的描述还涉及到其他信息, 譬如作者名、出版机构名、主题词,分类号等,因为上述资源目前已有成熟的本体用于描述,我们直接对其进行复用或者进行必要的扩展。 采用的本体: FOAF: 描述个人/作者机构;SKOS: 描述受控词表;GeoNames: 描述地名;Event: 描述会议事件。
下面给出自定义本体的结构图:
基于语义网的自动问答系统实现

2.RDF数据的构建

本项目所涉及的数据主要包括图书馆的书目数据,受控词表数据,个人/组织机构数据和地名数据。 其中,图书的书目数据来自南京大学图书馆的MARC书目数据,期刊论文,会议论文和学位论文的书目数据来自CNKI网站,作者信息来自南京大学信息管理学院官方网站中教师的个人网页。
原始数据为HTML文档,基于构建的元数据本体及相关本体(FOAF本体,EVENT本体,SKOS模型),将上述数据转换为RDF/XML格式。
下面给出一个RDF数据的例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
图书元数据(Book.RDF)
< metaonto:Book RDF:about = "http://example/nju.edu.cn/book/9787030220073#i" >
< dcterms:title xml:lang = "zh" >政务信息资源管理与政府决策</ dcterms:title >
< dcterms:creator RDF:resource = "http://example/nju.edu.cn/person/Suxinning#i" />
< metaonto:abstract xml:lang = "zh" >本书共八章,内容包括:政务信息资源概论、政务信息资源采集与政府决策、政务信息资源组织与政府决策、政务信息处理与政府决策等。
</ metaonto:abstract >
< dcterms:publisher RDF:resource = "http://example/nju.edu.cn/organization/SciencePress#i" />
< metaonto:placePublished RDF:resource = "http://example/nju.edu.cn/place/Beijing#i" />
< dcterms:date RDF:datatype = "http://www.w3.org/2001/XMLSchema#gYear" >2008</ dcterms:date >
< dcterms:format xml:lang = "zh" >242页</ dcterms:format >
< metaonto:identifierISBN >9787030220073</ metaonto:identifierISBN >
< dcterms:subject RDF:resource = "http://example/nju.edu.cn/classification/CLC#D035.1-39" />
< dcterms:subject xml:lang = "zh" >电子政务</ dcterms:subject >
< dcterms:subject xml:lang = "zh" >信息管理</ dcterms:subject >
< RDFs:isDefinedBy RDF:resource = "http://example/nju.edu.cn/book/9787030220073.RDF" />
</ metaonto:Book >

3.关联数据的发布与访问

3.1关联数据的定义

关联数据(即linked data),是一种使得数据之间可以相互链接并变得更加有用的发布结构化数据的方式。它建立在如HTTP、RDF、URIs等标准的WEB技术之上。但是它的目的并不是为人类阅读提供web网页,而是使计算机可以自动的读取它们进而达到信息的共享。使不同来源的数据可以相互链接并被查询。
之所以要进行关联数据的发布,是因为我们项目目标是开发一个针对关联的图书馆资源的自动问答系统,也就是说这些图书馆数据是相互关联的。关联数据就是利用web在数据和不同的数据源间建立特定的链接。要实现轻松共享结构化数据的目标,首要步骤就是将现有资源或新生资源发布为关联数据。

3.2关联数据的构建

图书馆的文献资源之间,文献资源与其他资源之间(譬如知识组织资源,人名,地名)存在着相互联系,我们采用RDF链接显示地表达它们之间存在的各种关联关系,形成图书馆的关联数据。
本系统中用到的数据,相互之间存在着许多联系。这些联系靠RDF:resource标签呈现,一个RDF数据实例里面包含另外一个RDF数据实例的URI。例如,下面三条语句在book和person、organization以及place之间建立了联系:

1
2
3
<dcterms:creator RDF:resource="http://example/nju.edu.cn/person/Xuyan#i"/>
<dcterms:publisher RDF:resource="http://example/nju.edu.cn/organization/YuluPress#i"/>
<metaonto:placePublished RDF:resource="http://example/nju.edu.cn/place/Changsha#i"/>

下面给出整个系统中所有数据之间的联系,其关联形式如下图所示:
linkeddata

3.3 关联数据的发布

JenaTDB + Fuseki + Pubby。
关联数据的发布主要用到的工具为Fuseki和Pubby。其中Fuseki集成了RDF数据的存储工具TDB和Sparql查询终端。
Pubby的主要作用是在Fuseki提供的Sparql终端上面加一个关联数据接口。使得所有存储在TDB中的RDF数据,可以以关联数据的形式在浏览器中访问。
下面是Fuseki的查询界面及查询结果。

fuseki
fesukei_result

Pubby的使用方法:首先下载最新版本的Pubby,然后安装tomcat或者jetty,这两者为Pubby提供了servlet容器,将Pubby下的webapp文件夹拷贝到tomcat或者Jetty的webapps文件夹下,然后更改/WEB-INF/下的配置文件config.ttl,使其适合自身系统。下面的是Pubby和Fuseki结合工作的结构图。
pubby
Pubby的配置文件分为三个部分:前缀声明、server配置、dataset配置。其中server只能有一个,而dataset可以有多个,配置文件的格式如下:

1
2
3
4
5
6
7
8
<> a conf:Configuration;
     conf:option1 value1;
     conf:option2 value2;
     (...)
     conf:dataset [
         conf:option1 value1;
         conf:option2 value2;
     ];.

配置文件当中提供了许多配置选项,配置选项有的是必须的,有的可以缺省。为了和Sparql终端相连接,需要将conf:SparqlEndpoint设置为如下形式:
conf:SparqlEndpoint ;

3.4 关联数据的访问

采用Sparql查询, Fuseki是一个Sparql查询终端。由于关联数据在发布的时候会对URI进行重写,因此用户在访问关联数据的时候,不能通过实际的URI进行,而必须将URI转换为与Pubby发布结果一致的URL。通过观察可以发现,Pubby在重写URI的时候存在一定的规律,因此我们可以通过这个规律来访问关联数据。
如果Pubby的config.n3配置文件中 conf:webBase的填写如下:
conf:webBase ;
而原始URI为http://example/nju.edu.cn/person/ChenYa#i”,那么发布出来的URI会变成:

http://127.0.0.1:8080/webapp/page/person/Suxinning%23i

我们注意到这个URL和原始的URI有两点区别:
a.example/nju.edu.cn/被替换为127.0.0.1:8080/webapp/page/。
b.“#”被换成了“%23”。

因此,我们可以利用PHP脚本对其进行修改

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值