技术思考:一片繁荣与满地鸡毛的知识图谱技术落地冷辨析

2021/11/09

以下文章来源于老刘说NLP

正文

知识图谱可视化是当前知识图谱的一个典型且最为落地的场景,这也是我们所看到的最多的应用之一。然而,就可视化而言,其是个复杂的系统,在功能设计,前后台交互,数据与用户之间需求之间的平衡等诸多问题上都有很多的坑,不容轻视。

知识图谱可视化,作为最落地,做摸得着,看得见的产品形态,实际上也可以作为一个垂直的点深入去做。本文围绕着知识图谱可视化场景中的常见形态、关键问题以及开源工具三个方面,结合自身的工作经验出发进行总结,供大家参考。

一、知识图谱可视化的常见形态

知识图谱通过关系边将节点进行关联,提供了一个可供游走、查询的路径。在这一条件下,基于路径的分析【包括单跳、多跳】是知识图谱关联分析的一个重要本质。因此,我们可以将知识图谱可视化的应用场景总结如下:

1、节点搜索与图谱展示

绝大多数图谱可视化或分析系统或软件都会以一个搜索输入框的方式作为入口开始图谱图谱可视化。

1)图谱搜索联想。用户输入某个实体名称,系统自动联想或推荐出下拉实体列表,用户点击实体后,自动查找出以该实体为中心的邻接节点。

2)图谱展开收起。进一步的,点击邻接节点后,还会涉及到一些诸如钻取的操作,以此扩展出下一层级的节点列表或者属性信息,如右侧作为卡片展示。在图谱量更大的时候。引入节点的折叠、收起与展开,通过这一操作保证整个页面的图谱展示能够保持在一个相对清爽的状态。在此基础上。还包括一些对节点图的拖拽等功能。

3)图谱类型筛选。经常的情况是,当关系和属性太多时,会增加属性筛选、关系筛选、实体类型筛选等功能。

2、节点的路径关联分析

节点的插座是以节点为出发点进行的展示,而上面也说到,知识图谱的价值在于关联。这一关联分析可以通过指定两个节点【头尾节点】,进行节点的全路径、指定路径或最短路径搜索。

1)全路径分析。指的是查找两个节点之间的所有路径,在图谱规模较大时,返回的路径会较多。

2)指定路径分析。通常是指定节点之间的路径深度,如一度、二度、三度或者六度,这相当于给定了一个参数,图谱通过调用后端接口,可以返回相应的

3)最短路径分析。最短路径,旨在找到给定两个节点之间的所有度数对少的路径结果。其实现方式是基于内置的一些最短路径算法来实现。这种方法也经常用于路径规划等可视化场景。

在完成路径搜索之后,可以通过高亮路径节点的方式进行展示,也可以钻取其中的子图进行保存这对于节点之间隐藏发现而言具有重要意义。

3、图谱数据的编辑管理

图谱数据的编辑管理在进行知识图谱检测与验证这一场景下使用较多。由于知识图谱可能存在一些错误的数据,需要更正,也可能是是作为一个类似于xmind思维导图的从零到有的一种知识填充形态。

1)图谱数据管理。通过对已有数据进行图谱可视化后,可以通过设置增删改查的按钮,提供节点名称编辑,节点属性编辑,节点删除等功能,也可以对关系边的名称或者属性进行处理。这个操作直接与底层的数据库进行处理,对于提升知识图谱的质量来说有重要意义。

2)图谱编辑工具。图谱编辑工具中可以提供图谱节点新增,图谱关系边新增,图谱名称或节点的修改等功能,这样一来提供一个可以自助构建图谱的工具,这可以直接用于诸如本体定义可视化配置、个人图谱工具等实用工具当中。

4、图谱数据与其他数据的混合展示单纯的图谱数据,有时候还太过于单薄,这时候,通常会配合其他数据进行混合展示。

例如,采用内置的一些图算法,进行图分析,如中心度计算,社区发现等算法,对原先的图进行计算,并在图上进行标记。

又如,配合一些图片,视频,地图,表格等其他数据信息进行展示,以提升数据分析的效果,并打通各个形态数据之间的孤岛,形成一个较为全息的数据地图。

又如,基于可视化图谱,对自动问答、决策方案等提供可视化的路径展示作为可解释路径的说明,这也是知识图谱在形式化可解释上所表现出的一个特性。

二、知识图谱可视化的关键问题

知识图谱可视化的本质是对节点和关系表为基础的图网络进行展示的过程,也就是说其操作单元实际上集中于对节点或关系边。

在拿到知识图谱数据进行图谱可视化操作时,会遇到许多典型的问题。我们一方面会遇到诸如数据量过大、客户机器性能不高、可视化操作复杂等实际问题。

总结来看,当前的图谱可视化任务包括以下几个关键问题,需要我们加以注意:

1、图谱节点与关系的合理布局

布局算法是进行图谱可视化的一个重要前提,针对组建好的网络,如何将节点位置进行合适的排列,从而形成一种用户友好的图谱布局方法十分重要。

当前存在多种布局方法,需要针对不同的网络选择与此相匹配的布局方法。例如,针对放射性的,可以采取胡一凡布局,针对具有层次特征的,可以采取层次布局,针对可以划分出较为明显的社群节点,可以采取类似力引导布局。

