本文来自公众号 PlantData 知识图谱实战(ID:KGPlantData), 内容整理自胡芳槐博士 6 月 9 日北理工知识图谱实战学习活动上分享的知识图谱应用关键技术及行业应用.
今天我要分享的主题是知识图谱应用关键技术及我们在行业应用中的一些探索, 其实刚刚漆老师已经给我们分享了一个非常有趣的知识图谱应用, 就是佛学.
那么刚刚提到的佛学考试, 可能现在确实不多, 但是最近大家应该能够看到, 在我们的朋友圈中有一些高考机器人的文章被刷屏, 也就是有很多的学霸被这些机器人所代替了, 其实他们后面很大程度的用了知识图谱相关的技术.
今天我的分享分为两个部分:
第一个就是对知识图谱及知识图谱应用的技术做一个分享;
然后是对我们应用知识图谱在企业大数据方面的一些探索.
首先我们按照惯例, 看一下什么是知识图谱, 我这里引用的是语义网之父的一句话: 语义网它是一个面向数据的互联网, 从某种含义上来说, 它其实就是一个全局的数据库.
什么是一个面向数据的互联网?
我们都知道, 现在我们看到的网站, 可以说是面向文档和网页的一个互联网, 在这个互联网中间, 它的主要信息是通过网页来表达的, 网页方便之处是易于被人类所理解, 所以平时我们查阅信息还是比较方便的, 但是它有一个缺点, 就是语义信息不足, 所以机器理解起来比较困难, 现在我们的互联网正在转变, 它在转变成为一种面向数据的互联网, 在这种互联网里面, 它的信息和数据是可以被机器理解的.
我们看一下什么是面向数据的互联网, 现在我们的互联网中间, 它不应该只是一个个的网页, 它应该更多的是一个个的事物, 或者说是一个个的实体, 就像我们这个图中间看到的, 互联网里面包含的更多的是对这些具体事物的描述. 这张图里面包含了建筑, 糖果, 化学物, 还有艺术作品等.
这就是面向数据的互联网中具体的事物, 这些事物本身并不是孤立的, 它们相互关联, 这就构成了这些事物之间的各种各样的关联关系, 这可以说是面向数据的互联网的本质: 首先有各种各样的事物, 然后是这些事物之间的关联关系.
我们再来看一下, 为什么会出现面向数据的互联网这样一个概念, 从 07 年左右开始, 我们可以看到, 开放链接数据越来越多, 这个图从 07 年到现在, 正好是 10 年左右的时间, 我们可以看到它的发展是非常快的, 这个网络在不断的增加. 这些数据相对来说都是结构化附有语义的, 是一个个具体的事物.
在这一背景下面, Google 在 12 年的时候, 提出了 "知识图谱" 的概念, 刚刚漆老师提到, Google 主要用它来构建下一代的搜索引擎, Google 提出知识图谱的时候, 用了这么一个短句:
Things, not strings!
也就是说, 在互联网中它不是一个个字符串, 而是一个个真实存在的事物, 事物之间还有相应的关联关系, 右下角图我们可以看到, 里面有人物, 并且还有他们之间的关联.
什么是知识图谱?
其实定义是非常多的, 我这里提供一个我们自己的理解: 知识图谱主要的目标是用来描述真实世界中间存在的各种实体和概念, 以及它们之间的关联关系.
我们最开始的时候也提到了, 它是一个全局的数据库, 在这个全局的数据库中间, 更多的希望它所有的事物都有一个全局唯一确定的 ID, 就像网页一样, 每个网页都有一个唯一的 url 来标识, 对每个实体和概念, 我们也同样的用这么一个 ID 去描述, 称之为标识符.
同时对于这些实体, 它们的属性, 我们就用 "属性 - 值对" 来刻画它的内在特性, 比如说我们的人物, 他有年龄, 身高, 体重属性; 同时我们还用关系来描述两个实体之间的关联.
下面这两个图, 就体现了事物和它们之间的关系.
知识图谱的概念还是比较明确的, 但是有很多朋友还是会存在疑问.
知识图谱和本体到底有什么关系?
知识图谱并不是一个全新的东西, 而是在以前的技术或理论上面, 进行的一个重新的定义, 引入了一个新的概念.
知识图谱本身不是本体的一个替代品, 是在本体的基础上面做了一个丰富和扩充, 这种扩充主要体现在实体层面.
本体中突出的主要是概念和概念之间的关联关系, 而知识图谱描述的主要是实体, 对这些实体我们通常还会去描述它更加丰富的信息.
用一句简单的话来说就是: 本体描述了知识图谱的数据模式, 本体的动态的特性赋予了知识图谱动态数据模式支持的能力.
这一特性很重要, 会用在我们很多的地方, 比如说我们在 Linked Open Data 里面就用到了这种理念, 同时我们提到了在后面企业大数据的应用里面, 其实也会用到这个特性, 它可以支持数据动态变迁的能力.
知识图谱有哪些用途?
我们这里列举了一些, 主要是人工智能相关的, 因为现在人工智能非常火爆.
第一个就是用来搜索, 这也是 Google 提出知识图谱的初衷;
第二个就是聊天机器人, 我相信在坐的各位或多或少都有用过, 比如说微软的小冰, 王昊奋老师公司的公子小白;
第三个就是用来做问答, 有一个贡献非常大的, 就是 IBM Watson, 这在业内非常有名;
然后现在还有很多私人的助理, 比如说我们苹果手机里的 Siri, 还有微软的小娜, 百度的度秘;
同时我们还有很多的穿戴设备, 它里面也用到了知识图谱相关的技术, 比如 iWatch 里面就用了;
最后一个就是我们出行的助手, 国内做的非常好的 "出门问问", 它也是用了相关的技术.
以上是对知识图谱用途的一个简单的介绍.
接下来我们来看知识图谱的第一个应用, 也就是知识图谱提出的初衷 -- 用来改善搜索.
如果我们现在去 Google 搜北京理工大学的时候, 我们可以看到右边有一个知识卡片, 它里面包含了北理工的很多基本介绍, 同时还有一些基本的属性, 这是知识图谱用在搜索里面给我们带来的第一个变化;
如果我们再用百度试一下, 很多人搜的时候可能会想, 如果要考北京理工大学, 大概要多少分, 正好这两天也是高考的时间, 现在我们搜的时候可以看到, 在不同的区域, 它会根据你的定位, 自动把北理工在当前省份去年, 前年和前几年的一个分数展示出来, 同时我们也可以看到一个地图, 地图的作用是告诉你北理工在什么地方.
通过知识图谱, 我们在搜索引擎里面可以看到丰富的结果, 在右边我们可以看到和北理工相关的高校, 以及和北理工相关的其他一些事物, 这就是知识图谱给我们带来的搜索的改变.
同时我们还可以看到, 在搜索结果里面, 不仅仅是一些结构化的信息, 它还有很多关联的关系.
比如我们去搜 SuperCell 这家公司, 这是一个游戏公司, 我们可以看到它的很多相关联信息, 比如 CEO, 母公司, 创建地址, 它是被腾讯收购的一家创建于荷兰的公司.
除了在搜索引擎里面, 在社交网络中也用到了知识图谱, 如果用过 Facebook, 它就用了知识图谱的技术去链接里面的人物, 地点和事件, 正如我们举的两个例子: 如果去搜喜欢哈佛大学的人, 它可以直接给你答案; 第二个例子, 搜去过哈佛大学的人, 它同样可以给你答案;
这就是在社交网络里面的应用.
再看另外一个例子, 这个例子更加复杂.
如果你去搜喜欢哈佛大学, 喜欢篮球并且在 Facebook 工作的人, 这其实是一个比较复杂的搜索, 或者我们可以把它看作一个问答, 这也是知识图谱能够给我们带来的改变, 也就是你搜的时候直接能够给你答案.
以上是在通用知识图谱或者社交网络中有这些应用, 在行业中也有类似的使用知识图谱技术的产品.
比如金融领域的问财, 如果在里面搜 "万科 A", 它就会很明确的告诉你, 搜索的是一个股票, 股票最关注的就是它最近的波动, 问财会自动的把万科 A 最近股价波动的曲线给展示出来, 同时还会告诉你万科 A 是房地产行业的, 并且在右下方推荐房地产相关行业的公司.
这是知识图谱在行业里面的一些应用.
我们也做了一些探索, 在创投知识图谱, 也就是对一些初创企业的投资信息. 比如 "嘀嘀打车", 它的公司名叫 "北京小桔科技有限公司", 我们去搜的时候, 就会去猜测用户最关心什么?
第一个关心的应该是它的融资事件和历史, 我们会用一个时序的图把融资的历史给体现出来; 同时对一家初创企业, 我们还会关心它的创始人, 创始人有哪些, 背景如何? 我们会一并展示出来; 同时还有一些相关的热点事件新闻, 这些都是知识图谱在搜索里面给我们带来的一些变化.
搜索如果往后再延伸一步的话, 就是问答, 我们再来看知识图谱下一个应用场景:
自动问答
自动问答目前也是一个非常热门的方向, 这可能是面向应用最直接的方式, 目前不管是学术界还是工业界都在做相关的研究, 这里有两个例子, 左边是百度的度秘, 右边是苹果的 Siri, 可以看到自然语言问答的结果.
现在还有一个比较火的领域就是儿童机器人, 这是王昊奋老师上期 PPT 分享中的一个图, 我们可以看到聊天机器人从 10 年的时候开始流行, 一直到现在已经出现了很多具有代表性的产品, 其中包含 Siri, 小冰, IBM Watson, 公子小白等.
什么是智能问答?
智能问答是指用户以自然语言提问的形式提出信息查询需求, 系统依据对问题的分析, 从各种数据资源中自动找出准确的答案.
这就是自动问答要做的事情, 它的应用可以分为以下几类:
第一就是情感聊天, 典型应用是微软小冰, 公子小白;
然后是做私人秘书和个人助理, 典型代表就是度秘和 Google Allo;
还有作为领域知识的问答, 比如 IBM Watson, 在医疗以及很多其他的领域都有相应的应用;
还有很多企业用来做智能客服, 因为客服可能是一个比较枯燥的工作, 利用智能客服来代替他们的工作可以省掉很多的人力成本.
我们对知识图谱问答做一个分类可以分为:
开放领域自动问答,
特定领域的自动问答,
常用问题集自动问答, 我们称为 FAQ.
FAQ 在很多场景下面已经达到了很好的效果, 但是客观的评价, 在开放领域的自动问答还处于一个比较初级的阶段, 所以现在更多成功的用例是在特定领域里面, 特定领域里面我们一般是基于行业去做, 以上是智能问答的一个分类.
智能问答依赖于一些关键的基础及技术, 一般需要大量高质量的数据和知识库, 这就是我们今天分享的话题, 知识图谱; 同时还依赖于强大的 NLP 技术的支撑, 需要 NLP 技术对问题进行解析; 同时如果拥有大规模训练语料的话就更加好了, 因为现在深度学习是一种趋势.
如果你有大规模语料, 尤其是问答对的话, 就可以利用深度学习去提供这种端到端的智能问答.
接下来描绘一下自动问答的基本过程.
从用户输入开始, 我们的输入是自然语言, 输入进去以后, 第一步会对你的问题进行解析;
解析完以后就会去理解你的真实意图, 去猜测你要查的到底是什么东西;
然后根据对你意图的理解, 去查询和检索;
最后是对查询和检索的结果做一个候选答案的生成和排序;
最终再通过一些排序的算法进行最终结果的输出.
智能问答现在的方法主要有这么几类:
第一个是基于信息检索的方法,
第二个是基于语义分析的方法,
第三个是基于规则的专家系统方法,
然后是现在研究的比较火的一个基于深度学习的方法.
接下来对几种方法做一个介绍.
基于信息检索的方法
这个方法更多的还是和传统的检索技术非常相似, 首先利用分词, 命名实体识别等相关 NLP 工具去对问句进行解析, 得到中间的关键词, 进一步得到实体, 得到这些关键词和实体之后, 再去资源库里进行检索.
它有个缺点, 如果我们做过检索, 或者在百度或 Google 中检索过就会发现一个问题, 它要求你的答案必须至少包含问句中的一个字或词, 所以查全率方面相对会比较低.
如果有了知识图谱以后我们就可以进行改进, 可以基于知识图谱对它进行语义的扩充, 当对问句进行分词, 命名实体识别之后, 可以从知识图谱里面去找其它的同义词, 或者实体其它的称呼, 就可以对其进行语义的扩充, 去提高它的匹配率.
同时我们做搜索的朋友应该都会遇到一个问题就是消岐的问题, 也就是同一个词或字符串, 它代表不同的含义. 我们经常的举的一个例子, 就是 "苹果", 它可能代表很多东西, 可以代表水果, 也可以是代表苹果公司, 也可以代表苹果公司的一些产品, 如果通过关键字检索的话, 那么很难对这些结果进行语义上的区分, 所以有了知识图谱之后, 就可以从实体的角度去理解.
基于语义分析的方法
这个方法非常直观, 它和人的理解非常相似, 就是把自然语言的一个问句, 按照特定的语法或语言的规则去进行解析, 形成一个语义的表达式, 得到这个表达式以后, 用这个表达式可以明确的去描绘你的意图, 然后就可以非常方便的转换成为一种查询语言, 这种查询语言可以是数据库的查询语言, 也可以是其它的查询语言. 这取决于你的数据, 你的查询目标是放在什么地方.
常用的方法就是利用组合范畴语法 (CCG) 的方式, 这种语法最核心的就是词汇, 首先我们还是离不开自然语言处理去做映射得到词汇, 然后再用语法的规则把这些词汇进行语义上的组合, 最终得到语义表达式.
这里面是有一个难点的, 也就是中文的自然语言分析尤其是语义分析的准确率, 很难达到工业可用的级别, 一般通常还是在 50% 以内, 所以这是语义分析方法很难的一个问题, 所以如果我们是面向通用的问答去做, 它的准确率比较低, 因此通用领域的智能问答还处于一个比较初级的阶段.
怎么去改进? 同样可以利用知识图谱. 但是通用的知识图谱的质量并不能保证, 所以它很难在通用的领域利用知识图谱去做很大的改善, 所以通常在做的时候, 包括我们自己在探索的时候, 会在特定的领域里去做. 我们会基于知识图谱里面的实体, 属性, 概念去对问题里面的词或实体进行解析和映射, 然后再基于图结构做一个语法规则的匹配, 这就相当于是图里面的子图查询匹配问题, 通过这种方式, 我们就可以把语义解析的范围范畴进行限定, 限定范围以后, 因为里面知识足够多, 并且在领域里面, 我们通常还是可以构建相对可靠的知识图谱, 从而可以得到正确率比较高的解析, 最后再去进行检索, 就可以大大改善自动问答的准确率.
基于规则的专家系统方法
第三种方法可以说是比较无脑的, 也就是上世纪 80 年代用的比较多的.
这种方法它的好处非常明显, 如果你命中的话准确率非常高, 基本上可以达到 100%, 但他的缺陷也很明显, 如果你的问题或应用的领域比较多的话, 那么它肯定是不能支持的, 因为专家系统的范围一般比较窄, 并且其可扩展性, 可复用性也是比较差的, 如果要构建一个专家系统, 需要花费很大的精力, 这种方式也通常不可复制.
所以缺点就是通用性比较差, 不能覆盖很多应用场景.
基于深度学习的方法
这种最近几年非常热的. 深度学习, 尤其是 Alpha Go 出来以后, 把它推向了一个高峰. 近几年卷积神经网络, 循环神经网络这种相关的技术在 NLP 领域也得到了比较好的应用, 并取得了比较好的成果. 它主要用来做语言的表示, 语言表示就可以扩展到问答里面, 就是前面的每一个关键任务, 比如在做语言的语义解析的时候, 在做问题和答案的匹配, 生成的时候, 都可以用到. 简单来说就是对用户的输入进行解析, 对答案检索查询环节进行优化, 这是目前用的较多的一种方法.
还有一种使用的方式, 就是前面提到的使用深度学习去训练端到端的自动问答, 把问题和答案均使用复杂的特征向量进行描述, 然后用深度学习来计算问题和答案之间的相似度, 最终给出答案. 要实现端到端的自动问答, 有一个前提就是需要有大规模的语料.
这是自动问答的四种方法, 知识图谱在所有的方法里面都是有用的, 我们概括一下, 知识图谱可以算是自动问答里面的大脑:
它可以辅助去做用户输入的解析, 进行语义的扩展;
它可以辅助你去理解用户的意图, 从 "字符串" 到 "实体", 也就是到实体级别的去理解;
然后再去进行知识的推理, 知识推理之后你不仅可以得到表面的知识, 而且可以得到深度的知识;
然后它还可以辅助去做答案的生成.
知识推理可以说是问答系统提高 "智力" 的一个核心环节, 怎么去提高的, 等会我们会介绍知识推理相关的一些技术.
这是我们在智能问答里面的一些探索, 可以说是基于语义解析的一种自动问答, 我们主要还是应用在行业里面, 从用户输入开始, 我们会基于知识图谱对概念, 实体, 属性以及一些相关的运算符, 进行分词匹配, 然后把它与知识图谱里面的元素进行映射; 接下来一步就是做语义的解析和验证, 知识图谱的结构性特别强, 所以我们在做语义理解解析的时候, 可以用知识图谱这种图结构去辅助进行理解.
在语义解析和验证这个环节里面, 我们应用了知识图谱的结构, 比如说实体和属性的链接, 实体和实体之间的链接, 都是代表语义上面的一些含义.
做完语义解析以后, 接下来就是做查询的转换, 知识图谱是存在相应的图存储里面, 对其做相应的查询转换非常方便; 最后再去数据的资源里面去进行查询, 最终返回结果.
右边是我们在海洋知识图谱里面做的一个应用的案例, 这个例子是我们在查最大的三种鱼, 首先我们对问题进行实体的解析, 其次再去进行语义的解析, 然后再去进行查询, 最终给出答案.
以上我们自己在基于语义解析的自动问答系统里面做的一些探索.
刚刚把知识图谱最常用的两个应用场景做了一个简单的描述: 一个是搜索, 一个是自动问答.
接下来我们对知识图谱应用相关的一些技术做一个描述.
知识图谱的应用技术今天主要分享三类:
图挖掘和图计算;
可视化;
知识推理.
知识图谱之上的图挖掘和计算
有这么一些算法:
第一个是图遍历, 知识图谱构建完之后可以理解为是一张很大的图, 怎么去查询遍历这个图, 要根据图的特点和应用的场景进行遍历;
第二个就是图里面经典的算法, 最短路径;
第三个是路径的探寻, 即给定两个实体或多个实体去发现他们之间的关系;
第四个是权威节点的分析, 这在社交网络分析中用的比较多;
第五个是族群分析;
第六个是相似节点的发现.
图的遍历
图的遍历大家都知道有两种方法, 一个是广度优先遍历, 一个是深度优先遍历, 这个我们就不详细去说了. 这里举了一个例子, 对于下面这个图, 分别用广度优先遍历和深度优先遍历查询的结果.
最短路径
最短路径分为几个场景, 第一个是单源最短路径, 简单的解释下就是从一个点出发, 去求它到其他所有节点的最短路径.
Dijkstra 是图论里经典的算法, 算法虽然比较经典, 但是在现实中间应该说应用场景是比较少的, 比如在社交网络里面, 我们很少去求一个人到其他所有人的最短路径, 这个应用的含义不大.
第二个就是每对节点之间的最短路径, 这同样也有一个非常经典的 Floyd 算法, 这个应用场景也比较少, 社交网络中间也很少查任意两个人之间的最短路径.
我们举一个最常见的应用场景, 也就是给出两个节点, 找他们之间的最短路径, 这个应用场景就比较多了, 在社交网络中两个人, 你可能要计算通过几步他们之间会有关联.
在我们的应用场景中间也非常多, 比如说在我们的企业知识图谱里面, 给定两个公司, 要去查他们之间到底有没有关系? 几步里面有关系? 这就是一个典型的应用场景.
路径探寻
刚刚我们把这个图用来做最短路径, 还可以给定两个节点, 去看他们之间不仅仅是最短路径, 可以查两个企业之间 5 步以内到底有哪些关系, 这就是路径探寻算法, 也就是给定两个或多个节点, 探寻它们特定步骤里面到底有多少关系, 有哪些路径.
这是两个节点, 多个节点也是同样的, 比如说在我们的创投知识图谱里面, 我们去查腾讯, 百度, 阿里共同投资了哪些公司, 这就可以把它转换成一个路径探寻的算法, 也就是给定这三个公司, 我们去看看特定的步骤里面, 它们有哪些路径关系, 不管是直接投资还是间接投资, 到底有哪些共同的投资.
权威节点的分析
先看应用场景, 做过社交网络分析的人应该都知道, 里面有个很常见的应用场景就是社交网络里的权威人物分析, 也就是在社交网络里面哪些人是比较有权威的, 有权威并不代表说他粉丝多就有权威, 可能有些人, 他在特定的领域里面有权威.
定义一下, 在知识图谱的网络中间, 怎么去分析节点的权威度, 找到里面的权威节点, 这里面算法就比较多, 经典的算法就是我们搜索里面的 Page Rank, 它简单的说就是用一种相互投票的机制, 最后去决定每个节点的权威度.
还有一种是基于节点的属性以及节点之间关系的一种多特征方法, 知识图谱对每个节点既有自己的属性, 同时还有和其他节点之间的关联, 我们可以把节点属性和关系结合起来, 形成一种多特征的评估方法.
在创投领域知识图谱里面, 一个应用场景就是去找到里面的权威投资机构, 同时还会去找到哪些是有潜力的创新独角兽公司.
族群的发现算法
还是先看应用场景, 在社交网络中, 我们不仅仅是对个人感兴趣, 还会想知道在网络中, 有哪些小的群体.
在社交网络中存在一些主题的社区, 存在对特定领域感兴趣的群体, 就像我们大家对知识图谱感兴趣一样, 我们要在社交网络中找到对知识图谱感兴趣的这些人物, 这就是族群发现算法的一个应用场景.
简单描述一下, 它就是从知识图谱的网络中间发现在一个或者多个角度相似节点的族群, 做法也比较多, 这里我们列出两个算法, 第一个是图里面经典的最大流算法, 还有一个和刚刚在计算权威节点时使用的方法类似, 就是基于节点的属性和节点之间的关系形成多特征去进行聚类, 从而找到里面的群体.
在企业知识图谱里面, 我们可以去找到全国几千万企业里面的阿里系, 腾讯系, 也就是哪些是阿里投资的, 阿里感兴趣的一些公司.
相似节点的发现算法
我们在做企业知识图谱的时候, 比如一家企业他已经有一些客户了, 他可能还希望找到相似的客户, 那么我们就可以去找到和他现有客户相似的一些客户, 这就是相似节点发现的一个应用场景.
从海量的知识图谱中间去寻找和已知节点相似的节点, 方法有三种:
第一个就是基于节点的属性去查, 比如说对于企业, 就可以根据企业产品的领域去找;
我们还可以根据节点间的关系去计算, 因为关系代表了一定的特征, 所以我们可以通过这种关系, 比如说两个节点之间的关系图非常相似, 那么也代表一定程度的相似;
还可以用混合的方式, 把节点的属性和节点的关系一起去使用.
我们做的一个应用场景, 就是在专利知识图谱里面去寻找相似的专利.
知识图谱的可视化
可视化应该说很好理解, 这里我引用了维基百科里的定义: 可视化是利用计算机图形学和图像处理的相关技术, 将数据知识和信息变成图形或图像在屏幕上展示, 同时还有一个概念就是要和用户进行交互.
它里面包含了两层含义, 第一个就是要转化成图像, 第二个就是交互, 这个含义到现在说已经有点过时了, 现在不仅仅是计算机, 很多其他移动化的设备都有可视化的需求.
可视化我们看下它的三大功能:
第一个是做信息的记录, 它不仅仅是做信息的呈现, 也可以做信息的记录;
同时它支持对信息的推理和分析, 如果我们把可视化做的好, 可以从数据的可视化里面找到很多关系规律, 从而进行一定的推理和分析;
最后可以做信息的传播和协同, 这是知识图谱可视化的定义和功能.
我们知道有一个模型, 叫 DIKW, 也就是数据, 信息, 知识, 再到智慧. 这个模型我们应该非常熟悉, 从底层的数据开始进行一定的提炼, 形成信息, 然后再进行抽取形成知识, 在知识上面可以做很多的应用, 比如说推理, 比如说现在的人工智能, 这就是智慧.
定义到可视化里面, 我们也可以这样去分类, 从数据的可视化, 到信息的可视化, 再到知识的可视化, 当然最后面是智慧的可视化, 这个就更加抽象, 更加困难, 这个我们今天就不去表述.
先看数据可视化, 有哪些类型的数据, 第一个就是记录型的数据, 使用过关系型数据库就会很清楚, 里面有很多记录型的数据; 然后还有关系型的数据, 就像我们的知识图谱, 它是一种关系密集型的数据; 然后还有时态数据, 空间数据.
什么是数据可视化, 这个定义比较理论化, 对于数据可视化不用我们去进行解释, 大家应该都知道, 就是把数据里面的一些信息, 含义, 怎么去用一种形式去进行抽象, 提取, 形成信息然后用相应的属性, 变量去进行描绘, 这是数据可视化.
数据可视化里面有很多理论的研究和技术, 今天由于时间关系, 我不去详细的介绍, 大家感兴趣的话可以去看浙大陈为教授的数据可视化, 对整个可视化做了非常详细的剖析.
然后是信息的可视化和知识的可视化, 应该说信息和知识的可视化在一定程度上很难去进行直接的区分, 因为信息和知识没有严格的界限. 信息可视化是研究大规模非数值信息资源的呈现, 这里面主要的目标就是帮助人去理解和分析数据.
知识可视化主要用来传达和表示复杂知识的图像, 用图像图形的手段去表达, 其主要目标是用来做知识的传输和传递, 帮助其他人去正确的重构, 记忆和应用知识.
接下来我们看一下在做知识可视化的时候有哪些常见的形式, 我这里列出来的只是一部分, 比如说在知识图谱里面我们有概念和概念的层次, 一种直观的方式就是用概念的层次图去进行知识的可视化, 第二种就是用思维导图的形式, 同时我们还可以去做认知的地图, 最后可以用语义网络的方式, 知识图谱就是用这种原生态的语义网络形式进行描述的.
接下来我们看几个简单的例子, 首先在知识图谱可视化里面常用的缩放和钻取, 因为我们知识图谱是非常大的, 就像我们刚刚的视频, 最开始的时候我们看到里面有非常多的节点, 怎么去定位到里面我们需要的节点, 就可以用知识的缩放和钻取去找到我们关注的节点.
第二个可以通过不同的视图去描述, 比如说左边概念树的形式, 树形结构描述也是非常常用的方式, 这种方式非常简单直观; 右边我们还列出了一些其他的方式, 比如车轮图等.
还有很多其他的视图, 比如说上方环状的图, 词云图, 以及左下角的气泡图等, 这些都是知识图谱可视化的一些示例.
对于可视化还有很多的工作要做, 知识图谱的应用, 是要把知识图谱传递出去, 可视化是一个非常直观的手段, 所以里面有非常多值得研究的地方.
知识图谱中的推理
由于知识图谱和本体关系非常密切, 所以里面最重要的就是基于本体的知识推理, 即知识图谱核心知识内容部分的推理.
然后因为知识图谱在大数据应用里面用的非常多, 我们可以做知识图谱大数据预测分析与关联挖掘, 也就是围绕知识图谱组织的大数据, 怎么去做预测分析和关联挖掘.
这是知识图谱推理两个主要的方面.
知识图谱里本体的推理
本体推理主要有两大目标, 第一个就是找到知识图谱里面隐含的知识, 因为我们不管是在构建知识图谱还是在构建本体的时候, 一般都会有一个原则, 就是用比较简单的机制去描述尽可能多的信息, 有些东西可能就直接隐含在里面了, 这些隐含的信息就必须用知识推理的方式把它表达出来.
还有一个就是在知识图谱构建的时候经常用到的, 做不一致性检测. 不管是手动构建, 还是自动构建知识图谱, 都会碰到一个问题, 或者你的数据来源不同, 或者你的构建的人员不同, 方法不同, 就会不可避免的导致一些冲突, 这些冲突自身很难直观的去发现, 但是可以利用知识图谱里面的不一致性检测去发现存在的有矛盾的, 有冲突的知识.
这是基于本体的知识推理的两大目的.
OWL 推理的方法有以下几类:
第一个就是基于表运算的方法,
第二个是基于一阶逻辑转换的方法,
然后是本体推断的方法,
一阶查询重写的方法,
以及 Datalog 的方法.
今天着重讲的是用于知识图谱里面组织大数据做分析, 怎么去做规律发现, 怎么做预测.
我们都知道知识图谱在大数据的组织方面有很多的应用场景, 这也是我们下半场要重点讲的一个主题.
现在大数据我们用它来做什么? 第一个是我们用来做决策或辅助决策, 有时是用即时数据, 有时候用统计方法, 同时也可以在数据中归纳一些新的数据模型, 还可以从数据里面得到新的知识.
大数据预测
预测可以说是大数据的核心价值, 可能经常会听说要用大数据去做股市的预测, 去做疾病的预测, 去做消费行为的预测, 这些都是大数据核心应用的价值. 即从已经发生的过去慢慢转变到面向即将发生的未来.
从过去到预测未来, 本身是有个逻辑基础的, 我们认为它带有一定的推理的含义, 即事物在变化之前一定有征兆, 突变是很少的, 所以所有的事情都是有迹可循的, 如果找到了这种征兆规律, 你就可以去进行预测, 这是大数据进行逻辑预测的一个基础.
预测通常是用一个预测模型, 预测模型主要需要基于历史的数据, 历史的数据决定未来事情发生的一个概率, 因为大数据做预测的时候, 一般不会去说我直接给你一个确定的答案, 因为未知的世界都是带有一定的可变性的, 所以大数据在做预测的时候, 通常给你一个事情发生的概率.
关联规则的挖掘
就是去找事物和事物时间的关联关系, 做数据挖掘的朋友应该都听说过啤酒和尿布的故事, 这就是一个非常典型的关联规则挖掘的场景. 要做关联规则的挖掘, 通常需要经历两个阶段.
第一个就是从大数据的集合里面找到所有高频的关联项目组, 然后再由这些高频的项目组通过一些算法去进行过滤分析, 最终找到关联规则, 这是做关联规则最重要的两个阶段.
在做关联规则挖掘的时候, 有四个关键的指标, 第一个是可信度, 第二个是支持度, 第三个是期望可信度, 然后是作用度.
把这两个推理总结起来: 知识图谱其实回答了 "为什么", 它可以告诉你明确的原因, 并且给出来的一般都是比较肯定的答案, 可以让你了解世界运作方式背后的深层原因; 大数据更多的回答 "是什么", 但是它很难告诉你为什么会是这样? 所以它主要强调的是现象之间的联系, 从而解决现实中的问题.
有没有办法把它们结合起来: 首先通过大数据去发现是什么, 然后利用知识图谱知识推理方式去寻找背后真实的原因, 这就是现在用的比较多的一个智能决策系统.
在这种智能决策系统里面, 其实把大数据的预测和挖掘, 以及知识图谱支持的推理结合起来, 同时还把数据分析的一些模型也结合起来.
我们看图下方的模型库, 知识库和数据库, 把它们结合起来.
对于数据库利用数据库管理系统, 数据仓库, 数据挖掘系统; 对于知识库, 利用知识库管理系统及相应的推理机; 对于模型库, 用相应的模型库管理系统, 模型计算.
从用户的角度, 需要对三种机制的结果进行统一, 最终把统一的结果返回给用户, 形成一个基于大数据挖掘和知识推理的智能决策系统.
这张图是一个基本的架构.
下半场主要讲知识图谱用来做大数据的分析和挖掘, 也就是现在企业面临的大数据背景下面怎么去使用知识图谱技术, 帮助他们做数据的分析, 融合以及决策.
下面这张图是上次分享过的一张图, 从数据库时代到大数据时代, 当时我们借鉴了一个非常形象的比喻, 池塘捕鱼到大海捕鱼.
在数据库时代, 从数据规模的角度来说相对是比较小的, 在 GB 的级别; 在大数据时代, 很多企业数据已经超过了 TB, 甚至有些达到了 ZB 的级别. 这是从数据规模的角度来说, 大数据时代与传统的数据库时代的一个典型的区别.
从数据类型的角度来看, 以前主要以结构化的数据为主, 数据通常是存在关系数据库里面的, 这些数据通常是结构化的, 但在大数据时代, 我们会看到它的数据类型会非常多, 不仅仅有结构化的数据, 还有半结构化的, 甚至非结构化的数据, 并且还有个趋势, 后两者越来越多.
再从数据模式的角度来看, 以前在传统的数据库时代, 我们通常是先构建关系数据库的数据模式, 然后再去存储数据, 查询, 使用数据, 这要求你对自己的数据有非常好的把握, 数据模式要先固定, 之后也不要有太多的变化, 做关系数据库应用的朋友知道, 如果关系数据库要变动, 对系统带来的变化后果, 有时候甚至是灾难性的; 在大数据时代, 数据大部分都是未知的, 对于数据的数量, 形态, 作用都在不断探索, 数据的模式通常都是在数据出现以后才能去确定, 数据模式也是随着数据增长在不断演变的.
最后从数据处理的方式来看, 以前通过一种方式或者一种工具就可以去解决大部分所有的问题, 但大数据时代很难用一种通用的工具方法去解决所有的问题, 不管是数据的存储, 数据分析的算法还是从应用的角度, 都是多种多样的, 在不同的应用场景下面, 需要不同的技术方法.
在大数据的背景下面, 企业如果要应用这些大数据, 通常会有哪些挑战?
第一个就是多源异构的数据很难融合, 企业包括不仅内部的数据, 还有从第三方接入的数据以及互联网公开数据, 甚至是采购的数据. 这些数据很多, 可能描述同一个事物有很多的数据源, 它们分散在不同的地方, 怎么去把它们融合起来? 这里举了一个人物的例子, 他在企业内部不同的系统里面, 互联网里面都有他的信息, 怎么去进行融合这是我们企业在面向大数据的时候会碰到的第一个挑战.
第二个挑战, 大数据时代, 数据模式在不断变化的场景下, 需要有一种可自有扩展的数据模式, 细心的朋友已经听到, 知识图谱是基于本体来构建的, 所以本体的动态特性, 就赋予了知识图谱支持大数据动态变化的能力.
第三个挑战就是非结构化和半结构化数据如何理解使用, 非结构化的数据简单来说就是文本, 对于文本数据如何处理, 传统的方式依赖于 NLP 的方式, 但是 NLP 本身的效果还未达到工业可用的级别, 怎么对非结构化的数据去进行应用?
第四个, 传统数据在使用的时候需要专业的程序员去编写程序去进行查询使用, 普通的应用分析人员很难对数据去进行探索, 我们要有一种快速的方式去对数据进行探索和使用.
第五个挑战, 在传统的数据库时代, 构建的不同系统使用方式不一样, 数据集成的时候会非常混乱, 我们更多的期待这些分散的数据如何把它们融合起来, 形成一个统一的消费利用的入口, 工作人员可以从统一的入口进行数据的消费.
接下来看下知识图谱如何解决以上五个问题. 下图是我们做的探索, 知识图谱如何助力数据分析实现商业智能:
从最底层开始, 知识图谱需要对非结构化的数据进行处理, 抽取信息形成结构化的知识;
第二个是数据动态的融合, 多源异构的数据利用知识图谱动态扩充变迁的能力, 等到数据来了以后再去定义数据的属性, 数据之间的关联, 同时从底层存储的角度来说, 需要有一种能够适应数据模式动态变迁的存储机制, 这个我们上次活动做了一个深度的分析, 提供了一种可自由扩展模式的存储机制;
其次我们提供一种自动检索, 自动问答的方式, 通过自然语言和其他非常简单的交互形式, 对数据进行使用, 这也是使用知识图谱以后可以帮助我们去降低数据使用门槛.
使用这种技术, 就可以把原来分散在各个地方的数据经过抽取, 融合, 链接形成知识图谱, 接下来在这之上可以为业务层提供统一的消费入口, 包括以下方式, 比如说进行语义的分析, 理解, 查询, 然后可以做数据关联的探索, 即知识图谱图探索, 对于业务的拓展可以动态的去定义扩充, 同时可以进行智能的检索和问答, 从而为用户提供统一的入口.
接下来我们详细分析如何使用知识图谱里面相关技术做这件事情:
第一个就是用知识图谱 (本体) 对各种类型的数据进行抽象建模, 基于可动态变化的,"概念 - 实体 - 属性 - 关系" 数据模型, 来实现各种数据的统一建模. 这个模型应该是非常灵活的, 可以适应绝大部分数据的特征, 即可以使用这种模型对绝大部分的数据进行统一建模;
然后我们使用知识图谱的数据存储, 实现对大数据及数据模式动态变化的存储要求, 从底层来说, 提供存储的知识;
同时利用知识图谱里面, 比如信息抽取, 实体链接相关的技术, 去对非结构化, 半结构化的数据进行抽取和转换, 形成知识图谱形式的知识, 以及和知识图谱里面的结构化的知识进行链接;
最后通过语义检索, 图挖掘, 推理, 可视化以及数据分析相关的技术, 构建一个统一的数据消费的入口, 形成一个统一的分析, 检索和利用的平台.
怎么使用知识图谱去对数据进行建模
知识图谱里面有两个基本元素, 一个是实体, 一个是概念.
我们可以以实体为主体目标, 实现对不同来源的数据进行映射与合并, 因为企业碰到的数据很大的一个应用场景就是数据在不同的系统里面, 但是描述的是同一个事物, 怎么去把他们合并起来? 可以用实体的机制进行建模, 然后通过实体合并相关的技术, 把不同数据里描述同一个实体的数据进行融合;
融合后可以利用实体的属性来表示不同数据源中针对实体的描述, 即 A 处过来的数据可以用一部分属性进行描述, B 处来的也可以用一些属性进行描述, 用属性进行统一描述之后, 就会形成对实体全方位的描述, 这里面用到属性的映射和归并, 因为从不同数据源中来的, 可能有些属性是重复的, 甚至是冲突的, 需要考虑怎么去合并;
其次就是利用知识图谱里面的关联关系去描述各种数据源之间数据的关系, 知识图谱里面这种关系是非常灵活的, 所以数据间的关系可以很容易的转换成为知识图谱来进行描述, 从而支持关联分析, 这里面主要用到的就是关系抽取的一个技术;
剩余的数据可能信息抽取也比较难解决, 可以通过实体链接的技术, 并不一定要把所有文本都转换成为结构化的数据, 可以把它们进行链接, 比如在做企业知识图谱的时候, 可以把企业相关的新闻, 不用把新闻的时间, 地点, 人物都抽取, 这块难度较高, 但是可以把新闻和实体做关联, 即通过实体链接技术, 实现围绕实体的多种类型数据的关联存储;
然后还有一个动态的数据, 因为现实中间, 数据都是在不断动态变化的, 这主要通过事件的机制来进行描述, 体现事件与实体间的关联, 并利用时序的概念来描述事件的发展状况, 把历史的事件和当前事件联系起来, 有了动态变化之后, 可以做时序的预测, 这里涉及的技术主要是动态事件的提取相关技术.
怎么支持大数据和数据模式的动态变化
刚刚提到就是用基于图的数据存储, 知识图谱的数据模式动态变化特性支持按需修改数据模式, 底层用图存储的机制进行支撑, 这部分详细参见大规模知识图谱数据存储实战解析.
怎么去处理非结构化和半结构化数据
我们可以用信息抽取相关的技术, 实现从非结构化, 半结构化数据中进行信息抽取, 转换成知识图谱里的知识; 刚刚提到对于新闻这种数据, 可能很难把它完全结构化, 可以通过实体链接的方式, 结合知识图谱, 实现对目标数据的语义关联标注, 包括消岐, 聚合, 增强对数据的语义理解, 数据和知识图谱关联以后, 即可把知识图谱里语义的特性关联到非结构化数据里去; 还有可以通过搜索的技术, 去对非结构化的数据进行统一检索和利用, 这是搜索引擎普遍使用技术, 对文本的数据, 非结构化的数据进行统一的检索, 用了知识图谱之后可以做一定的语义检索.
最后是提供一个统一的分析利用的平台. 这个平台提供用户消费数据不同的方式, 比如说可视化, 统一检索, 统一数据查询, 数据分析与挖掘和深度推理.
通过知识图谱去解决大数据并不是我们单独提出的, 应该说现在有很多成熟的方案, 国外知名公司 Palantir 即利用了知识图谱相关技术, 中间黄色的框内描述的就是动态本体论相关的技术, 对数据进行建模融合, 底层数据抽取集成, 上面提供一个统一的数据分析, 利用, 查询的方案.
这个方案和我们的 PlantData 平台非常的相似, 底层我们进行数据的采集, 采集即运用信息抽取相关的技术对数据尤其是非结构化数据进行处理, 然后形成结构化的知识, 再往上进行数据的融合与合并, 形成知识图谱形式的知识, 存储在右边大规模知识图谱数据存储引擎中, 最上面是一个统一的消费平台, 通过数据可视化, 动态网络分析, 语义检索, 智能语义问答, 以及与数据分析挖掘相关的一些方法去提供给用户, 这是我们的 PlantData 平台针对大数据应用的一个解决方案.
总结一下, 有了平台以后可以做什么? 中间核心部分就是我们的平台, 有了平台以后相当于我们具备了很多知识图谱上面的能力, 比如可视化, 网络分析, 模型计算, 数据智能等; 同时 PlantData 平台还提供多种对外的接入方法, SDK 等, 在上面可以构建很多的应用, 比如智能检索, 智能推荐等, 最终落地到不同的行业中, 这里仅列举了我们探索过的一些利用知识图谱解决行业大数据问题的行业, PlantData 大数据知识图谱智能平台, 可以赋能各行业应用.
接下来我们对各行业中应用做一些简单的描述.
金融行业
金融行业数据相对来说比较全面, 在这里面已经探索出很多的应用, 比如智能投顾, 即通过数据分析的方式, 智能的去进行投资, 这个听起来非常漂亮, 但是目前为止, 还很少有成熟的产品出来. 国外的 kensho 做了一些探索, 经过我们的分析和学习, 应该还远远未达到智能投顾的级别.
但在现在一些具体的场景里面, 有很多落地的应用, 比如反欺诈, 知识图谱可以将用户所有的行为关联起来, 实现反欺诈的功能; 同时可以做异常分析, 组图欺诈的检测, 精准营销, 失联客户管理等.
生物医学领域
应用也非常多. 比如在欧盟的第 7 框架下面, 做了一个开放的药品平台 Open Phacts, 这是在药物发现里的一个应用; 还可以做辅助诊疗, 即前面提到的 IBM Watson, 我们也做了一些探索, 比如中医开方辅助, 即根据症状智能开方, 同时也可以做相似病例的发现, 目前医生在诊断的时候很大程度也是根据历史病例进行参考, 因此我们可以利用知识图谱实现相似病例发现.
图书馆情报行业
我们也做了一些探索, 比如在特定学科知识领域知识图谱的建设, 基于知识图谱做一些知识的管理, 同时我们还做了专利分析以及情报分析.
还有一些其他的应用, 比如政府行业, 政府大数据; 农业领域的化肥本体知识库; 还有就是客服系统, 这是基于知识图谱的智能客服系统.
后续我们会针对知识图谱在金融, 聊天机器人, 游戏和知识管理四大行业的应用做一些深入探讨, 邀请行业知名的公司参与, 欢迎关注.
接下来是一个实战演示, 在大规模知识图谱数据存储实战解析中我们以人民的名义为例制作了一个知识图谱, 有了这个知识图谱之后到底可以用它来做什么? 通过视频我们可以更加清楚的了解今天知识图谱应用的技术.
以上为报告全部内容.
胡芳槐博士, 上海海翼知信息科技有限公司创始人, 现任上海海翼知信息科技有限公司 CTO, 知识图谱和本体学习 6 年以上的研究以及产业化经验, 多个相关方向的国家项目和上海市政府项目骨干成员, 国内最早研究中文知识图谱构建并进行产业化探索实践, 在国际知名会议和期刊上发表多篇中文图谱构建, 机器学习方面相关论文.
PlantData 知识图谱数据智能平台 https://mp.weixin.qq.com/s/nuknlGKaIXY-CU-3mT7xKA 以 "链接数据 洞察价值" 为理念, 致力于知识图谱实战技能的挖掘与应用, 为数据分析师, 数据工程师, 行业爱好者等从业人员提供知识图谱数据集及工具
来源: http://geek.csdn.net/news/detail/203338