查看原文
其他

【知识图谱】获取到知识后,如何进行存储和便捷的检索?

小Dream哥 有三AI 2020-09-08

互联网时代,人类在与自然和社会的交互中生产了异常庞大的数据,这些数据中包含了大量描述自然界和人类社会客观规律有用信息。如何将这些信息有效组织起来,进行结构化的存储,就是知识图谱的内容。


知识图谱的难点在于知识图谱的搭建,如何高效、高质量、快速的搭建知识图谱是知识图谱工程的核心,那之后获取到的知识,该如何存储以及便捷的检索呢?


作者&编辑 | 小Dream哥

1  知识存储

在前面的知识图谱的文章中,我们介绍了如何进行知识表示以及知识抽取。今天我们来思考这样一个问题,当获取到了大量的知识(通常是一系列的三元组)之后,该用什么样的形式存储这些知识呢?


先思考一下,用来存储知识的系统,应该具有哪些特点呢?

首先,图谱的价值体现在其对对话系统,信息抽取等下游任务的加成,因此知识的存储系统应该能够支持快速和频繁的知识查询操作。


其次,图谱里的知识是按照shcema的结构抽取的,因此,知识的存储应该能够按照schema的结构,体现出知识的层次结构和知识间联系。


此外,知识存储应该尽量高效,避免出现过多的存储空间的浪费。

1)关系型数据库


数据存储最容易想到的就是常用的关系型数据库,包括Oracle、MySQL等。

如上图所示,是采用传统关系型数据库表示知识的示意图。每条知识是一个三元组(S,P,O),其中S称为主语Subject,其取值可以是实体、事件或者概念中的任何一个;P被称为谓语Predicate,取值可以是关系或者属性;O被称为宾语Object,取值可以是实体、事件、概念或者其他普通的值(例如数字,字符串等)。


在传统关系型数据库中,将三元组一个一个的存储在数据库的一个数据项中,当数据量非常大时,表的规模就非常大,这样的话,查询和修改操作的开销会变得非常的大,这会极大伤害知识图谱的实用性。虽然,基于关系型数据库,有人提出了类型表的方法,即将数据按照schema进行分类,然后数据按照不同的类型表分表存储。但是,由于其本质上并没有“理解”知识图谱的复杂结构,其查表过程仍然较慢较繁琐,无法适应数据量极大的知识图谱的应用。


2)图数据库


将实体看作节点,关系看作带有标签的边,那么知识图谱的数据很自然的满足图模型结构。因此,基于图结构的存储方式能够直接准确的反映知识图谱的内部结构,有利于对知识的查询。另外,以图的方式对知识进行存储,还可以借鉴图论的相关算法,有利于知识推理和知识挖掘。


常用的图数据库有:Neo4J,OrientDB,InfoGrid,HyperGraphDB等。目前,应用较为广泛的为Neo4J和OrientDB。图数据发展较晚,相关标准和技术均不完备,实际应用时可能会遇到意想不到的问题。因此,在为项目选择图数据库时,需要将数据库的易用性和技术文档的完整性等因素也考虑进来。Neo4J是目前较为流行的图数据库,它极易入门,访问速度快。


基于图结构的存储模型用节点表示实体,用边表示实体之间的关系。如下图所示,展示了基于图数据库的知识存储示例。由图可见,节点可以定义属性,用来描述实体的各种特性,下图中“周杰伦”有“身高”,“体重”等属性。基于图结构的存储方法,还可以为边定义属性,因此,还能够描绘实体之间的关系,例如,“周杰伦”和“黄秋生”之间就用了一条叫“义父”的边来连接,表达了他们之间的关系。

2 知识的检索

知识检索的过程,通常是知道三元组(S,P,O)中S和P,从图谱中获取O的过程。以KBQA为例,我们来讲述一下知识检索的过程。


假设用户输入这样的query:“周杰伦的义父是谁?”,读者先想一下,需要经过哪些步骤,才能检索图谱得到答案呢?

如上图所示,展示了这样一个过程:

1.通过实体识别模块,识别出S:周杰伦

2.通过关系识别模块,识别出P:义父是谁

3.检索图数据库,得到答案“黄秋生”

上述过程是一个标准的流程,在实际的应用过程中,可能还会有实体的链接以及关系校正等过程。


当然,检索数据库过程因不同数据库而异,具体不会太复杂,感兴趣的同学可以参考自己所使用的数据库的文档,这里不做详细的介绍。

总结


知识图谱是人工智能技术最重要的基础设施,是计算机能够实现推理、预测等类似人类思考能力的关键。知识存储和检索是知识图谱系列技术中相对简单的一环。对开发者而言,其难点在于检索过程,即组建检索语句的过程,设计实体识别及关系识别。


我会在知识星球中讨论NEO4J的具体操作以及KBQA的具体实现,感兴趣的同学可以扫描下面的二维码加入。


读者们可以留言,或者加入我们的NLP群进行讨论。感兴趣的同学可以微信搜索jen104,备注"加入有三AI NLP群"


下期预告:知识图谱中知识查询

知识星球推荐

扫描上面的二维码,就可以加入我们的星球,助你成长为一名合格的自然语言处理算法工程师。


知识星球主要有以下内容:


(1) 聊天机器人。考虑到聊天机器人是一个非常复杂的NLP应用场景,几乎涵盖了所有的NLP任务及应用。所以小Dream哥计划以聊天机器人作为切入点,通过介绍聊天机器人的原理和实践,逐步系统的更新到大部分NLP的知识,会包括语义匹配,文本分类,意图识别,语义匹配命名实体识别、对话管理以及分词等。


(2) 知识图谱。知识图谱对于NLP各项任务效果好坏的重要性,就好比基础知识对于一个学生成绩好坏的重要性。他是NLP最重要的基础设施,目前各大公司都在着力打造知识图谱,作为一个NLP工程师,必须要熟悉和了解他。


(3) NLP预训练模型。基于海量数据,进行超大规模网络的无监督预训练。具体的任务再通过少量的样本进行Fine-Tune。这样模式是目前NLP领域最火热的模式,很有可能引领NLP进入一个全新发展高度。你怎么不深入的了解?


转载文章请后台联系

侵权必究

往期精选


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存