不过,就这个布局而言,其本质在于计算待展示图谱数据中每个节点在图谱中的对应的位置,为了生成这一位置,实际上随着数据量的增加,计算量是倍增的。而这个计算是放在后台执行还是放在前端执行是需要考虑到的。前端执行时,需要有较长的等待时间,并且对浏览器的消耗会比较大。

2、图谱节点与关系展示的合理限制

我们通常会遇到一个十分大的网络图谱数据,有的是几百万、几千万、甚至达到亿级别,而这种级别,无法进行全部展示,这与机器的性能和布局算法息息相关,正常的机器绘制出一个上万级别的图谱已经到达极限。

虽然,我们可以通过查询、筛选的方式来缓解这一问题,但对于一些超级节点来说,还需要考虑其他的因素。因此,在可视化的过程中,我们经常会采用图采样的方式进行处理。例如,简单的设置节点或者关系展示上限,或者对图数据采取预先的计算、筛选或者在可视化的时候采取分层下钻的操作。这就涉及到各种采样的方法,但采样的参数不好控制,很有可能采样出来的节点并不是用户所需要的节点,这确实比较尴尬。

3、图谱增量/全量渲染与子图保存

在图谱可视化的过程中经常会遇到新增节点或关系边的问题,这就需要我们采用合适的方式来控制可视化性能。例如,在常规的节点钻取操作中,会通过某一个节点引申出来多条新的节点或者新的节点关系边,这些节点边是要重新与旧图重新计算得到坐标信息完成整体的渲染,还是只渲染当前的,这就是全量与增量的问题。与增量相比,全量所需要的资源消耗是更多的。

此外,我们通常会遇到一些子图保存的需求,这一保存包括对当前可视化图的保存,也包括对底层原始数据的保存,而如果要在下次进行重新渲染出来,那么需要保存的除了底层数据,还包括底层数据的坐标等,这些在后台存储上,需要考虑清楚。

三、知识图谱开源可视化工具

知识图谱其实可以抽象为力导向图(Force-Directed Graph),当前实现力导向图的方案可以简单分为SVG和Canvas两种。

当前,已经陆续出现了许多优秀的知识图谱开源工具,并且支持这类方案。这对我们个人进行图谱可视化小规模试验以及企业项目级、产品级可视化产品的开发提供了一定的基础。

老刘就根据之前接触到的一些知识图谱可视化工具进行推荐。

1、D3.js

D3.js是一个用于根据数据操作文档的JavaScript库,强调Web标准,为您提供现代浏览器的全部功能,而无需将自己与专有框架联系起来,将强大的可视化组件和数据驱动方法结合到DOM操作中。

D3.js提供了关于图网络的不同图层样式可供个选择。老刘之前进行知识图谱可视化平台、包括学迹中的产业链可视化等,都是基于D3js开发。与Echarts、HighCharts、vis.js等大多数基于Canvas实现图形绘制不同,D3.js同时支持SVG和Canvas两种方案。不过,D3js提供的API较为底层,需要实现的代码较多,具有一定的准入门槛,而且对图谱而言,每个节点、边都有对应的DOM元素,当节点数很多的时候,对内存的压力较大。

地址: https://observablehq.com/@d3/gallery

2、Vis.js

Vis.js 是一个动态的基于浏览器的可视化库,特点是易用,并与这些数据进行交互操作。该库包含DataSet、Timeline、Graph等插件类型。

老刘关于知识图谱几个项目的可视化上,都使用的是vis.js,对于小规模的个人试验来说,十分简便。

地址: https://visjs.github.io/vis-network/examples/

3、Echarts

Apache ECharts,简称echarts,E是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts最初由百度团队开源,并于2018年初捐赠给Apache基金会,成为ASF孵化级项目。echarts中内置了关于图可视化方的插件,如力引导布局等,也是一个比较简单的图谱可视化开源库。

地址: https://echarts.apache.org/examples/zh/editor.html?c=graph-force

4、AntvG6

AntV 是蚂蚁金服全新一代数据可视化解决方案,推出了G2、G6等可视化插件。其中,AntvG6是由蚂蚁开发的一个简单、易用、完备的图可视化引擎,G6的6来自于《六度分隔理论》,表达了对关系数据,关系网络的敬畏。它在高定制能力的基础上,提供了一系列设计优雅、便于使用的图可视化解决方案。能帮助开发者搭建属于自己的图进行图分析应用或者图编辑器应用。AntvG6代码量开发量小,嵌入较为简便,相关的官方文档也较全。

地址: https://www.yuque.com/antv/g6/intro

四、总结

知识图谱可视化,作为最落地,做摸得着,看得见的产品形态,实际上也可以作为一个垂直的点深入去做。

本文围绕着知识图谱可视化场景中的常见形态、关键问题以及开源工具三个方面,结合自身的工作经验出发进行总结。

与设计文本标注平台一样,也与构建知识图谱一样,我们在设计知识图谱可视化,要有一个工程系统观的思想,考虑到数据、工程【前端与后端】之间的协调与平衡,结合自身业务需求,做最好的知识图谱可视化落地。

五、参考文献

1、https://cloud.tencent.com/developer/news/212291

2、https://zhuanlan.zhihu.com/p/99203785

Post Directory