知识图谱

看了很多资料后,谈谈自己对知识图谱的理解。

比较好的一篇知识图谱的文章 领域应用 | 知识图谱的技术与应用

概论

随着移动互联网的发展,万物互联成为了可能,这种互联所产生的数据也在爆发式地增长,而且这些数据恰好可以作为分析关系的有效原料。如果说以往的智能分析专注在每一个个体上,在移动互联网时代则除了个体,这种个体之间的关系也必然成为我们需要深入分析的很重要一部分。 在一项任务中,只要有关系分析的需求,知识图谱就“有可能”派的上用场。

什么是知识图谱

Google知识图谱(英语:Google Knowledge Graph,也称Google知识图)是Google的一个知识库,其使用语义检索从多种来源收集信息,以提高Google搜索的质量。
其目标是,用户将能够使用此功能提供的信息来解决他们查询的问题,而不必导航到其他网站并自己汇总信息。
据Google称,知识图谱的信息来自许多来源,包括CIA的世界概况,Freebase和维基百科[1]。其功能与Ask.com和Wolfram Alpha等问题问答系统相似。
截至2012年,其语义网络包含超过570亿个对象,超过18亿个介绍,这些不同的对象之间有链接关系,用来理解搜索关键词的含义。

知识图谱最早被应用于搜索引擎领域,旨在通过语义把碎片化的数据关联起来,让用户能直接搜索到事务(Things),而不是文本字符串(Strings)。在搜索引擎中引入知识图谱大幅的提升和优化了搜索体验。
近年来,随着人工智能的再次兴起,知识图谱又被广泛的应用于聊天机器人和问答系统中,用于辅助深度理解人类的语言和支持推理,并提升人机问答的用户体验等。典型的如IBM的Watson,苹果的Siri,Google Allo,Amazon Echo,百度度秘,公子小白等。
此外,知识图谱还被用来提升数据分析的能力和效果。例如著名的大数据公司Palantir利用知识图谱建立数据的关联以提升上游数据分析的效果。与知识图谱有关的语义技术也被用来提升机器与机器之间的语义互操作能力,解决机器之间的语义理解问题。例如,全球最大物联网标准化组织OneM2M就把语义和知识技术作为物联设备抽象和语义封装的技术基础。
在金融、农业、电商、医疗健康、环境保护等大量的垂直领域,知识图谱都得到广泛的应用。例如,很多金融领域公司也构建了金融知识库以进行碎片化金融数据的集成与管理,并辅助金融专家进行风控控制、欺诈识别等;生物医疗专家通过集成和分析大规模的生物医学知识图谱,辅助其进行药物发现、潜在靶点识别等多方面任务。

从学术的角度,我们可以对知识图谱给一个这样的定义:“知识图谱本质上是语义网络(Semantic Network)的知识库”。但这有点抽象,所以换个角度,从实际应用的角度出发其实可以简单地把知识图谱理解成多关系图(Multi-relational Graph)。
那什么叫多关系图呢? 学过数据结构的都应该知道什么是图(Graph)。图是由节点(Vertex)和边(Edge)来构成,但这些图通常只包含一种类型的节点和边。但相反,多关系图一般包含多种类型的节点和多种类型的边。比如左下图表示一个经典的图结构,右边的图则表示多关系图,因为图里包含了多种类型的节点和边。这些类型由不同的颜色来标记。
图片

在知识图谱里,我们通常用“实体(Entity)”来表达图里的节点、用“关系(Relation)”来表达图里的“边”。实体指的是现实世界中的事物比如人、地名、概念、药物、公司等,关系则用来表达不同实体之间的某种联系,比如人-“居住在”-北京、张三和李四是“朋友”、逻辑回归是深度学习的“先导知识”等等。

现实世界中的很多场景非常适合用知识图谱来表达。 比如一个社交网络图谱里,我们既可以有“人”的实体,也可以包含“公司”实体。人和人之间的关系可以是“朋友”,也可以是“同事”关系。人和公司之间的关系可以是“现任职”或者“曾任职”的关系。 类似的,一个风控知识图谱可以包含“电话”、“公司”的实体,电话和电话之间的关系可以是“通话”关系,而且每个公司它也会有固定的电话。

