2012年5月17日,Google 正式提出了知识图谱(Knowledge Graph)的概念,其初衷是为了优化搜索引擎返回的结果,增强用户搜索质量及体验。

假设我们想知道 “王健林的儿子” 是谁,百度或谷歌一下,搜索引擎会准确返回王思聪的信息,说明搜索引擎理解了用户的意图,知道我们要找 “王思聪”,而不是仅仅返回关键词为 “王健林的儿子” 的网页:

知识图谱

  • 信息是指外部的客观事实。举例:这里有一瓶水,它现在是7°。
  • 知识是对外部客观规律的归纳和总结。举例:水在零度的时候会结冰。

    “客观规律的归纳和总结” 似乎有些难以实现。Quora 上有另一种经典的解读,区分 “信息” 和 “知识” 。

定义

知识图谱,本质上,是一种揭示实体之间关系的语义网络,是一种基于图的数据结构。

是一种结构化的语义知识库,用于以符号形式描述物理世界中的概念及其相互关系。它的基本组成单位是“实体—关系—实体”三元组,以及实体及其相关属性—值对,实体间通过关系相互联结,构成网状的知识结构 。

语义网络(Semantic Network)是上个世纪五六十年代所提出的一种知识表示形式。如图:猫是一种哺乳动物;脊椎是哺乳动物的一部分。然而,语义网络由于缺少标准,其比较难应用于实践。

基础概念:

通俗定义:知识图谱就是把所有不同种类的信息连接在一起而得到的一个关系网络,因此知识图谱提供了从“关系”的角度去分析问题的能力。

  • 由节点(Point)和边(Edge)组成的网状的知识结构,也就是数据结构中的图(Graph)。
  • 每个节点表示现实世界中存在的实体Entity,每条边为实体与实体之间的关系
  • 每个节点代表的实体还存在着一些属性,比如“梅西”这个节点,可以把生日、国籍、球队等一些基本信息作为属性。
  • 知识图谱由一条条知识组成,每条知识是一个基本组成单位,表示为一个三元组:(实体,关系,实体)或者(实体,属性,属性值)
  • 可以用RDF形式化地表示这种三元关系,但RDF的缺点在于表达能力有限,无法区分类和对象,也无法定义和描述类的关系/属性。RDFS和OWL这两种技术解决了RDF表达能力有限的缺点。具体不展开了。

实体指的可以是现实世界中的事物,比如人、地名、公司、电话、动物等;关系则用来表达不同实体之间的某种联系。

由上图,可以看到实体有地名和人;大理属于云南、小明住在大理、小明和小秦是朋友,这些都是实体与实体之间的关系。

知识图谱构建的关键技术

知识图谱构建的过程中,最主要的一个步骤就是把数据从不同的数据源中抽取出来,然后按一定的规则加入到知识图谱中,这个过程我们称为知识抽取

数据源的分为两种:

  • 结构化的数据:结构化的数据是比较好处理的,难点在于处理非结构化的数据
  • 非结构化的数据:处理非结构化数据通常需要使用自然语言处理技术:实体命名识别、关系抽取、实体统一、指代消解等

上图左边的文案就是一个非结构化的文本数据,需要经过一系列的技术处理,才能转化为右边的知识图谱。

具体是怎么实现的呢,接下来一一讨论。

知识图谱的构建

实体命名识别



提取文本中的实体,并对每个实体进行分类或打标签,比如把文中“1984年12月30日”记为“时间”类型;“克利夫兰骑士”和“迈阿密热火”记为“球队”类型,这个过程就是实体命名。

知识抽取

