面向语义网的中文百科知识组织与集成方法

文档序号:6538086阅读:207来源:国知局
面向语义网的中文百科知识组织与集成方法
【专利摘要】本发明涉及知识抽取【技术领域】,为本发明的目的是按照语义网标准,提取、整理、发布和集成中文百科知识,为此,本发明采用的技术方案是,面向语义网的中文百科知识组织与集成方法,包括下列步骤:1)配置Nutch和Jingwei的环境;2)编写Nutch插件拓展其功能;3)为Jingwei系统添加动态插入三元组的表述性状态转移REST的Web服务;4)下载DBpedia中的中文知识数据;5)设计并实现百度百科和互动百科数据集的整合与集成;6)设计并实现百度百科和中文维基百科数据集的整合与集成;7)设计并实现互动百科和中文维基百科数据集的整合与集成。本发明主要应用于知识抽取技术。
【专利说明】面向语义网的中文百科知识组织与集成方法
【技术领域】
[0001]本发明涉及知识抽取【技术领域】,具体来说,涉及面向语义网知识库构建、存储,SP面向语义网的中文百科知识组织与集成方法。
【背景技术】
[0002]随着互联网的普及和发展,由于计算机无法理解网络上的信息导致的性能瓶颈日益凸显。为了解决这个问题,实现人与电脑的无障碍沟通,1998年蒂姆.伯纳斯-李(TimBerners-Lee)提出了语义网的概念。语义网的核心是通过给万维网上的文档添加能够被计算机所理解的语义,从而使整个互联网成为一个通用的信息交换媒介,它是一个能够根据语义进行判断的智能网络,可以使相连的每部电脑理解词语、概念以及它们之间的逻辑关系,从而帮助用户完成复杂的工作。
[0003]发展语义网的两种主要技术,XML (可扩展标记语言)和RDF (资源描述框架),如今已经日益成熟,同时基于RDF技术的Linked Data数据集大量地发布,成为了语义网的数据基础。Linked Data (链接数据)最早是在2007年5月,由Chris Bizer和RichardCyganiak向W3C SWEO提交的一个项目申请Linked Open Data Pro ject中提出来的,截止到2011年9月已发布的Linked Data规模已经达到310亿多个RDF三元组以及5亿多个RDF关联关系,与2009年7月已发布的67亿多个RDF三元组和I亿多的RDF关联关系相t匕,增长非常迅猛。其中最著名的工作之一 DBpedia (最著名的多领域知识本体之一)是从英文维基百科中抽取知识数据得到的Linked Data数据集,包含多个语言版本的资源,但是对于发布中国语义数据的工作却很少,对于国语使用者理解英文发布的Linked Data是比较困难的。事实上,国内三个最大的百科全书(百度百科、互动百科、中文维基百科)所包含的数据量是相当巨大的,从中提取结构化信息作为Linked Data发布出来也是非常有意义的,可以提高语义网在中文环境下的应用水平。
[0004]针对以上问题,有必要研究面向语义网的中文百科知识组织与集成的方法,对于百度百科、互动百科、中文维基百科的信息框内容进行爬取并解析成RDF三元组,然后将三个数据集进行集成加入到大规模RDF分布式存储系统,最终形成符合Linked Data要求的中文百科知识库RDF数据集。这对于中文语义网的发展具有重要影响,也有助于中文语义网相关应用的推进。

【发明内容】

