知识图谱调研-Freebase

介绍

Freebase 是一个由元数据组成的大型合作知识库,内容主要来自其社区成员的贡献。它整合了许多网上的资源,包括部分私人wiki站点中的内容。Freebase 致力于打造一个允许全球所有人(和机器)快捷访问的资源库,由美国软件公司Metaweb开发并于2007年3月公开运营。2010年7月16日被Google收购, 2014年12月16日,Google宣布将在六个月后关闭 Freebase ,并将全部数据迁移至Wikidata。Freebase的整体设计很有意思,在知识图谱设计上很具代表性。

数据结构

基础模型

  • Topic:即实例或实体,每一条信息叫做Topic,比如:姚明等。
  • Type:类型或概念,每个Topic可以属于多个Type,比如:人、运动员等。
  • Domain:域,对类型的分组,便于schema管理,比如:人物。
  • Property:属性,每个Type可以设置多个属性,其值默认可以有多个,可通过设置unique为true限制只能有一个值。比如:出生日期、所在球队等。
    • 属性值类型可以是基本类型,比如:整型、文本等;也可以是另一个type,比如:所在球队、父母等,这种情况叫做CVT,compound value type 组合值类型,比如:所在球队就是一个CVT,它有自身结构化的属性,不仅仅只是一种简单的值。
    • MID:实体编号。不考虑实体合并和分裂时,一个实体和一个MID是一一对应的;当考虑实体合并和分裂时,多个MID可能指代一个实体,但是只有一个MID是master,其他的MID通过一个特殊的属性(<人.运动员.replaced_by>)指向这个MID。
    • KEY:可以通过key来唯一确定一个实体,一个实体可以有多个key,每个key都属于一个namespace,比如: "/en/yao_ming"的namespace为"/en"、"/wikipedia/zh-cn_title/姚明" 的namespace为"/wikipedia/zh-cn_title"。对于平台基础模型的实体(Domain、Type、Property),Freebase会从Key中选一个值,作为该实体的ID。

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

通过类型及其配置的属性,可结构化一个Topic,如果Topic属于多个Type,则其结构为这些Type属性的集合。如果属性是基本类型则存储在该topic本身;若是CVT则作为另一个topic存储,通过边进行关联。如下图:橙色部分为模型,蓝色部分为Topic。

知识图谱调研-Freebase

 