知识抽取主要是面向开放的链接数据,通过自动化的技术抽取出可用的知识单元,知识单元主要包括实体(概念的外延)、关系以及属性3个知识要素,并以此为基础,形成一系列高质量的事实表达,为上层模式层的构建奠定基础。知识抽取有三个主要工作:

  • 实体抽取:在技术上我们更多称为 NER(named entity recognition,命名实体识别),指的是从原始语料中自动识别出命名实体。由于实体是知识图谱中的最基本元素,其抽取的完整性、准确、召回率等将直接影响到知识库的质量。因此,实体抽取是知识抽取中最为基础与关键的一步;

  • 关系抽取:目标是解决实体间语义链接的问题,早期的关系抽取主要是通过人工构造语义规则以及模板的方法识别实体关系。随后,实体间的关系模型逐渐替代了人工预定义的语法与规则



    关系抽取是把实体之间的关系抽取出来的一项技术,其中主要是根据文本中的一些关键词,如“出生”、“在”、“转会”等,我们就可以判断詹姆斯与地点俄亥俄州、与迈阿密热火等实体之间的关系。

  • 属性抽取:属性抽取主要是针对实体而言的,通过属性可形成对实体的完整勾画。由于实体的属性可以看成是实体与属性值之间的一种名称性关系,因此可以将实体属性的抽取问题转换为关系抽取问题。

实体统一



在文本中可能同一个实体会有不同的写法,比如说“LBJ”就是詹姆斯的缩写,因此“勒布朗詹姆斯”和“LBJ”指的就是同一个实体,实体统一就是处理这样问题的一项技术。

指代消解



指代消解跟实体统一类似,都是处理同一个实体的问题。比如说文本中的“他”其实指的就是“勒布朗詹姆斯”。所以指代消解要做的事情就是,找出这些代词,都指的是哪个实体。

指代消解和实体统一是知识抽取中比较难的环节。

知识图谱的存储

知识图谱主要有两种存储方式:

  • RDF:RDF一个重要的设计原则是数据的易发布以及共享,另外,RDF以三元组的方式来存储数据而且不包含属性信息。
  • 图数据库:图数据库主要把重点放在了高效的图查询和搜索上,一般以属性图为基本的表示形式,所以实体和关系可以包含属性。

RDF和图数据库的主要特点区别

RDF

  • 存储三元组
  • 标准的推理引擎
  • W3C标准
  • 易于发布数据
  • 多数为学术界场景

图数据库

  • 关系和节点可以带属性
  • 没有标准的推荐引擎
  • 图的遍历效率高
  • 事务管理
  • 基本为工业界场景

知识图谱能干什么

通用知识图谱:不太涉及行业知识及专业内容,一般是解决科普类、常识类等问题。主要应用于面向互联网的搜索、推荐、问答等业务场景。比如,搜索李小龙有几部电影,战狼2的导演是谁等。

行业知识图谱:针对某个垂直行业或细分领域的深入研究而定制的版本,主要是解决当前行业或细分领域的专业问题。一些应用如下:

  • 企业服务:比如企业最终控股人查询
  • 生活服务领域:比如美团搜索“10人聚餐,带宝宝,安静一点的餐厅”,就需要找到“有大桌”“有包间”、“有儿童椅”等标签。比如菜品构建知识体系。
  • 导航POI知识图谱:支持用户点线面导航搜索需求,支持点线面的方位、距离、包含关系等:万达广场附近的充电桩在哪,广州塔那一片有商场吗?国贸楼里有7-11吗?

反欺诈

假设银行要借钱给一个人,那要怎么判断这个人是真实用户还是欺诈的呢?



我们需要以人为核心,展开一系列的数据构建,比如说用户的基本信息、借款记录、工作信息、消费记录、行为记录、网站浏览记录等等。把这些信息整合到知识图谱中。从而整体进行预测和评分,用户欺诈行为的概率有多大。当然这个预测是需要通过机器学习,得到一个合理的模型,模型中可能会包括消费记录的权重、网站浏览记录的权重等等信息。

不一致性验证



比如说不同的两个借款人,却填写了同一个电话号码,那说明这两个人中至少有一个是可疑的了,这时就需要重点关注了。



更复杂点的,可能需要知识图谱通过一些关系去推理了。比如说“借款人”跟小明和小秦都是母子关系,按推理的话小明跟小秦应该是兄弟关系,而在知识图谱上显示的是朋友关系,就有可能有异常了,因此也需要重点关注。

客户失联管理