[0005]为克服现有技术的不足,本发明的目的是按照语义网标准,从维基百科、百度百科和互动百科等中文百科Web页面中,提取、整理、发布和集成中文百科知识,最终形成符合Linked Data要求的中文百科知识库RDF数据集,为向世界公开发布做准备。为此,本发明采用的技术方案是,面向语义网的中文百科知识组织与集成方法,包括下列步骤:
[0006]I)配置Nutch和Jingwei的环境,Nutch是一种开源Java实现网络爬虫,Jingwei是一种大规模RDF分布式存储系统;[0007]2)编写Nutch插件拓展其功能从而对爬取的百度百科和互动百科文章内容进行解析生成三元组;
[0008]3)为Jingwei系统添加动态插入三元组的表述性状态转移REST的Web服务,从而可以在爬取的过程中调用该服务实现同步地向底层数据库插入刚解析得到的RDF三元组数据;
[0009]4)下载DBpedia中的中文知识数据,将该数据进行简单的预处理,然后装载入Jingwei底层数据库中;
[0010]5)设计并实现百度百科和互动百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,owl即Web Ontology Language, 一种对本体描述的网络本体语言,并直接装载入Jingwei底层数据库中;
[0011]6)设计并实现百度百科和中文维基百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,并直接装载入Jingwei底层数据库中;
[0012]7)设计并实现互动百科和中文维基百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,并直接装载入Jingwei底层数据库中;
[0013]8)设计并实现动态插入显示页面,对插入的RDF三元组提供实时的显示和说明;
[0014]9)设计并实现三元组模式查询页面。
[0015]上述的步骤I)中,采用Cassandra为底层存储系统,Cassandra是一种分布式键值存储库集群。
[0016]步骤2)中实现的是拓展点HtmlParseFilter,HtmlParseFilter是用于拓展Html功能的接口,提供给插件开发 者一个DocumentFragment的对象,DocumentFragment是用于解析网页的DOM结构,利用给出的对象就可以对其进行操作从该超文本标记语言HTML的文档对象模型DOM结构中提取出RDF三元组,具体过程如下:
[0017]2.1得到下一个待解析的网页统一资源定位符URL ;
[0018]2.2通过该URL的前缀判断网页的来源是百度百科还是互动百科,如果是百度百科,则进入步骤2.3 ;如果是互动百科,则进入步骤2.4 ;
[0019]2.3实例化对百度百科进行处理的类,获取该百度百科页面的DOM结构,利用Nodeffalker对象对DOM树进行先根遍历,Nodeffalker是Nutch中用于遍历树的结构,然后以百度百科页面的设计规则为依据提取出RDF三元组,进入步骤2.5 ;
[0020]2.4实例化对互动百科进行处理的类,获取该互动百科页面的DOM结构,利用NodeWalker对象对DOM树进行先根遍历,然后以互动百科页面的设计规则为依据提取出RDF三元组,进入步骤2.5 ;
[0021]2.5将解析得到的RDF三元组写入文本中,用于之后的集成与整合工作;
[0022]2.6调用为大规模RDF分布式存储系统Jingwei添加的动态插入三元组的RESTWeb服务,将解析出的三元组直接存入系统的底层数据库中;
[0023]2.7跳转回步骤2.1,得到下一个待解析的网页URL,直到爬取的过程终止并且所有爬取得到的网页内容都得到解析。
[0024]骤3)设计了动态插入RDF三元组的REST Web服务,是通过访问“http://localh
ost: 8080?rdf=<s1Xp1Xo1> | <s2Xp2Xo2> |.....| <sn>〈pn>〈on>”来完成 η 个 RDF 三元组的插
入和建立索引。[0025]步骤5)实现的是百度百科和互动百科之间的整合,所谓整合就是通过在多个数据集之间进行链接发现从而构成一个整体,链接发现算法的设计基于用于大数据处理的并行编程模型MapReduce框架模型,通过对数据集中的每一条RDF三元组进行分析和处理,发掘出其中的owl: sameAs关系。
[0026]本发明的技术特点及效果:
[0027]本发明针对的是语义网的知识库构建,最终提供了一种构建符合语义网要求的中文百科知识库Linked Data数据集的方法,从而促进了中文语义网的进步与发展,有助于基于中文语义网相关应用的成熟。
【专利附图】