知识图谱来源于三个方面的技术进步。一是符号人工智能、二是万维网、三是自然语言处理。
在经典人工智能领域,以知识表示为中心的符号人工智能和以神经网络为中心的连接人工智能一直是两个主流方向。神经网络借助深度学习解决了大量感知层面的问题,如视觉、听觉等。知识图谱一定程度上代表符号人工智能的发展方向,被认为是进一步解决认知层面的问题,如语言理解、常识推理等,所不可或缺的技术手段。
在万维网领域,Web之父Tim Berners-Lee于1998年提出了语义网(Semantic Web)的概念。传统Web是通过建立网页之间的链接发展起来的。语义网的初衷也是希望能像传统Web一样,建立数据或对象的直接链接,形成一个庞大的链接数据库或知识库。这种结构化的链接数据将使得Web上的信息更加易于被机器所理解和处理,而不仅仅像网页那样只是供人浏览。谷歌知识图谱的主要数据来源Freebase就是早期的语义网项目。
在自然语言处理领域,从文本中自动或半自动抽取实体及实体之间关系的技术飞速发展,在一定程度上解决了传统知识库获取面临的可扩展性差的问题,从而提升了各种知识图谱构建的效率。
当前,知识图谱技术和方法正在进一步与深度学习等进一步融合。目前人工智能领域的一个重要研究方向就是怎样基于神经网络来处理符号和实习知识图谱的处理和常识推理。可以预见,知识图谱将在人工智能相关的各个领域得到更加广泛的应用。

知识图谱的表示

知识图谱应用的前提是已经构建好了知识图谱,也可以把它认为是一个知识库。这也是为什么它可以用来回答一些搜索相关问题的原因,比如在Google搜索引擎里输入“Who is the wife of Bill Gates?”,我们直接可以得到答案-“Melinda Gates”。这是因为我们在系统层面上已经创建好了一个包含“Bill Gates”和“Melinda Gates”的实体以及他俩之间关系的知识库。所以,当我们执行搜索的时候,就可以通过关键词提取(”Bill Gates”, “Melinda Gates”, “wife”)以及知识库上的匹配可以直接获得最终的答案。这种搜索方式跟传统的搜索引擎是不一样的,一个传统的搜索引擎它返回的是网页、而不是最终的答案,所以就多了一层用户自己筛选并过滤信息的过程。
图片

在现实世界中,实体和关系也会拥有各自的属性,比如人可以有“姓名”和“年龄”。当一个知识图谱拥有属性时,我们可以用属性图(Property Graph)来表示。下面的图表示一个简单的属性图。李明和李飞是父子关系,并且李明拥有一个138开头的电话号,这个电话号开通时间是2018年,其中2018年就可以作为关系的属性。类似的,李明本人也带有一些属性值比如年龄为25岁、职位是总经理等。
图片

这种属性图的表达很贴近现实生活中的场景,也可以很好地描述业务中所包含的逻辑。除了属性图,知识图谱也可以用RDF来表示,它是由很多的三元组(Triples)来组成。RDF在设计上的主要特点是易于发布和分享数据,但不支持实体或关系拥有属性,如果非要加上属性,则在设计上需要做一些修改。目前来看,RDF主要还是用于学术的场景,在工业界我们更多的还是采用图数据库(比如用来存储属性图)的方式。感兴趣的读者可以参考RDF的相关文献,在文本里不多做解释。

知识抽取

知识图谱的构建是后续应用的基础,而且构建的前提是需要把数据从不同的数据源中抽取出来。对于垂直领域的知识图谱来说,它们的数据源主要来自两种渠道:一种是业务本身的数据,这部分数据通常包含在公司内的数据库表并以结构化的方式存储;另一种是网络上公开、抓取的数据,这些数据通常是以网页的形式存在所以是非结构化的数据。

前者一般只需要简单预处理即可以作为后续AI系统的输入,但后者一般需要借助于自然语言处理等技术来提取出结构化信息。比如在上面的搜索例子里,Bill Gates和Malinda Gate的关系就可以从非结构化数据中提炼出来,比如维基百科等数据源。

举个比较实际的例子,比如想获取电影(电影名 上映时间 导演 角色) 演员(姓名 出生年月 性别 等) 等的数据,可以从从比较专业的电影网站爬取,比如豆瓣