如果借款人失联了,通过知识图谱,是不是可以联系他的朋友,或兄弟,甚至是兄弟的妻子,去追踪失联人。

因此在失联的情况下,知识图谱可以挖掘更多失联人的联系人,从而提高催收效率。

知识推理



如上左图(注意这里的箭头方向),小秦是大秦的儿子,大秦是老秦的儿子,从这这样的关系,我们就可以推理出,小秦是老秦的孙子,这样就能使知识图谱更加完善了。



如上左图,小明在腾讯上班,小秦也在腾讯上班,从这样的关系,我们可以推理出,小明和小秦是同事关系。

推理能力其实就是机器模仿人的一种重要的能力,可以从已有的知识中发现一些隐藏的知识。当然这样的能力离不开深度学习,而随着深度学习的不断成熟,我相信知识图谱的能力也会越来越强大。

在此就介绍完了知识图谱的一些简单知识,在写这篇文章的同时,也参考了很多业界优秀大佬的文章,感谢各位大佬的无私分享。

常见图数据库

  • Neo4j:是一个流行的图形数据库,它是开源的,Neo4j基于Java实现,兼容ACID特性,也支持其他编程语言,如Ruby和Python。
  • Amazon Neptune:全托管的图数据库,支持多种图数据模型和查询语言。是一种快速、可靠、完全管理的图形数据库服务,可以轻松构建和运行与高度连接的数据集一起工作的应用程序
  • JanusGraph:分布式图数据库,支持多种后端存储和多种查询语言。其本身专注于紧凑图序列化、丰富图数据建模、高效的查询执行
  • OrientDB:多模式的NoSQL数据库,支持面向文档和面向图的数据模型和查询语言。兼具文档数据库的灵活性和图形数据库管理链接能力的可深层次扩展的文档-图形数据库管理系统。可选无模式、全模式或混合模式下。支持许多特性,诸如ACID事务、快速索引,原生和SQL查询功能。可以JSON格式导入、导出文档。若不执行昂贵的JOIN操作的话,如同关系数据库可在几毫秒内可检索数以百记的链接文档图。
  • ArangoDB:是一个基于W3c标准的为资源描述框架构建的图形数据库。它为处理链接数据和Web语义而设计,支持SPARQL、RDFS++和Prolog。多模式的NoSQL数据库,支持面向文档、键值和图的数据模型和查询语言。
  • GraphDB:是德国sones公司在.NET基础上构建的。Sones公司于2007年成立,近年来陆续进行了几轮融资。GraphDB托管在Windows Azure平台上。