【附图说明】
[0028]图1是本发明中中文百科知识库Linked Data数据集构建的整体流程图。
[0029]图2是爬虫Nutch的工作流程图。
[0030]图3是HTML文档的DOM树结构。
[0031]图4是本发明步骤2)中Nutch插件对爬取的百度百科和互动百科文章内容进行解析生成RDF三元组的流程图。
[0032]图5是整合百度百科和互动百科数据集使用的MapReduce算法中Map步的流程图。
[0033]图6是整合百度百科和互动百科数据集使用的MapReduce算法中Reduce步的流程图。
[0034]图7是最终设计的三元组模式查询页面。
[0035]图8是三元组模式查询结果显示页面。
[0036]图9是最终设计的动态插入三元组显示页面。
【具体实施方式】
[0037]I)配置Nutch和大规模RDF分布式存储系统Jingwei的环境;
[0038]2)编与Nutch插件拓展其功能从而对爬取的百度百科和互动百科文章内容进行解析生成三元组;
[0039]3)为Jingwei系统添加动态插入三元组的REST Web服务,从而可以在爬取的过程中调用该服务实现同步地向底层数据库插入刚解析得到的RDF三元组数据;
[0040]4)下载DBpedia中的中文知识数据,将该数据进行简单的预处理(例如编码转换等),然后装载入Jingwei底层数据库中;
[0041]5)设计并实现百度百科和互动百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,并直接装载入Jingwei底层数据库中;
[0042]6)设计并实现百度百科和中文维基百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,并直接装载入Jingwei底层数据库中;
[0043]7)设计并实现互动百科和中文维基百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,并直接装载入Jingwei底层数据库中;
[0044]8)设计并实现动态插入显示页面,对插入的RDF三元组提供实时的显示和说明;
[0045]9)设计并实现三元组模式查询页面,同时为了方便用户多次进行关联资源查询,页面设计采用了链接数据导航;
[0046]上述的步骤I)中,大规模RDF分布式存储系统Jingwei是由本课题所在的课题组开发的大规模RDF分布式存储系统,采用Cassandra分布式键值存储库集群为底层存储系统,具备高度的水平可伸缩性,同时它提供了基于MapReduce编程模型的批量装载RDF三元组并建立索引的功能,以及三元组模式查询和关键字查询的服务。
[0047]本发明的步骤2)中实现的是拓展点HtmlParseFilter接口,该接口的方法中提供给插件开发者一个DocumentFragment的对象,也就是待解析的网页的DOM结构,利用给出的对象就可以对其进行操作从该HTML的DOM结构中提取出RDF三元组。具体过程如下:
[0048]2.1得到下一个待解析的网页URL ;
[0049]2.2通过该URL的前缀判断网页的来源是百度百科还是互动百科,如果是百度百科,则进入步骤2.3 ;如果是互动百科,则进入步骤2.4 ;
[0050]2.3实例化对百度百科进行处理的类,获取该百度百科页面的DOM结构,利用Nodeffalker对象对DOM树进行先根遍历,然后以百度百科页面的设计规则为依据提取出RDF三元组,进入步骤2.5 ;
[0051]2.4实例化对互动百科进行处理的类,获取该互动百科页面的DOM结构,利用NodeWalker对象对DOM树进行先根遍历,然后以互动百科页面的设计规则为依据提取出RDF三元组,进入步骤2.5 ;
[0052]2.5将解析得到的RDF三元组写入文本中,用于之后的集成与整合工作;
[0053]2.6调用为大规模RDF分布式存储系统Jingwei添加的动态插入三元组的RESTWeb服务,将解析出的三元组直接存入系统的底层数据库中;
[0054]2.7跳转回步骤2.1,得到下一个待解析的网页URL,直到爬取的过程终止并且所有爬取得到的网页内容都得到解析;
[0055]本发明的步骤3)设计了动态插入RDF三元组的REST Web服务,主要基于以下考虑。因为百度百科和互动百科的数据量非常庞大,并且每天都在不断地更新扩充,所以不能够短时间内爬取完毕,而Jingwei系统只能够支持大批量的数据装载和建立索引,不支持RDF三元组实时地动态插入,因此需要为其添加动态插入三元组并建立索引的REST Web服务,从而可以通过在爬取的过程中调用该服务实现实时地向数据库插入RDF三元组数据。
本发明最终是通过访问 ^http://localhost:8080?rdf=<s1Xp1Xo1> | <s2Xp2Xo2> |.....〈SnXpnXon>”来完成η个RDF三元组的插入和建立索引。
[0056]本发明的步骤5)实现的是百度百科和互动百科之间的整合。所谓整合就是通过在多个数据集之间进行链接发现从而构成一个整体,由于三大中文百科之间有很多公共的知识数据,因此必须将这些不同数据集中相同的资源通过owl: sameAs关系链接起来。因为数据集之间整合过程的输入数据量巨大,并且需要对这些数据进行复杂的处理,所以链接发现算法的设计基于MapReduce框架模型,通过对数据集中的每一条RDF三元组进行分析和处理,发掘出其中的owl:SameAS关系。另外,步骤6)和步骤7)基本思想和方法同步骤
5)一致。
[0057]下面结合附图对本发明作进一步详细说明。
[0058]参见图1,本发明中整个中文百科知识库Linked Data数据集构建的流程图,详细步骤如下:[0059]I)配置Nutch和大规模RDF分布式存储系统Jingwei的环境;
[0060]2)编与Nutch插件拓展其功能从而对爬取的百度百科和互动百科文章内容进行解析生成三元组;
[0061]3)为Jingwei系统添加动态插入三元组的REST Web服务,从而可以在爬取的过程中调用该服务实现同步地向底层数据库插入刚解析得到的RDF三元组数据;
[0062]4)下载DBpedia中的中文知识数据,将该数据进行简单的预处理(例如编码转换等),然后装载入Jingwei底层数据库中;
[0063]5)设计并实现百度百科和互动百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,并直接装载入Jingwei底层数据库中;
[0064]6)设计并实现百度百科和中文维基百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,并直接装载入Jingwei底层数据库中;
[0065]7)设计并实现互动百科和中文维基百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,并直接装载入Jingwei底层数据库中;
[0066]8)设计并实现动态插入显示页面,对插入的RDF三元组提供实时的显示和说明;
[0067]9)设计并实现三元组模式查询页面,同时为了方便用户多次进行关联资源查询,页面设计采用了连接数据导航;
[0068]参见图2,该图是 Nutch的工作流程图,本发明最关键的是需要理解Nutch的工作过程,才能设计出正确的方案。同时,在爬虫Nutch的工作过程中,为了能够正确运行爬取得到百度百科和互动百科的内容,并且解析出RDF三元组,需要注意以下几点:
[0069]I)为了避免对内容较多的百科网页爬取时丢失信息,需要修改nutch-default.xml (Nutch的配置文件)中控制最多爬取内容的参数http, content, limit,将其修改为原来的100倍。
[0070]2)因为百度百科设置有robots, txt (爬虫协议的文件)的限制,而Nutch默认是遵守其限制的,所以需要将源代码Fetcher.java (Ntuch实现爬取过程的类)里关于判断robot, txt限定的if语句注释掉。
[0071]3)对于百度百科需要适当增加nutch-default.xml文件中控制向同一个服务器发送请求的最短间隔的参数fetcher.server, delay,从而避免被屏蔽。
[0072]4)本发明包含三个不同的数据源,并且中文的字符不是ASCII (美国信息交换标准代码),不能使用URI来表示,所以需要设计三个IRI (国际化资源标识符)模式(即URI的补充)来表明资源的来源,如表1所示。
[0073]表1 IRl 模型
来源IRI 1? tW
[0074]fi 度 fi 科h{{p://?w,!ju.edi1.cn//resource/baidu/| Label I
I?ι;)ι π' |:|-1llp://HW.!jti,edu.co/res?urce/lmd<)ng/lLabelj
[0075]
1 ?τ JC维镇 ti科http://zh.dbpedia.0rg/resource/[Label] (DBpedia 采用)
[0076]图3是HTML的DOM树结构。对于解析RDF三元组的步骤关键是理解HTML的DOM树结构,从而在对树进行遍历的过程中,找到能够提取出三元组的关键点,提取出RDF三元组。
[0077]图4是整个流程中的步骤2)和3),详细的过程如下:
[0078]2.1得到下一个待解析的网页URL ;
[0079]2.2通过该URL的前缀判断网页的来源是百度百科还是互动百科,如果是百度百科,则进入步骤2.3 ;如果是互动百科,则进入步骤2.4 ;
[0080]2.3实例化对百度百科进行处理的类,获取该百度百科页面的DOM结构,利用Nodeffalker对象对DOM树进行先根遍历,然后以百度百科页面的设计规则为依据提取出RDF三元组,进入步骤2.5 ;
[0081]2.4实例化对互动百科进行处理的类,获取该互动百科页面的DOM结构,利用NodeWalker对象对DOM树进行先根遍历,然后以互动百科页面的设计规则为依据提取出RDF三元组,进入步骤2.5 ;
[0082]2.5将解析得到的RDF三元组写入文本中,用于之后的集成与整合工作;
[0083]2.6调用为大规模RDF分布式存储系统Jingwei添加的动态插入三元组的RESTWeb服务,将解析出的三元组直接存入系统的底层数据库中;
[0084]2.7跳转回步骤2.1,得到下一个待解析的网页URL,直到爬取的过程终止并且所有爬取得到的网页内容都得到解析;
[0085]图5和图6分别是步骤5)中对百度百科和互动百科进行整合的MapReduce算法的Map步和Reduce步,步骤6)和步骤7)的处理过程和步骤5)类似,其具体算法实现分别如下:
[0086]算法1.Map步处理
[0087]a)从文件中取得一条三元组并转换为字符串,通过判断主语的前缀识别出该三元组的来源。如果来自百度百科,则跳转到b);如果来自互动百科,跳转到C)。
[0088]b)判断谓语是否为重定向(pageRedirects),如果是重定向,跳转到d);不是重定向,跳转到e)。
[0089]c)判断谓语是否为重定向(pageRedirects),如果是重定向,跳转到f);不是重定向,跳转到g)。
[0090]d)将该三元组的主语资源名u提取出来,宾语资源名m提取出来,产生一个(key=u, value=5)的中间键值对,并将(u, m)存入百度哈希表中,跳转回a)。
[0091]e)将该三元组的主语资源名u提取出来,产生一个(key=u, value=3)的中间键值对,跳转回a)。
[0092]f)将该三元组的主语资源名u提取出来,宾语资源名m提取出来,产生一个(key=u, value=7)的中间键值对,并将(u, m)存入互动哈希表中,跳转回a)。
[0093]g)将该三元组的主语资源名u提取出来,产生一个(key=u, value=2)的中间键值对,跳转回a)。
[0094]算法2.Reduce步处理
[0095]a)得到一组具有相同key值的键值对集合的迭代器。
[0096]b)通过迭代器,将所有value值相乘得积。
[0097]c)判断乘积能否被2整除,如果能则跳转到d),不能则跳转到e)。
[0098]d)判断乘积能否被3整除,如果能则跳转到f),不能则跳转到g)。[0099]e)判断乘积能否被7整除,如果能则跳转到h),不能则跳转到a)。
[0100]f)生成一条百度百科的资源到互动百科的资源的owl: sameAs的三元组,跳转到a)处理下一组键值对。
[0101]g)判断乘积能否被5整除,如果能则跳转到i),不能则跳转到a)。
[0102]h)从互动哈希表中通过以资源名为key得到重定向到的实际资源名并替换掉原来的资源名,跳转到d)。
[0103]i)从百度哈希表中通过以资源名为key得到重定向到的实际资源名并替换掉原来的资源名,跳转到O。
[0104]如图7所示,三元组模式查询页面使用的是链接数据导航,在三元组模式查询页面设计的步骤中,由于RDF数据集包含大量的URI字符串,来自同一数据集的资源具有相同且复杂的前缀,冗长的前缀不方便用户的理解和使用。因此,设计通过在显示页面时将冗长的前缀转换成简短又容易理解的字符串可以使界面更加人性化,本发明采用的URI的实际前缀与页面显示的前缀对应关系如表2所示。
[0105]表2 URI实际前缀与显示前缀的映射
【权利要求】
1.一种面向语义网的中文百科知识组织与集成方法,其特征是,包括下列步骤: .1)配置Nutch和Jingwei的环境,Nutch是一种开源Java实现网络爬虫,Jingwei是一种大规模RDF分布式存储系统; . 2)编写Nutch插件拓展其功能从而对爬取的百度百科和互动百科文章内容进行解析生成三元组;. 3)为Jingwei系统添加动态插入三元组的表述性状态转移REST的Web服务,从而可以在爬取的过程中调用该服务实现同步地向底层数据库插入刚解析得到的RDF三元组数据; . 4)下载DBpedia中的中文知识数据,将该数据进行简单的预处理,然后装载入Jingwei底层数据库中; . 5)设计并实现百度百科和互动百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,owl即Web Ontology Language, 一种对本体描述的网络本体语言,并直接装载入Jingwei底层数据库中; . 6)设计并实现百度百科和中文维基百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,并直接装载入Jingwei底层数据库中;. 7)设计并实现互动百科和中文维基百科数据集的整合与集成,发掘两个数据集之间其中的owl: sameAs链接,并直接装载入Jingwei底层数据库中; . 8)设计并实现动态插 入显示页面,对插入的RDF三元组提供实时的显示和说明; . 9)设计并实现三元组模式查询页面。
2.如权利要求1所述的面向语义网的中文百科知识组织与集成方法,其特征是,上述的步骤I)中,采用Cassandra为底层存储系统,Cassandra是一种分布式键值存储库集群。
3.如权利要求1所述的面向语义网的中文百科知识组织与集成方法,其特征是,步骤2)中实现的是拓展点HtmlParseFilter, HtmlParseFilter是用于拓展Html功能的接口,提供给插件开发者一个DocumentFragment的对象,DocumentFragment是用于解析网页的DOM结构,利用给出的对象就可以对其进行操作从该超文本标记语言HTML的文档对象模型DOM结构中提取出RDF三元组,具体过程如下: . 2.1得到下一个待解析的网页统一资源定位符URL ;. 2.2通过该URL的前缀判断网页的来源是百度百科还是互动百科,如果是百度百科,则进入步骤2.3 ;如果是互动百科,则进入步骤2.4 ;. 2.3实例化对百度百科进行处理的类,获取该百度百科页面的DOM结构,利用Nodeffalker对象对DOM树进行先根遍历,Nodeffalker是Nutch中用于遍历树的结构,然后以百度百科页面的设计规则为依据提取出RDF三元组,进入步骤2.5 ; . 2.4实例化对互动百科进行处理的类,获取该互动百科页面的DOM结构,利用Nodeffalker对象对DOM树进行先根遍历,然后以互动百科页面的设计规则为依据提取出RDF三元组,进入步骤2.5 ; . 2.5将解析得到的RDF三元组写入文本中,用于之后的集成与整合工作; . 2.6调用为大规模RDF分布式存储系统Jingwei添加的动态插入三元组的REST Web服务,将解析出的三元组直接存入系统的底层数据库中;. 2.7跳转回步骤2.1,得到下一个待解析的网页URL,直到爬取的过程终止并且所有爬取得到的网页内容都得到解析。
4.如权利要求1所述的面向语义网的中文百科知识组织与集成方法,其特征是,骤3)设计了动态插入RDF三元组的REST Web服务,是通过访问“http://localhost:8080?rdf=(S1Xp1Xo) /<s2Xp2Xo2> /……/<snXpnXon>”来完成η个RDF三元组的插入和建立索引。
5.如权利要求1所述的面向语义网的中文百科知识组织与集成方法,其特征是,步骤5)实现的是百度百科和互动百科之间的整合,所谓整合就是通过在多个数据集之间进行链接发现从而构成一个整体,链接发现算法的设计基于用于大数据处理的并行编程模型MapReduce框架模型,通过对数据集中的每一条RDF三元组进行分析和处理,发掘出其中的owl: sameAs 关系。
【文档编号】G06F9/44GK103823855SQ201410056318
【公开日】2014年5月28日 申请日期:2014年2月19日 优先权日:2014年2月19日
【发明者】付宇新, 冯志勇, 王鑫 申请人:天津大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1