知识图谱的应用案例

当下知识图谱已在工业领域得到了广泛应用,如搜索领域的Google搜索、百度搜索,社交领域的领英经济图谱,企业信息领域的天眼查企业图谱
著名的通用知识图谱中有,谷歌 Knowledge Graph 、百度知识图谱、搜狗 知立方 、YAGO、DBpedia等,它们具有规模大、领域宽,包含大量常识等特点。

国内应用案例

在国内,落地的,而且做得比较好的行业知识图谱,我觉得应该是天眼查的工商行业知识图谱,主要是公司和人的数据。
举个例子,滴滴 官方叫法是 北京小桔科技有限公司企业关系历史沿革
点击上面的企业关系和历史沿革即可查看,可以看到 人和公司的关系,而且能够根据时间查看,点击人或者公司可以跳到对应的页面。我觉得天眼查这个企业和人的知识图谱做的确实挺好的。 如果不方便查看,下面有我的截图。
备注:不是打广告,我是在使用Neo4j的时候发现有一个朋友也在使用,最后发现他们可能用Neo4j做离线存储,后来才知道是天眼查。看了一下,感觉在我所知道的国内的知识库、知识图谱里,这个是想法很好,真正落地而且应用的非常好的一个。

企业关系

历史沿革

国内高校研究

复旦大学 中文通用概念知识图谱(CN-Probase)
复旦大学 中文通用百科知识图谱(CN-DBpedia)

清华大学 知识图谱

北京大学 知识图谱

如何构建知识图谱

我觉得 项目实战:如何构建知识图谱 这篇文章不错,但是商用有点难
在国内的环境,我觉得直接使用提供的结构化/半结构化数据构建知识图谱是最快的办法,比如运营商、银行、公安、12306、微信、淘宝、京东、支付宝、滴滴,因为他们有大量的结构化数据,而且是经过验证的结构化数据。不过没看到他们的成果,目前看到做的比较好的是天眼查。

领域应用 | 知识图谱的技术与应用 这篇文章里提到构建知识图谱有两种方案,一种是结构化数据稍作处理,构建知识图谱;另一种是用自然语言处理来抽取关系,然后构建知识图谱。
很有幸参与了公共安全方面的知识图谱构建,对结构化数据进行处理,使用Neo4j作为图数据库构建知识图谱,历史数据量在300亿左右,而且每天增量更新上千万。有兴趣的朋友可以交流。
在构建完知识图谱以后,会用到图的遍历算法,社区挖掘算法等。

如果是非结构化数据,首先要数据清洗,对数据进行实体抽取,关系抽取,然后构建知识图谱。

References

[1] Google Inside Search
[2] Knowledge Graph - Wikipedia
[3] Google知识图谱 - 维基百科
[4] 知识图谱研究进展
[5] 知识图谱目前亟待的问题有哪些?
[6] 中文知识图谱构建思路是什么?
[7] 专访 | 东南大学漆桂林教授:知识图谱不仅是一项技术,更是一项工程  2016-09-11
[8] 知识图谱数据管理浅讲  2017-03-08
[9] 浅谈知识图谱数据管理  2017-03-08
[10] 中国的资本系图谱  2017-03-19
[11] 拓尔思应邀出席大数据产业峰会并就知识图谱应用发表演讲  2017-03-29
[12] 知识图谱作投资决策,为何比深度学习更靠谱  2017-04-07
[13] HiKnowledge | 大规模知识图谱数据存储实战解析  2017-04-25
[14] 图谱在手 天下我有  2017-06-19
[15] 知识图谱在金融领域应用简介  2017-07-26
[16] 重磅 | 知识图谱前沿技术课程实录  2017-07-19
[17] 医学知识图谱构建技术与研究进展
[18] 项目实战:如何构建知识图谱
[19] 知识图谱的应用
[20] DB-Engines Ranking
[21] 领域应用 | 知识图谱的技术与应用  2018-06-14
[22] 知识图谱科普 什么是知识图谱与语义技术
[23] 知识图谱的缘起
[24] 一文揭秘!自底向上构建知识图谱全过程 - 阿里技术