最近大家应该能够看到,在我们的朋友圈中有一些高考机器人的文章被刷屏,也就是有很多的学霸被这些机器人所代替了,其实他们后面很大程度的用了知识图谱相关的技术。
今天我的分享分为两个部分:
第一个就是对知识图谱及知识图谱应用的技术做一个分享;然后是对我们应用知识图谱在企业大数据方面的一些探索。
首先我们按照惯例,看一下什么是知识图谱,我这里引用的是语义网之父的一句话:语义网它是一个面向数据的互联网,从某种含义上来说,它其实就是一个全局的数据库。
什么是一个面向数据的互联网?
我们都知道,现在我们看到的网站,可以说是面向文档和网页的一个互联网,在这个互联网中间,它的主要信息是通过网页来表达的,网页方便之处是易于被人类所理解,所以平时我们查阅信息还是比较方便的,但是它有一个缺点,就是语义信息不足,所以机器理解起来比较困难,现在我们的互联网正在转变,它在转变成为一种面向数据的互联网,在这种互联网里面,它的信息和数据是可以被机器理解的。
我们看一下什么是面向数据的互联网,现在我们的互联网中间,它不应该只是一个个的网页,它应该更多的是一个个的事物,或者说是一个个的实体,就像我们这个图中间看到的,互联网里面包含的更多的是对这些具体事物的描述。这张图里面包含了建筑、糖果、化学物,还有艺术作品等。
这就是面向数据的互联网中具体的事物,这些事物本身并不是孤立的,它们相互关联,这就构成了这些事物之间的各种各样的关联关系,这可以说是面向数据的互联网的本质:首先有各种各样的事物,然后是这些事物之间的关联关系。
我们再来看一下,为什么会出现面向数据的互联网这样一个概念,从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,也就是数据、信息、知识,再到智慧。这个模型我们应该非常熟悉,从底层的数据开始进行一定的提炼,形成信息,然后再进行抽取形成知识,在知识上面可以做很多的应用,比如说推理,比如说现在的人工智能,这就是智慧。
定义到可视化里面,我们也可以这样去分类,从数据的可视化,到信息的可视化,再到知识的可视化,当然最后面是智慧的可视化,这个就更加抽象,更加困难,这个我们今天就不去表述。
先看数据可视化,有哪些类型的数据,第一个就是记录型的数据,使用过关系型数据库就会很清楚,里面有很多记录型的数据;然后还有关系型的数据,就像我们的知识图谱,它是一种关系密集型的数据;然后还有时态数据、空间数据。
什么是数据可视化,这个定义比较理论化,对于数据可视化不用我们去进行解释,大家应该都知道,就是把数据里面的一些信息、含义,怎么去用一种形式去进行抽象、提取,形成信息然后用相应的属性、变量去进行描绘,这是数据可视化。
数据可视化里面有很多理论的研究和技术,今天由于时间关系,我不去详细的介绍,大家感兴趣的话可以去看浙大陈为教授的《数据可视化》,对整个可视化做了非常详细的剖析。
然后是信息的可视化和知识的可视化,应该说信息和知识的可视化在一定程度上很难去进行直接的区分,因为信息和知识没有严格的界限。信息可视化是研究大规模非数值信息资源的呈现,这里面主要的目标就是帮助人去理解和分析数据。
知识可视化主要用来传达和表示复杂知识的图像,用图像图形的手段去表达,其主要目标是用来做知识的传输和传递,帮助其他人去正确的重构、记忆和应用知识。
接下来我们看一下在做知识可视化的时候有哪些常见的形式,我这里列出来的只是一部分,比如说在知识图谱里面我们有概念和概念的层次,一种直观的方式就是用概念的层次图去进行知识的可视化,第二种就是用思维导图的形式,同时我们还可以去做认知的地图,最后可以用语义网络的方式,知识图谱就是用这种原生态的语义网络形式进行描述的。
责编:科普知识网