知识图谱用什么软件做(知识图谱技术应用落地指南)

首页常识更新时间:2023-04-23 16:33:13

本文将按照如下四个层次向大家介绍知识图谱在企业中的落地情况:

知识图谱发展展望

我们先来看看知识图谱的发展历史:

从发展里程碑来看:

从数据的处置量来看,早期的专家系统只有上万级知识体量,后来阿里巴巴和百度推出了千亿级、甚至是兆级的知识图谱系统。

上图便是如今在知识图谱领域的世界各大知名公司,可见该领域的玩家还是非常多的。

上图左表反映的是我们曾经给客户做过的某类法律文本在数量上的变化趋势。

在 2014 年文本的数量还不到 1500 万,而到了 2018 年总量就超过了 4500 万。

我们预计至 2020 年,文本的数量有望突破 1 亿万件(某一特定类别)。那么,我们现在所面临的问题包括:数据量的庞大、非结构化的保存、以及历史数据的积累等方面。

这些都会导致信息知识体、以及各种实体的逐渐膨胀。因此,我们需要通过将各种知识连接起来,形成知识图谱。

知识图谱常见应用场景

知识图谱可以被用于查找人与人之间的关系,如上图所示,我们可以理解为电视剧《人民的名义》中人物的关系图谱。而在很多企业中,就是用到知识图谱来找出用户与用户之间的关系。

知识图谱的另一个应用场景是:找出实体之间的关系。所谓实体,我们可以理解为早年曾提到的“面向对象”中“对象”这一概念。

如上图所示,在公司和企业之间,包括它们的子公司、以及合作公司之间都存在着实体的关系,这就是知识图谱的核心概念。

上图是知识图谱在农业方面的应用。可见,由氮素缺乏辐射开来之后,最终会导致叶子的枯萎,以及落果率的降低等农业方面的歉收情况。

因此,我们在做知识图谱的时候,实际上就是要查找并建立各个实体之间的联系。

如上图所示,在知识图谱的研究和落地方面,业界一般分为三大类:

因此,他们会通过推荐或者是知识的抽取与融合,将结果保存到分布式图数据库里,进而发现各个点与点之间或是边与边之间的关系。

就每天有着超过两亿日活用户数的 WPS 而言,我们需要通过建立用户节点,将用户的基本信息、属性特征和他们的文档联系起来,存放到普通数据库(如 MongoDB)里,然后再转化成图数据库的关系。

同时,我们需要梳理出各个用户节点之间的边。比如说:如果用户A和B来自同一家公司,他们就可能会有同一条边;如果他俩共享过了某个文档,则又会生成一条边。

因此具体寻找边的表述方式会有如下两种:

知识图谱图数据库选型

在做知识图谱时,我们最常碰到的问题莫过于对图数据库的选择。当前,业界有 Neo4j 和 Cayley 这两种最为常用的图数据库可供选择。

大家可能会普遍地认为:无论是网上资料的丰富程度,还是数据库知名度的排名,Neo4j 在各个方面的优势都胜过 Cayley。然而在实际选型中,我们却选择了后者。

具体原因如下:

我们曾经使用上亿的数据量,去分别检验两种数据库查找关系和建立关系的性能。

随后,我们发现由于自身存在着 Bug,Dgraph 对于支持边的权重计算存在着缺陷,会导致在进行边与边、点与点的计算时出现性能上的问题。

因此经过综合考虑,我们最终还是选用了 Cayley 作为自己的图数据库。当然,我们也将自己的发现提交给了 Dgraph 的作者,如今的 Dgraph 版本,已经修正了该 Bug。

总的来说,我们在给企业选择图数据库时,需要分析企业自身的数据体量。如果要处理的数据量和知识量特别多,而且对于速度、性能有一定的要求的话,就不能使用单机版的数据库,而应当去考虑分布式。

与此同时,更重要的是:应用的场景。如果本企业除了要计算两个节点之间的关系,还需要得出节点关系所对应的边权重的话,那么我们更应该进行综合考量和全面对比。

在此,我分享一种我们自己研究出来的独门方法:一般而言,大多数图数据库(如 Neo4j),都会自带底层数据库。

而在实际建模的过程中,我们完全可以在底层不去使用图数据库,例如:可以用 MongoDB 作为底层;然后在它的上面去嵌套一层并未内置底层数据库的图数据库。而且实践证明,这样的混合模式会更加灵活且高效。

知识图谱落地

接下来,我们来看看知识图谱的落地。如上图所示,整个过程分成六个方面:

我们除了需要事先建立知识图谱的模型、以及运用模型来实现知识计算之外,上图反映了其他四个重要的过程,下面我们来逐一讨论。

知识获取

我们既可以通过网络爬虫爬取,也可以通过事件抽取(如使用 CRF 和 LSTM 等机器学习算法),还可以通过国内与国外的一些开源数据集来实现。

知识表示

在获取到了知识之后,我们要对知识进行加工表示。我们既可以用到逻辑表示、框架表示、语义表示,也可以用到各种词表、本体组织,还可以用到语义网络、以及文本与语义的分类方法。

在完成模型表示之后,我们需要进行各种模型的建设。当前,国内业界普遍采用的方法是专家法和归纳法,当然,参照法也有被用到。

所谓专家法,就是根据团队自身对于现有业务和行业的理解程度,通过人工来建模表示。

而归纳法,则是通过一些归纳算法、人工归纳、以及文本分类的方法,来进行模型的归纳。

我们混合使用了上述两种方法。而在建模工具方面,当属 Protege 和 MSVisio 最为常用。

知识存储

接着要进行的是知识存储,如前所述,我们需要选择一款数据库,包括:MySQL、SQL Server、MongoDB、Neo4j 等,不一而足。

根据我们过往的屡次实验经验,您可以先将数据存放到 Key-Vaule 类型的数据库中,而在后续需要的时候,再往 Neo4j 之类的图数据库中拉。

这种模式的性能要比直接存储要高一些。而在工具平台方面,Neo4j、Titan、以及 Cayley 都十分常用。

知识应用

确定了存储方式,后面就是知识应用。它包括自然语言理解、知识搜索、知识问答、以及机器翻译等典型的应用场景。

业界一般在模式上分为两种:

在知识应用中,常用的关键技术包括:CQL、SPARQL、Jena、Neo4j、以及归纳、演绎和基于规则学习的推理。

上图是一张非常经典的知识图谱整体架构图,让我们一起从下往上来解读这张图:

总结起来,在我们使用知识图谱来进行各种应用识别时,需要注意的关键点包括:如何抽取实体的关系,如何做好关键词与特征的提取,以及如何保证语义内容的分析。这便是我们构建一整套知识图谱的常用方法与理论。

CIO之家 www.ciozj.com 微信公众号:imciow

,
展开阅读全文
推荐内容
热门内容
热门文章

© 2007-2022 http://www.anhuiqq.cn,All Rights Reserved.