深度学习+知识图谱,一个不小心就顶流的话题
共 3719字,需浏览 8分钟
·
2021-12-14 13:25
知识图谱是个很热的话题,是学术界研究的热点,也是工业界主推的重点。我自己接触到的就不下十个项目,都自称使用了知识图谱技术。不过,到底什么是知识图谱,却发现各家的理解差异很大——有人大唱赞歌,说知识图谱能够提炼经验、智慧;也有人大泼冷水,说知识图谱的“知识库”,实际就是数据库,顶多再加个数据可视化。
最近系统地读了一遍《从零构建知识图谱》这本书,感觉挺有收获。我们知道,技术最终要发挥作用,首先就得落地,不但要看纸面宣传,还要看能拿在手里,最终能够成为解决问题的工具。这本书所强调的正好就是实践,读完总算是对知识图谱有了一个更客观的理解。
下面就从三个大家最感兴趣的问题,分享一下我对知识图谱的理解。
1
什么是知识图谱
“知识图谱”名字起得不太容易理解,光从字面看,我们能得到两个信息:第一是这是一项有关“知识”的技术,第二是这项技术主要采用的是图结构。图结构好理解,是一种常见的数据结构,但什么是“知识”?为什么要用图结构来表示?这些不清不楚的表述,容易妨碍我们理解知识图谱。
太抽象的术语不好理解,我们不妨对知识图谱建立一个感性认识。《从零构建知识图谱》开篇举了例子,我觉得特形象,这里直接引用:NBA爱好者阿楠想知道姚明的臂展,在十多年前,阿楠直接搜“姚明的臂展”这几个字是无法直接得到结果的,他会找到一堆要么命中了“姚明”、要么命中了“臂展”的杂七杂八的页面,然后经过一番翻找,才可能在某张页面里面找到需要的结果,而这个结果可能还不是最终想要的结果,而类似是“姚明的臂展是7英尺5英寸”,计量单位和我们熟知的不一致,还要再做一次换算,才能最终得到“姚明的臂展是226厘米”这个最终答案。
但现在做同样的事就简单多了,阿楠在搜“姚明的臂展”,直接就能得到“姚明的臂展是226厘米”这个结果。这就是Google提出的“让搜索通往答案本身”,背后所使用的技术正是本文的主角知识图谱。
知识图谱最容易让人望文生义的就是这个“知识”。什么是知识呢?“姚明的臂展是226厘米”是一条知识,“小米公司的董事长是雷军”也是一条知识。用术语来说,就是关于某个实体的属性或者关系信息。
那什么是知识图谱呢?《从零构建知识图谱》从不同角度进行了解释,其中电子科技大学刘峤教授的定义最直白,引用如下:
知识图谱,是结构化的语义知识库,用于以符号形式描述物理世界中的概念及其相互关系,其基本组成单位是“实体-关系-实体”三元组,以及实体及其相关属性-值对。实体之间通过关系相互联结,构成网状的知识结构。
陈教授的这段定义不妨分两个部分理解。首先是知识,陈教授给出的定义是“实体-关系-实体”三元组。什么是实体呢?上面提到的姚明、雷军和小米公司都是实体。实体和实体之间可能存在某种关系,譬如说雷军和小米公司这两个实体之间就存在“就任董事长”的关系。姚明和雷军这两个实体之间也存在关系。我查了一下公开资料,两位私下是不是朋友不得而知,但是都曾在2012年入选CCTV经济年度人物。不过这条知识是我纯手工查出来的,如果构建了相关领域的知识图谱,那只要简单点选一下,应该就能查到两位之间更多的关联关系。
实体之间的关系是一种知识,还有一种知识是实体的属性-值对。这条结合前面的例子就很好理解了,姚明是实体,他的臂展是这个实体下面的一项属性,属性值就是226厘米。
第二部分就是图谱。知识至少包含一项实体,实体和实体之间可以通过关系相联结。用什么数据结构存储比较好呢?图结构最合适。这就是定义所说的“实体和实体之间通过关系相联结,构成网状的知识结构”,这就是知识图谱。
2
构建知识图谱的主要流程
知道了什么是知识图谱,有什么用,那大家第二关心的问题自然就是怎么构建知识图谱。这是知识图谱技术的核心部分,也是《从零构建知识图谱》这本书的主要内容,涉及到机器学习、自然语言处理、逻辑推理、图论等等理论知识,还有数据库以及各种工具的使用,内容多而且杂,篇幅有限不可能都讲清楚,不过,这里可以梳理出一条构建知识图谱主要脉络。以下是我个人的一点理解。
构建知识图谱,有三个关键点,分别是知识源、知识抽取和知识推理。
首先是知识源。知识图谱说到底只是一项技术,本身不生产知识,只是知识的搬运工。那从哪里搬运呢?首先就得有知识源。自然界没有一个专门就叫“知识源”的东西,但自然界到处都是知识源,譬如说我们想查姚明的信息,都会习惯去查百科,百科就是一种知识源。当然,除了百科,其它的知识源还有很多,譬如说各种产品的官网,又譬如说新闻网站,前面那条“雷军和姚明共同入选2012年CCTV经济年度人物”,就是在新闻网站上查到的。
知识源可以说的不多,或者说太多,你需要构建什么知识图谱,首先就是要找到对应的知识源。找到知识源以后,接着要做的就是知识抽取。知识是以一定格式存放在知识源上的,比如说一篇文章,或者一份表格。要抽取知识,就要解析对特定的格式做解析,总的来说有三类:结构化数据的抽取、非结构化数据的抽取和半结构化数据的抽取。
结构化数据的抽取的难度最低,譬如说用电子表格或者数据库存储的数据。这些数据预先已经做了整理,具备一定的格式,做数据抽取只需要将对应的内容抽取出来就可以了。
非结构化数据的抽取难度最大,但是大量的数据都属于非结构化数据,譬如说一篇文章,一份讲话等等。做非结构化数据的抽取,首先需要使用自然语言处理领域的信息抽取技术,通过实体抽取、关系抽取和事件抽取等三项任务,将非结构化数据转化成为结构化数据,然后才能接着完成后面的任务。
最后是半结构化数据的抽取。先说一点,我看的比较多的分法,是将数据分为结构化数据和非结构化数据,《从零构建知识图谱》这本书专门又多分了一类半结构化数据,仔细读了一遍,我的理解是半结构化数据其实就是“带有结构化数据的非结构化数据”。听起来拗口,其实很简单,譬如说一篇带表格的文章。表格是结构化数据,文章是半结构化数据,带表格的文章就是这里的半结构化数据。书里给出了的方法,用是包装器抽取来半结构化数据。实践上其实很简单,既然是带有结构化数据的非结构化数据,那就用抽取结构化数据的方法来对付其中的结构化数据,剩下的作为半结构化数据来抽取不就可以了。
最后是知识推理。推理本身就有点玄乎,知识推理又用到了同样有点玄乎的图论,所以一般将知识图谱的文章,在知识推理这块就不太容易讲清楚。其实举个例子大家就知道什么是知识推理了。前面说“姚明的臂展是226厘米”,这就经过知识推理,用到了两条知识。第一条知识是“姚明的臂展是7英尺5英寸”,第二条知识是“7英尺5英寸约等于226厘米”,那么虽然我们在知识抽取阶段没法直接得到姚明的臂展到底是多少厘米,但通过对这两条知识的推理,也能得到“姚明的臂展是226厘米”。用术语来说,已知由A可得到B,由B可得到C,可知由A可得到C。这就是推理。
3
深度学习+知识图谱
最后聊一下一个一不小心就顶流的话题,深度学习+知识图谱。深度学习是个大IP,知识图谱也是个大IP,所以理所当然,深度学习+知识图谱是个超级大IP,想在顶会上刷知识图谱,靠的就是从这个超级大IP上面的蹭热度。
怎么蹭呢?首先一点,深度学习+知识图谱不是另起炉灶,事还都是那几件事,问题也还都是那一些问题,那有什么不同呢?不同的是用深度学习的方法来解决。前面说构建知识图谱有一个重要环节,叫知识抽取,具体来说,就是从知识源中抽取实体和关系。结构化数据好说,非结构化数据难办,洋洋洒洒的一篇文章,怎么才能抽取其中的实体和关系呢?
有两种方法。传统的方法是写规则,通过规则命中来进行抽取。每一条规则都需要人工手写,所以可想而知,这种方法费时费力,而且费力还不讨好,容易挂一漏万。现在深度学习起来了,抽取工作也可以通过深度学习模型来完成。
这块《从零构建知识图谱》没太展开,这里多啰嗦几句。Tranformer模型是近年深度学习领域的顶流,可以说在自然语言处理(NLP)方面的顶会,写满的全是Tranformer的名字。这两年又搞出了新动静,准备向计算机视觉(CV)进军,抢一抢CNN模型的饭碗。Tranformer完全可以用来做命名实体识别(NER)任务,使用简单而且效果奇好。用Tranformer是最前沿(Sota)的方法,比《从零构建知识图谱》提到的方法要更新,大家可以通过Spacy或者HunggingFace的Pipeline试试。
4
作者简介
莫凡 网名木羊同学。娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。
5
推荐阅读
推荐阅读
你也「在看」吗?👇