知识图谱调研-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
相关文章
|
机器学习/深度学习 数据采集 人工智能
阿里巴巴首次揭秘电商知识图谱AliCoCo!淘宝搜索原来这样玩!
电商技术进入认知智能时代,将给亿万用户带来更加智能的购物体验。经过两年的探索与实践,阿里巴巴的电商认知图谱 AliCoCo 已成体系规模,并在搜索推荐等电商核心业务场景上取得佳绩,关于 AliCoCo 的文章《AliCoCo: Alibaba E-commerce Cognitive Concept Net》也已被国际顶会 SIGMOD 接收,这是阿里巴巴首次正式揭秘领域知识图谱。 本文将通过介绍 AliCoCo 的背景、定义、底层设计、构建过程中的一些算法问题,以及在电商搜索和推荐上的广泛应用,分享 AliCoCo 从诞生到成为阿里巴巴核心电商引擎的基石这一路走来的思考。
19039 1
阿里巴巴首次揭秘电商知识图谱AliCoCo!淘宝搜索原来这样玩!
|
机器学习/深度学习 图计算 图形学
同构图、异构图、属性图、非显式图
同构图(Homogeneous Graph)、异构图(Heterogeneous Graph)、属性图(Property Graph)和非显式图(Graph Constructed from Non-relational Data)。 (1)同构图:
3082 0
同构图、异构图、属性图、非显式图
|
关系型数据库 MySQL 数据安全/隐私保护
Docker实战——MySQL的数据持久化
Docker实战——MySQL的数据持久化
3069 0
Docker实战——MySQL的数据持久化
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
GraphRAG入门指南:构建你的第一个知识图谱驱动应用
【10月更文挑战第28天】随着人工智能和机器学习技术的飞速发展,知识图谱(Knowledge Graph)逐渐成为连接数据和智能应用的重要桥梁。GraphRAG(Graph-based Retrieval-Augmented Generation)是一种结合了知识图谱和自然语言处理的技术,能够在生成文本时利用知识图谱中的结构化信息,从而提高生成质量和相关性。作为一名数据科学家和技术爱好者,我有幸深入研究并实践了GraphRAG技术,现将我的经验和心得整理成这份入门指南,希望能帮助初学者快速上手并构建自己的知识图谱驱动应用。
1216 2
|
11月前
|
机器学习/深度学习 算法 物联网
大模型进阶微调篇(一):以定制化3B模型为例,各种微调方法对比-选LoRA还是PPO,所需显存内存资源为多少?
本文介绍了两种大模型微调方法——LoRA(低秩适应)和PPO(近端策略优化)。LoRA通过引入低秩矩阵微调部分权重,适合资源受限环境,具有资源节省和训练速度快的优势,适用于监督学习和简单交互场景。PPO基于策略优化,适合需要用户交互反馈的场景,能够适应复杂反馈并动态调整策略,适用于强化学习和复杂用户交互。文章还对比了两者的资源消耗和适用数据规模,帮助读者根据具体需求选择最合适的微调策略。
3121 5
|
自然语言处理 数据挖掘 API
GraphRAG揭秘:构建层次化知识图谱的终极指南
GraphRAG揭秘:构建层次化知识图谱的终极指南
1234 0
|
存储 自然语言处理 NoSQL
Text2Cypher:大语言模型驱动的图查询生成
本文的主题是我们认为这个 LLM+ 领域最唾手可得、最容易摘取的果实,Text2Cypher:自然语言生成图查询。输入自然语言,生成相对应的图查询语句,甚至可以直接返回该语句执行结果。
708 0
|
知识图谱
4种通过LLM进行文本知识图谱的构建方法对比介绍
我们在以前的文章中已经介绍了使用大语言模型将非结构化文本转换为知识图谱。但是对于知识图谱的创建是一个很复杂的过程,比如需要对属性增加限制,创建符合特定主题/模式的图谱,并且有时文档非常大,无法作为单个提示处理,所以在切分后的提示中创建的图谱需要前后一致。
726 0
|
存储 缓存 并行计算
Transformers 4.37 中文文档(九十九)(8)
Transformers 4.37 中文文档(九十九)
377 0
|
存储 人工智能 自然语言处理
机器学习系列 | 04: 知识图谱发展历程及其分类
本文简要梳理知识图谱的前世今生及其分类