当前位置: 首页 > 创领中心 > 网络优化

从无所不知到3分钟极速了解 常识图谱

  • 网络优化
  • 2024-11-15

【.com原创稿件】常识图谱是一把开启自动机器大脑的钥匙,能够关上Web 3.0时代的常识宝库。本文将从常识图谱的概念、架构、关键技术、运行畛域以及一些要求留意的疑问等方面,带大家走进常识图谱的环球。

常识图谱是什么?

A knowledge graph consists of a set of interconnected typed entities and their attributes.

常识图谱实质上是语义网络,是一种基于图的数据结构,由节点(Point)和边(Edge)组成。在常识图谱里,每个节点示意理想环球中存在的“实体”,每条边为实体与实体之间的“相关”。常识图谱是相关的最有效的示意方式。

深刻地讲,常识图谱就是把一切不同种类的信息(Heterogeneous Information)衔接在一同而失掉的一个相关网络。常识图谱提供了从“相关”的角度去剖析疑问的才干。

常识图谱这个概念最早由Google提出,关键是用来优化现有的搜查引擎。不同于基于关键词搜查的传统搜查引擎,常识图谱可用来更好地查问复杂的关联信息,从语义层面了解用户用意,改良搜查品质。比如在Google的搜查框里输入科比的时刻,搜查结果页面的右侧还会出现科比相关的信息比如出世年月,家庭状况等等。

在常识图谱里,咱们通罕用“实体(Entity)”来表白图里的节点、用“相关(Relation)”来表白图里的“边”。实体指的是理想环球中的事物比如人、地名、概念、公司等,相关则用来表白不同实体之间的某种咨询,比如人-“寓居在”-北京、张三和李四是“好友”等等。

经过上方这个例子,读者应该对常识图谱有了一个初步的印象,其实质是为了示意常识,从实践运行的角度登程其实可以繁难地把常识图谱了解成多相关图(Multi-relational Graph)。

常识图谱的示意

那什么叫多相关图呢? 图是由节点(Vertex)和边(Edge)来构成,但这些图通常只蕴含一种类型的节点和边。但雷同,多相关图普通蕴含多种类型的节点和多种类型的边。比如下图由于图里蕴含了多种类型的节点和边。这些类型由不同的色彩来标志。

当一个常识图谱领有属性时,咱们可以用属性图(Property Graph)来示意,如上图,科比和凡妮莎是夫妻,他们的结婚期间是2001年到2020年,其中结婚期间就可以作为相关的属性,相似的,科比也有自己的属性,比如性别、出世日期等。这种属性图的表白很贴近理想生存中的场景,也可以很好地形容业务中所蕴含的逻辑。

除了属性图,常识图谱也可以用RDF来示意,它是由很多的三元组(Triples)来组成。RDF在设计上的关键特点是易于颁布和分享数据,但不允许实体或相关领有属性,假设非要加上属性,则在设计上要求做一些修正。目前来看,RDF关键还是用于学术的场景,在工业界咱们更多的还是驳回图数据库(比如用来存储属性图)的方式。

常识图谱关键有两种存储方式:一种是基于RDF的存储;另一种是基于图数据库的存储。RDF一个关键的设计准则是数据的易颁布以及共享,图数据库则把重点放在了高效的图查问和搜查上。其次,RDF以三元组的方式来存储数据而且不蕴含属性信息,但图数据库普通以属性图为基本的示意方式,所以实体和相关可以蕴含属性,这就象征着更容易表白理想的业务场景。

常识抽取

常识图谱的体系架构是其指构建形式结构,如下图所示。常识图谱的构建环节要求随人的认知才干始终降级迭代。

所谓的静态相关图谱,象征着咱们不思索图谱结构自身随期间的变动,只是聚焦在常识图谱结构上。但是,咱们也知道图谱的结构是随期间变动的。

在上方的图中,咱们给出了一个常识图谱T时辰和T+1时辰的结构,咱们很容易看出在这两个时辰两边,图谱结构(或许局部结构)出现了很显著的变动。那怎样去判别这些结构上的变动呢? 感兴味的读者可以关注我,前面会继续降级常识图谱相关技术栈,本文先不做过多探讨。

回到常识图谱的体系架构那张图,常识图谱的构建是后续运行的基础,而且构建的前提是要求把数据从不同的数据源中抽取进去。关于垂直畛域的常识图谱来说,它们的数据源关键来自两种渠道:一种是业务自身的数据,这局部数据通常蕴含在公司内的数据库表并以结构化的方式存储;另一种是网络上地下、抓取的数据,这些数据通常是以网页的方式存在所以是半结构/非结构化的数据。

前者普通只要要繁难预处置即可以作为后续AI系统的输入,但后者普通要求借助于人造言语处置等技术来提取出结构化信息。比如在上方的搜查例子里,科比和凡妮莎的相关就可以从非结构化数据中提炼进去,比如维基百科等数据源。

信息抽取的难点在于处置非结构化数据。从一段非结构化的文本中,要求抽取出实体、相关和属性。例如下图是从维基百科拿到的科比文本信息:

要从海量文字中,构建出相似文章扫尾的那种常识图谱,要求触及几个方面的人造言语处置技术:

这种环节称之为实体命名识别,这是一项相对比拟成熟的技术,有一些现成的工具可以用来做这件事情。其次,咱们可以经过相关抽取技术,把实体间的相关从文本中提取进去,对比实体“科比”和“宾夕法尼亚洲费城”之间的相关为“出世于”等等。

