查看原文
其他

技术总结:DBpedia、Freebase百科图谱项目构建技术解析

刘焕勇 老刘说NLP
2024-10-08

当我们在百科网站中打开一个百科词条时,会发现每个词条页面都是按照特定格式是组织的,例如大多都包括了多义区(一个词往往会有多个义项:

如苹果一词有22个义项)、

简介区(对该词条进行了摘要式总结)

信息框(也称infobox,为半结构化数据,通过表格方式上进行属性键值对进行展示)

正文区(关于该词条的详细介绍以及超链接)

标签区(与该词条相关的标签和类型信息)

参考来源区(该百科词条中引文信息的出处)。

这些信息为结构化的知识提供了直接数据来源。例如,从多义区中可以获取词条的上位概念和相关概念信息,

可以将简介区中抽取出剪短的句子作为该词条的描述,可以从信息框中得到丰富的属性信息,

可以从正文区中获取标记词条与本词条之间的共现或相关信息,也可以从标签区中获取该词条的类型和标签关系。

当然,也可以通过获取百科分类schema体系的方式来获取实体类别或者概念上下位信息。

当前,基于百科知识图谱的构建方式大体上可以分成两种范式,一种是基于已有的百科知识平台,利用知识结构化的手段,进行抽取、转换,形成结构化知识图谱,另一种是直接设计知识图谱的众包构建平台,直接完成构建。

本文以具有代表性的DBpedia、Freebase项目进行介绍,可以从中看到百科类图谱的两种重要构建方法。

一、基于本体映射的DBpedia知识图谱

DBpedia是较为早期的语义网项目,从字面意思上看来,为从wikipedia中抽取出来的一个链接数据集,该数据集采用一个包含人、地点、音乐、电影、组织机构、物种、疾病在内的严格本体,并遵从RDF的语义数据模型结构进行存储。

1、DBpedia的由来

维基百科是广受欢迎的百科类网站,也是使用最广泛的多语言百科全书,287种不同语言的官方版本,百科文章中的信息,既包括自由的文本,也包括不同类型的结构化数据,如信息框、表格、列表和分类数据。

不过,维基百科并不能提供结构化的查询需求,而只向用户提供自由文本搜索功能。例如,使用维基百科搜索,很难找到所有流入莱茵河且长度超过100英里的河流,或者所有出生于18世纪的意大利作曲家,因此,为了能够满足这种需求,2012年,DBpedia项目提出通过从多种语言的维基百科版本中提取结构化数据,建立了一个大规模、多语言的知识库。

2、DBpedia的实现

维基百科的文章主要由自由文本组成,但也包括以维基标记形式的各种结构化信息。这些信息包括信息框模板、分类信息、图像、地理坐标、外部网页链接、消除歧义页面、页面之间的重定向以及不同语言版本的维基百科链接。

1)Dbpedia的系统构成

DBpedia提取框架从维基百科中提取这些结构化信息,包括摘要、内链、标签、类别等,并将其转化为一个丰富的知识库,该系统包括输入、解析、提取和输出5个步骤构成,如下图所示:

首先,在输入阶段,从维基百科转储或者使用MediaWiki API直接从MediaWiki安装中获取百科页面数据作为输入;

其次,并利用wiki解析器将维基百科页面的源代码转换为抽象语法树,然后,将语法树转发给提取器,针对不同的要素(标签、摘要或地理坐标等)进行提取;

接着,通过本体匹配的方式产生一组RDF语句,最后输出到不同格式(如N-Triples)的数据槽当中。信息框(infobox)信息是整个DBpedia信息提取的重点,包括信息解析以及信息标准化两个部分。

 2)信息框的解析 

信息框经常用于将一篇文章中最相关的事实以属性-值对的表格形式列在维基百科页面进行展示,而这种信息框是基于一种模板形成的,该模板指定了可以形成信息框的属性列表,因此可以使用解析器进行提取。 

3)基于mapping映射文件的信息标准化 

