知识图谱调研-Freebase

简介: 介绍 Freebase 是一个由元数据组成的大型合作知识库,内容主要来自其社区成员的贡献。它整合了许多网上的资源,包括部分私人wiki站点中的内容。Freebase 致力于打造一个允许全球所有人(和机器)快捷访问的资源库,由美国软件公司Metaweb开发并于2007年3月公开运营。2010年7月16日被Google收购, 2014年12月16日,Google宣布将在六个月后关闭 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。

image.png

 

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

image.png

数据存储

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

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

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

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

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

数据来源

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

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

image.png

数据查询

数据权限

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官网

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
6月前
|
存储 人工智能 自然语言处理
知识图谱技术在金融领域的分析和应用
知识图谱(Knowledge Graph)是一种将实体、属性及关系等信息通过一定的数学模型进行组织、存储和检索的新型数据结构,它不仅可以实现对实体之间关系的描述,还可以完成对知识的描述。知识图谱由三元组构成:数据(Data)、实体(Entity)和关系(Relational),通过图数据库技术存储。知识图谱中的每一个实体都是一个节点,表示实体之间的关系,它描述了实体之间存在的关系和它们之间的属性。
|
1月前
|
机器学习/深度学习 人工智能 运维
怎么样把数据治理和人工智能结合起来?
将数据治理和人工智能结合起来,可以提高数据管理的效率和准确性,减少风险和成本。未来,随着人工智能技术的不断发展和应用,数据治理和人工智能的结合将会更加紧密,为企业和社会带来更多的机遇和挑战。
|
5月前
|
机器学习/深度学习 存储 人工智能
基于人工智能的个性化推荐系统研究
基于人工智能的个性化推荐系统研究
223 0
|
6月前
|
人工智能 自然语言处理 NoSQL
知识图谱在五大智能领域的应用
知识图谱,以实体-关系三元组形式组织数据,促进高效检索与分析。它支持智能搜索关联分析,智能问答的知识挖掘,智能推荐的个性化服务,以及智能预测如医疗诊断和金融风险识别。知识图谱结合悦数图数据库,加速复杂查询,提升智能应用的精度,驱动AI领域创新,塑造未来智能科技。
|
6月前
|
机器学习/深度学习 人工智能 算法
AI日报:人工智能使用和评估的关键任务
AI日报:人工智能使用和评估的关键任务
|
6月前
|
数据采集 自然语言处理 数据可视化
知识图谱数据开发是做什么的
知识图谱数据开发是通过对数据进行采集、清洗、抽取、构建等一系列操作,最终构建出一个完整的数据图谱。在这个过程中,企业需要把自身业务相关的数据通过知识图谱进行可视化呈现,然后根据不同用户对数据的不同需求进行有针对性地处理和开发。
|
6月前
|
人工智能 自然语言处理 搜索推荐
第1章 理解知识图谱:知识图谱现状、知识图谱应用场景(二)
第1章 理解知识图谱:知识图谱现状、知识图谱应用场景(二)
|
6月前
|
存储 人工智能 自然语言处理
大模型时代还需要知识图谱么?新一代知识图谱语义框架SPG赋能企业数智化转型
本文以商家经营和风险防控为例,介绍了在企业数字化中的图谱应用。结合当前产业应用和研究进展,本文梳理总结了LLM、KG 在企业数字化中的可能应用。
大模型时代还需要知识图谱么?新一代知识图谱语义框架SPG赋能企业数智化转型
|
6月前
|
自然语言处理 知识图谱
行业知识图谱是什么
行业知识图谱是一种将行业知识从业务场景抽象到计算机可读的知识结构。它是指在行业内业务领域中,对各种业务实体、概念、属性以及关系的一种结构化描述。是一种通过知识表示、推理和查询的手段,将行业知识以图形化方式表示出来。它可以被用来建立企业的知识库,解决企业中存在的信息不全、信息不一致等问题,使企业能够快速掌握新市场、新产品的相关信息,提高市场反应速度和决策能力。
|
6月前
|
存储 数据采集 自然语言处理
知识图谱企业图谱怎么做
随着人工智能技术的不断发展,知识图谱技术逐渐在各行各业得到了广泛应用,为各行业企业提供了强有力的数据分析手段。尤其是在金融、医疗、电商等领域,企业知识图谱技术可以帮助企业解决数据孤岛、信息孤岛等问题,实现数据整合与共享。