知识图谱(Knowledge Graph)根本概念的更多相关文章

  1. 哈工大知识图谱(Knowledge Graph)课程概述

    一.什么是知识图谱 知识(Knowledge)可以理解为 精炼的数据,知识图谱(Knowledge Graph)即是对知识的图形化表示,本质上是一种大规模语义网络 (semantic network) ...

  2. 学习笔记之知识图谱 (Knowledge Graph)

    Knowledge Graph - Wikipedia https://en.wikipedia.org/wiki/Knowledge_Graph The Knowledge Graph is a k ...

  3. 百度大脑UNIT3.0详解之知识图谱与对话

    如今,越来越多的企业想要在电商客服.法律顾问等领域做一套包含行业知识的智能对话系统,而行业或领域知识的积累.构建.抽取等工作对于企业来说是个不小的难题,百度大脑UNIT3.0推出「我的知识」版块专门为 ...

  4. 1. 通俗易懂解释知识图谱(Knowledge Graph)

    1. 通俗易懂解释知识图谱(Knowledge Graph) 2. 知识图谱-命名实体识别(NER)详解 3. 哈工大LTP解析 1. 前言 从一开始的Google搜索,到现在的聊天机器人.大数据风控 ...

  5. Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation(知识图谱)

    知识图谱(Knowledge Graph,KG)可以理解成一个知识库,用来存储实体与实体之间的关系.知识图谱可以为机器学习算法提供更多的信息,帮助模型更好地完成任务. 在推荐算法中融入电影的知识图谱, ...

  6. TIE: A Framework for Embedding-based Incremental Temporal Knowledge Graph Completion 增量时序知识图谱补全论文解读

    论文网址:https://dl.acm.org/doi/10.1145/3404835.3462961 论文提出一种用增量学习思想做时序知识图谱补全(Temporal Knowledge Graph ...

  7. 知识图谱顶刊综述 - (2021年4月) A Survey on Knowledge Graphs: Representation, Acquisition, and Applications

    知识图谱综述(2021.4) 论文地址:A Survey on Knowledge Graphs: Representation, Acquisition, and Applications 目录 知 ...

  8. 使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink

    前言 本文由 Nebula Graph 实习生@王杰贡献. 最近 @Yener 开源了史上最大规模的中文知识图谱--OwnThink(链接:https://github.com/ownthink/Kn ...

  9. 使用图数据库 Nebula Graph 数据导入快速体验知识图谱

    本文由 Nebula Graph 实习生@王杰贡献. 最近 @Yener 开源了史上最大规模的中文知识图谱——OwnThink(链接:https://github.com/ownthink/Knowl ...

  10. Semantic Parsing(语义分析) Knowledge base(知识图谱) 对用户的问题进行语义理解 信息检索方法

    简单说一下所谓Knowledge base(知识图谱)有两条路走,一条是对用户的问题进行语义理解,一般用Semantic Parsing(语义分析),语义分析有很多种,比如有用CCG.DCS,也有用机 ...

随机推荐

  1. JavaWeb之day03js

    目录: 1.js的String对象(****) 2.js的Array对象 (****) 3.js的Date对象 (****) * 获取当前的月 0-11,想要得到准确的月 +1 * 获取星期时候,星期 ...

  2. 2022-10-15:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。 你可以按 任意顺序 返回答案。 要求时间复杂度O(N)。 输入: nums = [1,1,1

    2022-10-15:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素. 你可以按 任意顺序 返回答案. 要求时间复杂度O(N). 输入: nums = [1,1,1 ...

  3. 2020-12-22:使用MQ的缺陷有哪些?

    福哥答案2020-12-22:系统可用性降低:以前只要担心系统的问题,现在还要考虑 MQ 挂掉的问题,MQ 挂掉,所关联的系统都会无法提供服务.系统复杂性变高:要考虑消息丢失.消息重复消费.消息顺序性 ...

  4. Java 网络编程 —— 实现非阻塞式的服务器

    创建阻塞的服务器 当 ServerSocketChannel 与 SockelChannel 采用默认的阻塞模式时,为了同时处理多个客户的连接,必须使用多线程 public class EchoSer ...

  5. 在DevExpress中使用BandedGridView表格实现多行表头的处理

    在之前较早随笔中介绍过实现多行表头的处理,通过手工创建字段以及映射数据源字段属性的方式实现,有些客户反映是否可以通过代码方式更方便的创建对应的处理操作,因此本篇随笔继续探讨这个多行表头的处理的操作,使 ...

  6. python学习框架

    Python简介与安装 Python的历史与特点 Python的安装与配置 Python基础语法 变量与数据类型 运算符与表达式 控制结构(条件判断与循环) 函数与模块 错误处理与异常 Python数 ...

  7. 使用python连接阿里云iot平台时遇到的问题及解决方法(on_connect打印的rc值为9,上传物模型值)

    使用python连接阿里云iot平台时遇到的问题及解决方法                                                            on_connect打 ...

  8. #PowerBi Superchange PowerBi 序言部分笔记(2)

    Xmind本文思维导图 序言部分,主要讲述了BI的分类及发展,以及作者推荐的学习方法.重点是介绍了powerbi的主要四大步骤. 即: 一:数据采集 Data acquisition: Power B ...

  9. 聊聊 ASP.NET 6 整洁架构开发模板

    大家好,我是Edison. 最近看了一些整洁架构(CleanArchitecture)的文章,自己和同事也简单写了一个基于整洁架构的ASP.NET 6开发模板在玩.这里就仅仅抛个砖,案例主要以自己根据 ...

  10. 前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求

    前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求, 请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=132 ...