随着更多人的参与以及维基百科的编辑者们并没有严格遵循描述模板的页面上给出的建议,不同社区的维基百科编辑使用不同的模板来描述同一类型的实体或者对同一属性使用不同的名称,导致属性值的表达有多种不同的格式或者计量单位,即面临着明显的知识标准化问题。

为了使知识库中的信息描述能够统一,2010年,社区发起了开发本体模式和维基百科信息框属性与本体的映射的工作(DBpedia Mappings),旨在利用社区提供的映射来实现维基百科信息框和本体之间的匹配,以应对规范属性和类的名称变化。

该工作开发形成了一个MediaWiki安装程序,使用户能够协作创建和编辑映射,该映射语言利用MediaWiki模板定义DBpedia本体类和属性,以及模板/表到本体的映射,一个映射将DBpedia本体中的一个类型分配给相关信息框所描述的实体,信息框中的属性被映射到DBpedia本体中的属性。

 4)基于DBpedia本体的多语言信息映射 

DBpedia通过众包的方式构建了一个本体ontology,然后又通过众包的方式建立起了Wikipedia infobox模板名称和ontology中概念的等价关系,这个知识本体,本体由320个类组成,这些类形成了一个分层结构,由1650个不同的属性来描述,最大深度为5。

DBpedia Mapping Wiki通过预先定义好的本体,将维基百科单一语言版本中的不同模板映射到DBpedia本体,还用于将维基百科所有语言版本的模板映射到共享的DBpedia本体。

如此一来,DBpedia所有语言版本的信息都可以被合并,小语种的DBpedias可以从较大的DBpedias(如英文版)的知识中得到补充。

此外,为了进一步提升映射工作的准确性,DBpedia还提供了映射语法验证器(检查语法的正确性,并突出显示不一致的地方,如丢失的属性定义)、提取测试器(每个映射页面上链接的提取测试都会根据一组维基百科示例页面来测试映射,以直接反馈映射是否有效,以及产生的数据是如何结构化的)以及映射工具(一个图形用户界面,支持用户创建和编辑映射),这些都可以为知识图谱标准化构建工具的建设带来启发。

3、DBpedia的总结

DBpedia目前成为了规模巨大的知识图谱数据集,英文版本描述了458万个事物,其中422万个事物以一致的本体分类,包括1,445,000个人、735,000个地方、411,000个创意作品(包括123,000张音乐专辑、87,000部电影和19,000个视频游戏)、241,000个组织(包括58,000个公司和49,000个教育机构)、251,000个物种和6,000种疾病,并且提供125种语言的DBpedia本地化版本,完整的DBpedia数据集有125种不同语言的3800万个标签和摘要

2014年发布的DBpedia共包含30亿条信息,其中5.8亿条是从维基百科英文版中提取的,24.6亿条是从其他语言版本中提取的。

在使用上,DBpedia知识库的用例非常广泛,从企业知识管理、网络搜索到基于维基百科的搜索上均有大量应用,开发者可以使用SPARQL语句来实现数据访问。

通过制定统一的本体,并将这也是目前知识图谱构建中知识融合的一种常见处理手段,制定映射规则集合,供后续使用,对同一类型的实体使用不同的信息框,或者对同一属性使用不同的属性名进行整理映射。

二、基于众包编辑的Freebase知识图谱

Freebase是后续被收购并迁移至wikidata的一个大型通用知识库,由美国软件公司Metaweb于2000年开始构建的一个语义网项目,采用与wikipedia类似的创作共享类思想,所有内容都由用户添加,采用创意共用许可证,可以自由引用,其中的所有条目都采用结构化数据的形式,使得数据之间通过关系就可以很容易地联系在一起,为信息的查询和处理提供方便。

Freebase主要来源于开放社区的贡献,包括维基百科Wikipedia、世界名人数据库NNDB、开放音乐数据库MusicBrainz等,目前已经涵盖超过4000中类别、超过7000种属性,截止到2014年年底,包含了6800万个实体,10亿条关系信息,超过24亿条事实三元组信息。 