Freebase本身就是进行模型schema管理和数据管理的,于是为了足够的灵活性,Freebase平台本身所需的基础模型(Type、Domain、Property、Object也通过freebase进行自举配置,放在"/type"这个域下,在freebase中只要是"/type"这个域下的都是用于定义平台自身模型的数据,见下图表示的是平台所有类型的分类。

知识图谱调研-Freebase

数据存储

整个Freebase数据存储是一张大图,每个点都使用type/object定义,边使用type/link定义,不管是模型还是Topic,其数据都作为点存储于图数据库中,通过边进行关联。

Freebase的后台数据库Graphd以点和点间关系(边)的图状结构来组织数据,通过二进制数据存储块(类似SQL中的BLOBs)来储存点和边,并以哈希表的方式存储组织数据,它在用户下载上传数据时的起到临时数据缓存器的作用,对数据进行检验处理后,再保存到Graphd中。

数据库中以数组的方式对点及其关系的元数据进行建模,以表格的形式进行存储,表格中的每条数据对应一个点边数组。点边数组一般由4个主要的数组成员组成,分别是源点、关系、目标点、源点值,于是点边表中就按这四个成员设定相应的四列。

Graphd的图是有向图,边的方向从源点指向目标点,但执行查询时,可向前或向后遍历所有边来获取结果。在属性定义时,可以将一个方向的属性定义为“主属性”(比如:父亲),反方向上定义为“逆属性”(比如:儿子),这两个属性成为互逆属性。

当用户输入问题时,数据库引擎会先分析出问题的主体和可能所处领域,在“源点”和主属性“关系”列中进行检索,然后将所匹配到的“目标点”列中的值反馈给用户;也会反向在“目标点”和逆属性“关系”列中进行检索,将结果中的“源点”列中的值反馈给用户。这种架构设计有效的保证了数据的查全率。

数据来源

  • freebase提供页面功能,用户可进行数据添加和修改。
  • 提供开放的API工具,进行大批量数据集成。
  • 通过数据挖掘对网页进行结构化抽取,再通过MQL导入。
  • 固定的数据提供方定期导入:wikipedia的数据每两周自动导入,Netflix每周自动导入,还有一些数据小组或社区定时导入。

下图是目前已集成的部分知名数据集。

知识图谱调研-Freebase

数据查询

数据权限

Freebase对用户读取数据是完全开放并免费的,但是用户需要添加编辑数据时,就需要访问控制模块。平台通过“/type/user”、“/type/usergroup”以及“/type/permission”这几个属性实现用户的访问权限控制,每个对象都有一个“权限”属性,指向“/type/permission”。这个权限属性指定了用户组/type/usergroup,不同用户组成员可以操作的对象就不同。用户可以*更新freebase绝大部分的类型和实例,除/type下的平台基础模型外。

MQL

全称Metaweb query language,用于提供HTTP API来进行freebase的读写操作,其入参和反参都是json格式。mql查询需要对freebase内配置的模型有一定了解,有一定的专业性要求。下面会列举几个案例,详细可见freebase官网

  • 根据guid查询实例详情,并指定返回的哪些字段。
{
 "query": [
   {
     "limit": 1,
     "guid": "42caf4fa-4725-11e5-8fdc-f80f41fb03aa",
     "name": "", //超类object的字段名
     "/tv/tv_actor/date:"" //类型tv_actor的属性出道时间date
     "/tv/tv_actor/tv_program": [ //类型tv_actor的属性出演电视剧,也是一个类型,嵌套指定该类型所需字段。
       {
         "name": "",
         "limit": 3
       }
     ]
   }
 ]
}
  • 根据类型的guid或ID查类型schema

 

{

 "query": [
   {
     "limit": 1,
     "guid": "42caf4fa-4725-11e5-8fdc-f80f41fb03aa",
     "type": "/tv/tv_actor"
     "/type/domain/types": ""
   }
 ]
}
  • 根据类型ID的实例列表,并指定需要字段列
{
 "query": [
   {
     "type": "/film/film",
     "guid": "", //需返回guid字段值
     "name": "" //需返回name字段值

     "limit": 20,  //指定返回条数,若返回所有则不指定该字段 
   }
 ]
}

另外,Freebase官网提供N-Triple RDF格式的数据压缩包的下载,整个压缩包30G,解压后300G+,下载后,可以用压缩软件解压,也可以通过编程工具(比如Java的GzipInuputStream)边读取边解压。下面列举一个姚明案实例,格式为:MID(比如:m.01jzhl)、属性(比如:type.object.name)、值(比如:姚明 或 另一个实例的MID:m.01445t)。

<m.01jzhl>  <type.object.name>  姚明  .
<m.01jzhl>  <type.object.key> "/wikipedia/zh-cn_title/姚明"
<m.01jzhl>  <people.person.profession>  <m.01445t>  .
<m.01jzhl>  <people.person.date_of_birth> "1980-09-12"^^<http://www.w3.org/2001/XMLSchema#date> .
<m.01jzhl>  <people.person.education> <m.0n1k91v> .
<m.01jzhl>  <people.person.profession>  <m.02h664x> .
<m.01jzhl>  <people.person.nationality> <m.0d05w3>  .
<m.01jzhl>  <people.person.parents> <m.0g5bnz5> .
<m.01jzhl>  <people.person.place_of_birth>  <m.06wjf> .
<m.01jzhl>  <people.person.spouse_s>  <m.0j688yq> .
<m.01jzhl>  <people.person.parents> <m.0g5bnyy> .
<m.01jzhl>  <people.person.gender>  <m.05zppz>  .
<m.01jzhl>  <people.person.weight_kg> "141.0" .
<m.01jzhl>  <sports.pro_athlete.career_start> "1997"^^<http://www.w3.org/2001/XMLSchema#gYear>  .
<m.01jzhl>  <sports.pro_athlete.sports_played_professionally> <m.0c55c2z> .
<m.01jzhl>  <sports.pro_athlete.teams>  <m.0j_ny44> .
<m.01jzhl>  <sports.pro_athlete.teams>  <m.0j2m__w> .
<m.01jzhl>  <sports.pro_athlete.teams>  <m.0t_6b7s> .

 

应用及特性

特性

Freebase主要是从维基抽取结构化数据并发布成RDF,是完全结构化的,但数据来源不局限维基,还导入了数量众多的专业数据集,并提供数据查询和录入机制。DBpedia与Freebase类似,但DBpedia存在数据结构化程度低、数据不一致、数据质量低、数据权威性和规范性不高、对Wikipedia数据的更新存在滞后性等问题。两者的数据在08年11月通过内置OWL属性owl:sameAs进行互联,使得双方数据集关联更密切。

曾有人评价:Freebase是2007年迄今互联网上最激动人心的东西。Freebase最强大的地方就在于,它里面的元数据是可变的,具有弹性,这里的元数据包含Freebase自身平台所需的基础模型的元数据。Freebase的目标是结构化描述地球上的所有信息,难点其实不在于收集信息,而在于怎么结构化描述信息,所以Freebase通过众包模式进行信息结构化配置,才有了如此灵活可变的设计方案。我们可以借鉴,但也需要根据具体的业务场景做适当的调整。

Freebase不管模型还是实例都存储在图数据库中,优势在于灵活,劣势在于增加了图的复杂度和理解成本,所以可以发现网上有很多关于Freebase DUMP数据结构的解读,确实绕。还有一种设计方案:模型通过关系型数据库存储,实例通过图数据库存储,因为模型本身的特性和使用方式更适合于使用关系型数据库,而实例需要网状遍历、多跳查询需要使用图数据库。

应用

用户可以多角度来使用Freebase,它本身平台和数据都具备开放性,典型的应用有:

  • 数据挖掘,各领域的应用都可以直接使用freebase的数据进行分析、挖掘,比如:自然语言搜索引擎会从freebase获取答案,微软收购的Powerset发展为微软必应搜索引擎,而Powerset的很多问题答案都是从freebase中获取的;谷歌收购freebase后也是利用其海量数据提升搜索质量。
  • 数据共享和服务,可以利用freebase数据构建专业的数据集,比如电影、地区、人物、建筑、图书等等,也可以把数据应用于问答系统、语义标注等场景,freebase就是一个全网语义平台。

 

参考文献

Freebase.com语义数据库浅析

语义数据库Freebase研究

Freebase研究及应用

赵军《知识图谱》

freebase官网

上一篇:雅培推“无痛”血糖监测设备,“穿”在身上12小时即可获得检测结果


下一篇:[教程] 100个常用的linux命令 [复制链接]