当前位置: 首页 > 科技观察

这是一本通俗易懂的知识图谱技术应用指南

时间:2023-03-22 00:45:53 科技观察

[.com原稿]在面向对象时代,我们常说万物皆对象。以前,我们只分析单个对象。随着互联网和社交网络的发展,物体之间的联系变得越来越紧密。我们称对象为实体。现在分析实体之间的关系变得尤为重要。我们可以利用知识图谱相关技术,挖掘实体之间的关系,从而发现商业价值,打造属于自己的知识图谱应用。2018年11月30日至12月1日,由WOT主办的WOT全球人工智能技术峰会在北京JW万豪酒店举行。本次峰会的主题是人工智能。金山办公AI领域专家黄洪波在业务实践环节与嘉宾分享了《知识图谱在企业的落地》主题演讲。本文将从以下四个层面介绍知识图谱在企业中的实现:知识图谱的发展前景,包括知识图谱的定义和实现。知识图谱的常见应用场景,包括如何应用和具体的应用场景。知识图谱数据库选型,包括选型对比和经验分享。知识图谱的实现包括实现方案的制定和图结构从无到有。知识图谱的发展前景我们先看一下知识图谱的发展史:从1950年代到1970年代,出现了符号逻辑、神经网络、LISP(ListProcessinglanguage),还有一些语义网络,但还是很简单并且没有标准化。知识的表示。从70年代到90年代,出现了一些专家系统,一些有限领域(如金融、农业、林业等)的知识库,后来又出现了一些脚本、框架、推理。在1990年代和2000年代,出现了万维网、人工大规模知识库、本体概念以及智能代理和机器人。2000年到2006年,出现了语义网、群智、维基百科、百度百科、求职百科等内容。从2006年至今,我们对数据进行了结构化。但是数据和知识的体量越来越大,导致通用知识库越来越多。随着海量知识的获取、组织和整合,知识图谱应运而生。从发展里程碑来看:2010年,微软发布了Satori和Probase,都是比较早的数据库。当时图规模约为500亿,主要用于微软的广告和搜索业务。随后在2012年,谷歌推出了KnowledgeGraph(基于知识的图数据库),当时数据量为700亿。后来,Facebook、阿里巴巴、亚马逊分别在2013年、2015年、2016年推出了各自的知识图谱和知识库,主要用于知识理解、智能问答、推理和搜索。从处理的数据量来看,早期的专家系统只有几万的知识量。后来,阿里巴巴和百度推出了千亿甚至万亿的知识图谱系统。上图为知识图谱领域的全球领先企业。可见,这个领域的玩家还是不少的。上图左表反映了我们为客户完成的某类法律文本数量的变化趋势。2014年发文量不足1500万条,而2018年总条数超过4500万条。我们估计,到2020年,文本数量有望超过1亿(针对特定类别)。那么,我们现在面临的问题包括:海量数据、非结构化存储、历史数据积累。所有这些都将导致信息知识体和各种实体的逐渐扩展。因此,我们需要将各种知识连接起来形成一个知识图谱。知识图谱的常见应用场景知识图谱可以用来寻找人与人之间的关系,如上图所示,我们可以将其理解为电视剧♂中人物的关系图。在很多企业中,知识图谱被用来找出用户之间的关系。知识图谱的另一个应用场景是找出实体之间的关系。所谓实体,可以理解为早年提到的“面向对象”中“对象”的概念。如上图所示,公司与企业之间存在实体关系,包括其子公司和合作公司,这是知识图谱的核心概念。上图是知识图谱在农业上的应用。可见,缺氮辐射后,最终会导致叶片枯死、落果率降低等农业失败。所以,我们在做知识图谱的时候,实际上是在寻找和建立实体之间的联系。如上图所示,在知识图谱研究和落地方面,业界普遍分为三类:智能语义搜索。例如:我们通过搜索引擎将各种知识点、实体、内容组合在一起,形成实体之间的关系。个性化推荐。例如:当我们在网上购物、浏览头条时,我们下次打开应用看到的内容往往是系统根据上次搜索到的相关内容做出的个性化推荐。智能问答。例如:某空调企业需要推出“知识问答”功能。那么他们不仅需要收集该领域的电气知识,还需要从外部实体中提取有关电路设计、电源设计、能耗设计、智能水平和功耗的知识。因此,他们会通过推荐或知识抽取与融合,将结果保存在分布式图数据库中,进而发现点与点之间或边与边之间的关系。就WPS每天有2亿多的日活跃用户,我们需要建立用户节点,将用户的基本信息、属性特征和他们的文档链接起来,存储到一个通用的数据库(比如MongoDB),然后进行Graph转换数据库关系。同时,我们需要整理出每个用户节点之间的边。例如:如果用户A和B来自同一家公司,他们可能有相同的优势;如果他们共享了文档,则会生成另一条边。因此,找边的具体表现形式有如下两种:通过搜索数据,找到同一数据库中不同节点所包含的公共字段和属性。通过知识的融合和探索,以及文档内容的语义,提取出文本或标题的中心内容,然后利用算法分析和主体间的比较方法,找出两个用户之间可能存在的关系,然后建立知识体系。知识图谱图数据库选择在制作知识图谱时,我们遇到最多的问题就是图数据库的选择。目前业界有Neo4j和Cayley这两种最常用的图数据库可供选择。大家可能普遍认为Neo4j在各方面都比Cayley有优势,无论是在线信息的丰富性,还是数据库流行度的排名。然而,在实际选择中,我们选择了后者。具体原因如下:数据量大。由于我们公司每天有2亿的数据量,并且会不断产生无数的节点,所以我们需要选择一个能够支持大量数据的数据库。开源属性。Neo4j的企业版不再开源。甚至它以前的开源模型也不完全存在。由于其核心内容不开源,一旦出现问题,我们很难得到及时的支持和帮助。是否支持分布式。鉴于上述企业版的局限性,提出了免费版。但是由于只有企业版的Neo4j可以支持分布式存储和集群,而它的免费版不能支持我们的数据量,所以以后就没有考虑Neo4j了。着陆时的表现。同时,我们也比较了Dgraph和Cayley。由于都是开源数据库,都可以支持分发,所以我们考虑了他们的第三个维度:落地时的性能。我们使用了上亿的数据量来测试两个数据库在查找关系和建立关系方面的性能。后来我们发现,由于自身的bug,Dgraph在支持边权值计算方面存在缺陷,会导致边到边、点到点的计算出现性能问题。因此,经过综合考虑,我们最终选择了Cayley作为我们的图数据库。当然,我们也把我们的发现提交给了Dgraph的作者,目前的Dgraph版本已经修复了这个bug。一般来说,我们在为企业选择图数据库时,需要分析企业自身的数据量。如果要处理的数据量和知识量特别大,对速度和性能有一定的要求,就不能使用单机数据库,而应该考虑分布式。同时,更重要的是:应用场景。如果企业不仅需要计算两个节点之间的关系,还需要获取节点关系对应的边权重,那么就要进行综合考虑和综合比较。这里分享一个我们自己开发的独特方法:一般来说,大多数图数据库(比如Neo4j)都会有自己的底层数据库。在实际建模过程中,我们完全可以不用底层的图数据库。比如我们可以使用MongoDB作为底层;然后再嵌套一层图数据库,上面没有内置底层数据库。而实践证明,这样的混合模式会更加灵活高效。知识图谱的实现接下来我们看一下知识图谱的实现。如上图所示,整个过程分为六个方面:如何建立知识模型如何获取知识如何整合知识如何实现知识的存储如何保证知识的计算并高效地进行知识应用除了需要提前建立知识图谱模型以及利用模型实现知识计算之外,上图还体现了另外四个重要的过程,下面我们将一一讨论。知识的获取不仅可以通过网络爬虫来实现,还可以通过事件抽取(如使用CRF、LSTM等机器学习算法),以及通过一些国内外开源的数据集来实现。知识表示获取知识后,我们需要对知识进行处理和表示。我们不仅可以使用逻辑表示、框架表示和语义表示,还可以使用各种词汇表、本体组织、语义网络以及文本和语义分类方法。完成模型表示后,我们需要构建各种模型。目前国内行业常用的方法有专家法和归纳法。当然,也使用参考方法。所谓专家法,就是基于团队自身对现有业务和行业的理解,通过人工建模。归纳法是通过一些归纳算法、人工归纳、文本分类等方法对模型进行归纳。我们混合使用了上述两种方法。在建模工具方面,Protege和MSVisio是最常用的。知识存储接下来要做的是知识存储。前面提到,我们需要选择数据库,包括:MySQL、SQLServer、MongoDB、Neo4j等,等等。根据我们以往的实验经验,可以先将数据存储在Key-Vaule类型的数据库中,等到需要的时候再拉入Neo4j等图数据库中。这种模式的性能高于直接存储。在工具平台方面,Neo4j、Titan、Cayley都是非常常用的。知识应用决定存储方式,知识应用次之。包括自然语言理解、知识搜索、知识问答、机器翻译等典型应用场景。业界一般分为两种模式:检索模式。我们在已经建立的现成知识库图谱的基础上,将需要理解或翻译的句子放入库中进行“答案”检索,然后通过语义分析进行匹配。最后将匹配结果反馈给用户。可以看出,这是理解自然语言的常见场景。混合模式。我们在检索模式的基础上,增加了深度自生成模型,以应对知识库或语义库匹配效果差的问题,使用RNN(递归神经网络)和LSTM(长短期记忆网络)生成智能模型。在知识应用中,常用的关键技术包括:CQL、SPARQL、Jena、Neo4j,以及归纳、演绎和基于规则的学习推理。上图是一张非常经典的知识图谱整体结构图。让我们从下往上解读这张图:通过百度搜索提取非结构化数据,Word文件、PDF文档或其他类型的文档。通过自然语言处理技术,利用命令实体识别识别文章中的实体,包括:地名、人名、机构名称等。通过语义相似度计算,确定两个实体或两个段落之间的相似程度。通过同义词构造、语义分析、依存分析等,找出实体之间的特征关系。提取TF-IDF、向量等文本特征,通过触发事件、词性等表示,通过RDA(RedundancyAnalysis)对主题进行意义分析。使用数据库或数据表进行数据存储。根据提取的文本、语义、内容等特征,通过知识本体的构建,实现实体之间的匹配,然后存储在Key-Value类型的数据库中,完成数据映射和本体融合。当数据量过大时,使用Hadoop、Spark等分布式数据存储框架,再通过NoSQL内容存储数据。当需要进行数据推理或建立知识图谱时,从数据中提取各种关系,通过各种集成规则形成不同的应用。综上所述,当我们使用知识图谱来识别各种应用时,需要关注的重点包括:如何提取实体之间的关系,如何提取关键词和特征,如何保证语义内容的分析。这是我们用来构建一组知识图谱的常用方法和理论。【原创稿件,合作网站转载请注明原作者和出处为.com】