1、Freebase的由来 

以互联网作为信息展现形态的方式缺乏围绕信息项目内容或元数据的本质特征,语义网则希望可以利用 "意义 "而不是关键词来索引和组织信息。而随着语义网的发展,这种面向网页和信息库添加丰富的、深层的、结构化的语义方法已经发展到包括一套标准的工具、协议和组织惯例,允许创建本体结构和使用这些结构组织基于Web的信息。虽然在语义网的研究和实施方面已经取得了实质性的进展,但语义索引技术的稳定的、大规模的基础数据库还相对欠缺。

Freebase整个系统预先定义好数据模型、数据填充以及数据存储,是实现Freebase的几个核心步骤,下面分别从这三个方面进行介绍。 

2、数据模型的定义 

在数据模型的设计上,Freebase不对顶层本体做非常严格的控制,用户可以创建和编辑类和关系的定义。

Freebase是个典型的三层结构,FreeBase包含3层结构:Domain-->Type-->Instance(Topic):People-->Person-->somebody。

例如:

Topic:主题,表示实例或实体,相当于是类的实例化,对应图中的结点,例如物理实体、抽象概念以及思想流派等;

Type:类型或概念,表示每个Topic所属的类型,可以属于多个Type,对实体进行归类;Domain:域,对类型进行分组,相当于小类对应的大类,便于schema进行管理;

Property:属性,表示每个类型或概念所具有的属性类型,每个Type类型都带有一组与该类型相关的不同属性,属性值的类型可以是整型、文本等基本类型,也可以是CVT复合类型,用于表示每个条目由多个字段组成的数据;

MID:主题的唯一机器标识符,使用MID对实体进行编号,由 /m 和一个基数为 32 的唯一标识符组成,当主题被合并或拆分时,MID 可以发挥关键作用,允许外部应用跟踪逻辑主题;

属性约束:对属性的取值范围进行约束,比如:类型约束(整型、文本、浮点型、datetime、CVT等)、条件约束(是否单值、是否去重、主属性、逆属性等)。

例如,上图描述了Arnold Schwarzenegger、Austria、Republic、Terminator共4个topic, 属于Person(人物)、Body Builder(健美运动员)、Actor(演员)和Politician(政治家)共4种Type,"Arnold Schwarzenegger"同时属于这几种Type,其中:

Type:Person有一个属性Country of Birth(出生国),它的值是Austria(奥地利);

Type:Politician有一个属性Party(党派),它的值是Republic(共和党);

Type:Actor有一个属性Films(演出的电影),它的值是Terminator(终结者)。

从中,我们可以发现,这一点对本体设计中属性类型和实体类型的设计可以带来启发,例如,通过类型及其配置的属性,可结构化一个Topic,如果Topic属于多个Type,则其结构为这些Type属性的集合。如果属性是基本类型则存储在该topic本身,即作为属性类型;若是CVT则作为另一个topic存储,即作为实体类型,通过边进行关联。 

3、基于数据模型的众包编辑 

在对数据进行数据模式定义之后,则需要进行数据实例填充。与wikipedia类似,Freebase采用了众包编辑的方法,并提供了轻便实用的编辑工具,涵盖编辑实体、编辑Schema、 Review以及DataGame等几个环节。

1)实体编辑

实体编辑包括创建实体、将实体分到类别、增加/修改属性/关系、上传图片等步骤。如下图中,用户正在编辑 "Richard Feynman "主题。

2)Schema编辑

编辑Schema包括定义新类别和定义类别的属性。Freebase提供了一套用于创建和演变模式的模式编辑器,图中用户正在编辑 "药用植物 "的schema,以添加一个 "衍生药物 "属性,当创建该属性实例时,系统会自动地推荐与该属性期相关的实例。

 3)Schema的审核

 Review环节中,由用户来验证知识的准确性,进行投标,将错误的知识进行删除。在DataGame中,用户通过寻找其别名,并使用Yahoo图片搜索来加入图片。

4、Freebase的数据存储样例 