另外,在实体命名识别和相关抽取环节中,有两个比拟辣手的疑问:一个是实体一致,也就是说有些实体写法上不一样,但其实是指向同一个实体。比如“科比·比恩·布莱恩特”和“科比”外表上是不同的字符串,但其实指的都是科比这团体,要求兼并。

实体一致不只可以缩小实体的种类,也可以降落图谱的稠密性(Sparsity);另一个疑问是指代消解,也是文本中出现的“他”, “它”, “她”这些词究竟指向哪个实体。

实体一致和指代消解疑问相关于前两个疑问更具备应战性。

大规模常识库的构建与运行要求多种自动信息处置技术的允许。经过常识抽取技术,可以从一些地下的半结构化、非结构化的数据中提取出实体、相关、属性等常识因素。

经过常识融合,可消弭实体、相关、属性等指称项与理想对象之间的歧义,构成高品质的常识库。常识推理则是在已有的常识库基础上进一步开掘隐含的常识,从而丰盛、裁减常识库。散布式的常识示意构成的综合向量对常识库的构建、推理、融合以及运行均具备关键的意义。

常识图谱的搭建

首先要求说明的一点是,搭建一个常识图谱系统最关键的外围在于对业务的了解以及对常识图谱自身的设计,这就相似于关于一个业务系统,数据库表的设计尤其关键,而且这种设计相对离不开对业务的深化了解以及对未来业务场景变动的预估。 当然,在这里咱们先不探讨数据的关键性。

一个完整的常识图谱的构建蕴含以下几个步骤:

关于定义详细业务疑问,要明白的一点是,关于自身的业务疑问究竟需不要求常识图谱系统的允许。由于在很多的实践场景,即使对相关的剖析有必定的需求,实践上也可以应用传统数据库来成功剖析的。所以为了防止经常使用常识图谱而选用常识图谱,以及更好的技术选型,以下给出了几点总结,供参考。

下一步就是要确定数据源以及做必要的数据预处置。在这里我只说明的一点,并不是一切相关的数据都必定要进入常识图谱,关于这局部的一些决策准则在后续的文章中会有比拟详细的引见。

常识图谱的设计是门艺术,作为程序媛,我把它交给更专业的人员。存储上咱们要面临存储系统的选用,但由于咱们设计的常识图谱带有属性,图数据库可以作为首选。但至于选用哪个图数据库也要看业务量以及对效率的要求。

假设数据量特意宏大,则Neo4j很或许满足不了业务的需求,这时刻不得不去选用允许准散布式的系统比如OrientDB, JanusGraph等,或许经过效率、冗余准则把信息寄存在传统数据库中,从而缩小常识图谱所承载的信息量。 通常来讲,关于10亿节点以下规模的图谱来说Neo4j曾经足够了。

做完这些,就可以到来咱们最相熟的环节,启动运行的开发(撸代码)了。

常识图谱的运行

常识图谱运行的前提是曾经构建好了常识图谱,也可以把它以为是一个常识库。当咱们口头搜查的时刻,就可以经过关键词提取以及常识库上的婚配可以间接取得最终的答案。

这种搜查方式跟传统的搜查引擎是不一样的,一个传统的搜查引擎它前往的是网页、而不是最终的答案,所以就多了一层用户自己挑选并过滤信息的环节。

常识图谱的运行关键集中在搜查与介绍畛域:

在语义搜查这一块,常识图谱的搜查不同于惯例的搜查,惯例的搜查是依据keyword找到对应的网页汇合,而后经过page rank等算法去给网页汇合内的网页启动排名,而后展现给用户;基于常识图谱的搜查是在已有的图谱常识库中遍历常识,而后将查问到的常识前往给用户,通常假设门路正确,查问进去的常识只要1个或几个,相当精准。

问答系统这一块,系统雷同会首先在常识图谱的协助下对用户经常使用人造言语提出的疑问启动语义剖析和语法剖析,进而将其转化成结构化方式的查问语句,而后在常识图谱中查问答案。

通常上的几点倡导

首先,常识图谱是一个比拟新的工具,它的关键作用还是在于剖析相关,尤其是深度的相关。所以在业务上,首先要确保它的必要性,其实很多疑问可以用非常识图谱的方式来处置。

常识图谱畛域一个最关键的话题是常识的推理。而且常识的推理是走向强者工自动的必修之路。但很遗憾的,目前很多语义网络的角度探讨的推理技术(比如基于深度学习,概率统计)很难在实践的垂直运行中落地。其实目前最有效的方式还是基于一些规定的方法论,除非咱们有十分宏大的数据集。

最后,还是要强调一点,常识图谱工程自身还是业务为重心,以数据为中心。不要低估业务和数据的关键性。假设本篇对你有协助,点个赞相互激励一下吧!

参考:

作者:臧远慧

简介:到任于中科星图股份有限公司(北京),研发部后端技术组。团体长于 Python/Java 开发,了解前端基础;熟练把握 MySQL,MongoDB,了解 Redis;相熟 Linux 开发环境,把握 Shell 编程,有良好的 Git 源码治理习气;知晓 Nginx ,Flask、Swagger 开发框架;有 Docker+Kubernetes 云服务开发阅历。对人工自动、云原生技术有较大的兴味。

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://clwxseo.com/wangluoyouhua/8195.html

猜你喜欢

热门资讯

关注我们

微信公众号