在完成知识数据的填充之后,Freebase使用RDF格式进行存储,如下图所示,Freebase的Dump文件为三元组格式,整个Dump文件中,还存在一些特殊的边,定义了Freebase属性(Properties)、类型(Types)、域(Domains)以及Namespace的相关信息,这些信息同样以三元组形式组织,对Freebase中其他数据进行了定义说明。

图-Freebase的数据样例 每一行都是一个三元组,从左至右依次是Subject(主语)、Predicate(谓词)、Object(“宾语”或者“客体"),谓词中体现出了概念之间的层级结构,如“people/person/gender”中描述“person”是“people”的一个子类,“gender”是“person”的一个属性,从整体来看,“person”这个类别包括“place_of_birth”、“nationality”、“gender”等属性类型。

5、Freebase与wikidata

维基百科媒体基金会于2013年启动了一个新项目叫WikiData,组织了一个相对小众的专业群体采用维基协作的方式,试图构建全球最大规模的结构化知识库,作为Wikipedia、Wikivoyage、Wikisource中结构化数据的中央存储器旨在为维基百科、维基共享资源以及其他的维基媒体项目提供支持。

Wikidata中的数据主要以文档的形式进行存储,目前已包含了超过1700万个文档,其中的每个文档都有一个主题或一个管理页面,且被唯一的数字标识。谷歌于2016年5月正式关闭了Freebase,转而支持WikiData,并逐步把Freebase的数据导入到WikiDataFreebase。

WikiData继承了Wikipedia的众包协作的机制,但与Wikipedia不同,WikiData支持的是以三元组为基础的知识条目(Items)的自由编辑。在构成上,Wikidata的核心概念为entity(实体),用于表示现实生活中的一个对象或者抽象概念,每个具体的项目都有标签(label)、描述(description)、别名(alias),使得不同的item可以加一区分,item中包括多种数据,每一条数据被称为称为声明statement,由声明、数值、修饰成分以及参考资料等部分内容组成。

6、Freebase的总结

有人评价Freebase是2007年迄今互联网上最激动人心的东西。Freebase主要是从维基抽取结构化数据并发布成RDF,是完全结构化的,但数据来源不局限维基百科,还导入了数量众多的专业数据集,并提供数据查询和录入机制。

Freebase最强大的地方就在于,它里面的元数据是可变的,具有弹性,这里的元数据包含Freebase自身平台所需的基础模型的元数据。Freebase提供的不仅是一个数据集或数据库,还有较为便捷的访问方式,其支持MQL面向对象的查询语言与结构化的查询对象,还支持HTTPweb端的访问和JSON数据格式的API接口。

目前,领域的应用都可以直接使用freebase的数据进行分析、挖掘以及技术评测,Freebase 官网提供 N-Triple RDF格式(.nt文件)的数据压缩包的下载,例如,FB13是Freebase的子集,包含13种关系和75k种实体,经常用于知识图谱相关的评测任务。

由于Freebase是基于图数据库Metaweb开发的,Metaweb数据库的图结构是由一系列的节点和反映节点间关系的有向连线组成,因此这个与属性图模型Neo4j十分类似。

三、总结

本文以具有代表性的DBpedia、Freebase项目进行了介绍,可以从中看到百科类图谱的两种重要构建方法。

一方面,从DBPedia的构建方法来看,通过制定统一的本体,并将这也是目前知识图谱构建中知识融合的一种常见处理手段,制定映射规则集合,供后续使用,对同一类型的实体使用不同的信息框,或者对同一属性使用不同的属性名进行整理映射。

另一方面,Freebase的数据建模思想也在业界也广受欢迎,其< Subject,Predicate,Object>的三元组形式将海量知识存储在分布式数据仓库中,并以CVT(Compound Value Type)设计承载多元数据,即抽象一个CVT的实例来携带多元信息,具有较好的表达能力

​关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

就职于360人工智能研究院、曾就职于中国科学院软件研究所。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。


继续滑动看下一个
老刘说NLP
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存