杨云飞,穗志方
(北京大学 计算语言学教育部重点实验室,北京 100871)
知识图谱通过知识抽取、知识融合、知识加工等技术将互联网中海量的非结构化文本数据资源组织为结构化的复杂语义网络,为智能搜索、自动问答、个性化推荐等应用提供重要的知识基础。知识图谱一般以RDF格式或者在图数据库中进行存储,使用SPARQL或Cypher语言进行查询,对于这些语言广泛的通用领域或垂直领域的非专业人员,难以直接理解和使用,知识图谱可视化利用图形化手段将知识图谱中的三元组结构信息表示为更直观、形象的图形结构,便于非专业用户使用并理解知识图谱。
医学是知识图谱在垂直领域最受关注的研究方向之一,医学文本数据具有专业性高、关系复杂、类型繁多等特点,这给如何能够直观、形象地将医学知识图谱可视化带来一定挑战。现有的知识图谱可视化方法主要是通过web网页或图形化软件将知识图谱中的实体表示为图形中的点(圆形或其他图形),关系表示为点之间的连边。这种方法将知识图谱建模为二维平面上的关系图,具有以下几点不足: ①医学知识图谱中不仅包含简单的三元组关系,还包括丰富高质量的实体之间的层级分类体系,这种层级结构更直观的表示方法是树状结构;②知识图谱是复杂异构的多维网状结构,并非所有节点都在同一个平面上,仅使用二维可视化方法无法捕捉这一特性;③二维平面图形在展示规模较大的稠密知识图谱时存在节点之间的拥挤重叠问题;④非结构化的医学资源和数据在源源不断地增加,当查询的知识不在知识图谱中并且拥有非结构化文本时,希望系统能够通过医学实体识别和关系抽取等过程将非结构化数据处理为结构化的知识。
为了解决简单的二维平面关系图在可视化医学知识图谱时存在的不足,本文提出一种多视图、多维度、交互式的知识图谱可视化方法。对于医学概念的层级分类结构,我们使用树状结构进行可视化。对于实体之间的三元组关系,可以根据其关系图的结构和复杂程度使用一维(One-dimensional, 1D),二维(Two-dimensional,2D)或三维(Three-dimensional,3D)可视化展示,一维视图用来展示具有链状结构的简单关系;二维视图和现有方法一样,用平面关系图展示实体之间的关系;对于复杂稠密的知识图谱,可以使用三维视图进行展示。可以通过旋转三维空间中的图形看到不同的二维主视图形,能够缓解节点之间的拥挤和重叠问题。同时,为了提高知识图谱可视化的真实感和交互体验,我们还实现了虚拟现实(Virtual Reality,VR)视图和增强现实(Augmented Reality, AR)视图。对于未经处理的非结构化数据,我们提供从非结构化数据到结构化数据的交互式可视化系统,用户只需要将非结构化文本粘贴到文本框,经过医学实体识别、关系抽取等步骤直接将抽取出的三元组集合的可视化分析结果展示到请求页面。
本文的主要贡献列举如下:
(1) 提出并实现了多视图的医学知识图谱可视化方法,包括实体的树状层级结构分类视图;实体之间建立广泛链接的Echarts视图;简洁直观的静态2DCanvas视图等。
(2) 提出并实现了多个维度的知识图谱可视化方法,包括WebGL版本的1D、2D和3D视图,同时借助当前流行的VR和AR图形技术,实现WebGL版本的VR和AR视图等更加真实形象的可视化知识图谱,提高用户阅读和使用知识图谱的体验。
(3) 提供了从非结构化数据到结构化数据的交互式知识图谱可视化展示和分析视图,不仅能够查询已有数据,还可以灵活地可视化未处理的数据。
(4) 将以上可视化方法应用于中文医学知识图谱CMeKG(1)http://cmekg.pcl.ac.cn/,可以在线访问预览,同时以上方法也可以适应于其他知识图谱数据。
知识图谱是由Google于2012年提出的概念[1],最早用于谷歌搜索引擎为查询提供智能化答案,现在知识图谱用来描述实体与实体之间关系的结构化知识集合,以实体间的二元关系为例。其表示形式为(s,p,o),其中s、p、o分别表示主语、谓语和宾语。知识图谱主要分为通用型知识图谱和垂直型知识图谱,目前,研究者已经构建出若干大规模结构化知识图谱,代表性的有Freebase[2],谷歌知识图谱,YAGO[3],NELL[4]等,这些知识图谱中存储了大量的关系和事实,被广泛地应用于各种自然语言处理任务;垂直型知识图谱又称领域知识图谱,目前研究较为广泛的有金融知识图谱、医疗知识图谱等。
数据可视化是借助图形化手段对特定数据集中的数据用图形图像形式进行表示,从而阅读和分析数据并发现其中蕴含的有价值信息的处理过程[8]。其基本思想是将数据集中的每一个数据项作为单个图元素表示,大量的数据集构成数据图像[9]。知识图谱中的每个数据项一般用一个三元组表示,知识图谱可视化是用图形中的点和边分别表示知识图谱中的实体和关系,节点和边的相对位置布局主要使用力导向算法。
知识图谱可视化一般通过Web网页或图形化软件展示实体和关系之间的结构,常用的Web端可视化技术有WebGL[5]、HTML5 canvas[6]、SVG[7]等,常用的本体编辑及知识库获取软件为斯坦福大学医学院生物研究中心开发的Protégé[8],Protégé作为语义web的本体开发编辑平台,还通过丰富的插件实现本体可视化。
随着三维建模与视觉成像技术的快速发展,3D、VR和AR技术以其更加真实、立体的模拟现实环境的特性在影视、游戏等领域得到广泛应用,同时也逐渐应用到各种领域的数据可视化。杨等[9]将WebVR技术应用于医学影像等医学数据的可视化,增强了用户对三维医学数据可视化影像的感知;利用AR技术的仿真手术让操作者更加精准地定位和理解手术部位[10],AR地图导航实现实时模拟在真实环境中移动和指向[11]。3D可视化将图形建模在三维立体空间,更加符合人类的视觉感知,VR技术可以通过VR头戴式设备,例如,VR头盔、VR眼镜提供随视角动态变化、更加沉浸式的全场景可视化效果,AR技术则将虚拟可视化效果与现实环境相结合,数据图形与现实景象进行叠加,以实现更为真实的交互。
医学领域具有丰富的、多源异构的大规模医学文本数据资源,例如,临床指南、医学文献、诊疗规范、行业标准及互联网上的医学百科等。同时具有高质量的医学概念分类标准,代表性的有国际疾病分类体系ICD10[12]、药物分类系统ATC[13]、医学主题词表MeSH[14]等。知识图谱以其结构化、知识化和关联化等特性在医学领域具有广泛的应用前景。
相比于通用领域,医学领域术语具有更多的一词多义和多词一义性,例如,“四环素盐酸盐”既是一种有机化合物,又是一种抗生素。而英文术语“Hepatitis b”(乙肝)既用来表示“the disease of Hepatitis b”(乙肝病毒),也用来表示“hepatitis b vaccine”(乙肝疫苗)[15]。医学术语名词的多样性体现在一种医学实体往往有多种称呼,例如,西医中的热射病,日常生活中叫中暑,在中医中叫发痧,药品一般有商品名和通用名,而且商品名可能有多个,因为多个厂家都能生产销售某种药物。这些术语间的多对多特性在知识图谱可视化时需要通过同义词映射等方法表示。
我们将多视图、多维度的知识图谱可视化方法应用于CMeKG数据集,实现了医学知识图谱CMeKG可视化系统。CMeKG是基于大规模医学文本数据,以人机结合方式研发的中文医学知识图谱[16],包含疾病、药物、症状、检查诊疗技术及设备四个实体大类,临床症状、发病部位、药物治疗、鉴别诊断、适应症等三十余种常见关系类型,CMeKG数据集实体、关系及三元组数目统计如表1所示(2)CMeKG中还包含多元组关系,这里仅统计了三元组。
表1 CMeKG数据统计
CMeKG参考ICD[12]、ATC[13]、MeSH[14]等国际医学标准建立了实体的分类层级结构。以疾病类型实体为例,CMeKG中的疾病实体可以按照ICD10标准、就诊科室、常见病等不同分类标准构建结构不同的树状结构。实体层级可视化过程如图1所示。
图1 实体层级可视化流程
记知识图谱中的疾病集合为D,我们通过知识图谱中的ICD10编码关系获得D中疾病的ICD10编码,根据ICD10编码的层级结构依次获得其上层ICD节点。例如,对于疾病支气管肺癌,根据知识图谱中的三元组(支气管肺癌,ICD10,C34.9)获得其ICD10编码C34.9, 其上层节点为C34(支气管和肺恶性肿瘤),根据ICD10编码内的层级关系可以将疾病集合D组织为层级树,对于就诊科室和常见病分类,我们聘请医学专家以人机结合方式将疾病分类到其相应的就诊科室,并按照疾病的多发性等特征将其划分为常见疾病和其他疾病,对于无法继续往下层划分的节点集合,我们按照其首字母将其划分到26个不同的分类节点下,以便于检索使用。
我们使用jQuery树插件zTree(3)http://www.treejs.cn/v3/main.php#_zTreeInfo对实体的层级树进行可视化,实体分类层级可视化借鉴了Protégé的实体分类菜单风格,主要包括实体节点的折叠与展开,搜索、高亮、不同视图的切换,以及自动将当前节点滚动到可视区域等功能。其可视化效果如图2所示。
图2 实体层级可视化
设有实体集合E、关系集合R和属性集合V,知识图谱G可表示为E×R×(E∪V)的一个子集,即
G中的数据项记为三元组(s,p,o),其中
由于知识图谱往往规模较大,例如,代表性知识图谱Freebase[2]包含三元组数目约24亿,DBPedia[17]包含三元组数目约95亿,知识图谱可视化是主题相关的知识图谱中部分三元组构成的子集的可视化,本文中的知识图谱可视化问题定义为:
给定主语s*,以s*为主语的三元组集合记为S,则
知识图谱可视化是借助图形学中的图形元素将集合S中的三元组绘制成实体及属性之间的关系网络进行显示和交互的过程。
我们通过实体的树状结构或在搜索框中输入待可视化的实体s*,根据s*在知识图谱G中的位置查询出集合S,对集合S进行数据预处理生成节点数据和边数据,然后将节点数据和边数据传入可视化模块,可视化模块根据节点数据和边数据结构中各属性和配置的不同,将节点和边使用不同的颜色、形状、大小、布局在不同的位置显示出来。其整体流程如图3所示。
图3 医学知识图谱可视化流程图
2.3.1 节点数据和边数据
在可视化之前将查询出的三元组处理为节点集N和边集合E,每一个节点数据和边数据表示为包含多个键值对的字典,其中键表示属性,值表示属性取值,例如,对于三元组(病毒性感冒,临床症状及体征,头痛),其中的节点集合N和边集合E分别表示为:
每一个节点数据所包含的字段属性信息如表2所示, 表2中的字段信息对于部分可视化视图并非全部需要,但添加冗余字段并不影响节点的显示。对于边数据,其结构较为简单,属性定义如表3所示。
表2 节点数据结构字段信息
2.3.2 可视化层
可视化模块由多个子模块组成,每个子模块实现不同维度、 不同视图的知识图谱可视化。可视化模块包括以下五个子模块。
表3 边数据结构字段信息
ECharts视图: ECharts是百度开源的一个纯JavaScript可视化图表库[18],我们用其实现和实体层级分类相交互的知识图谱二维关系图,除了简单的可视化实体之间的关系,ECharts视图还提供了丰富的交互功能,例如,实体之间的链接与跳转,医学实体与UMLs之间的链接,知识图谱与实体分类层级的动态交互,其可视化效果如图4所示。
图4 ECharts二维可视化效果图
在Echarts视图中,其中心节点代表所查询的实体,连接同一节点的相同颜色节点代表相同的语义关系,圆形代表实体节点,可以链接到相应实体,方形代表属性值节点,底部是注明每种颜色的节点与中心节点之间所具有的语义关系的图例。
WebGL(1D, 2D, 3D)视图: WebGL是流行的3D web图形库,我们使用WebGL实现了知识图谱可视化的多维(1D, 2D, 3D)视图,1D视图将节点显示在同一条直线上,适应于单个三元组或具有链式结构的节点集合和边集合的显示,2D视图将所有节点显示在同一个二维平面上,适应于结构简单的平面结构知识图谱显示,3D视图将节点集合中的节点显示在三维空间,适用于复杂立体结构的知识图谱显示。
WebGL 1D视图显示效果如图5所示,图中所描述的知识为{中暑, 临床症状, 头痛},{头痛,并发症, 发热},{发热,药物治疗, 阿司匹林}, {阿司匹林, 不良反应, 厌食},其节点集合与边集合呈链式结构。
图5 WebGL 1D视图显示效果
WebGL 2D视图, 将图形的节点和边显示于同一个二维平面上,其显示效果如图6所示。
WebGL 3D视图,将知识图谱的网络结构显示在三维立体空间中,其显示效果如图7所示。
WebGL(1D, 2D, 3D)视图支持旋转、移动、缩放、点击等操作,鼠标悬停时显示节点名称。3D视图除了鼠标悬停,还将节点名称显示在指向该节点的边上。多维视图能够根据三元组集合的特点分别建模链式结构、平面结构和空间结构的知识图谱。
2DCanvas视图: 2DCanvas视图将知识图谱图形绘制于HTML5 Canvas容器,canvas标签是一个绘制图形的画布,可在画布上绘制文本、线条、矩形、圆形等,其显示效果如图8所示。
图6 WebGL 2D视图显示效果
图7 WebGL 3D视图显示效果
图8 2DCanvas视图显示效果
VR视图: VR视图使用A-Frame进行WebVR效果的渲染,A-Frame是一个用来构建虚拟现实(VR)应用的网页开发框架,支持VIVE、GearVR、Daydream等主流头戴式设备沉浸式交互虚拟现实体验,同时也适应于在没有VR专业设备的计算机浏览器和智能手机上通过滚动鼠标或转动智能手机来达到切换不同视角和场景的效果。VR视图可视化效果如图9所示。
图9 VR视图的可视化效果
AR视图: AR视图使用A-Frame和AR.js进行AR效果的渲染,将虚拟的可视化图形与现实环境进行叠加。在AR视图下,用户能够通过计算机或移动设备摄像头的位置、方向实时地与知识图谱可视化图形进行交互,其可视化效果如图10所示。
图10 AR视图的可视化效果
对于非结构化数据,我们实现了从非结构化数据到三元组结果的交互式工具及三元组的可视化。用户可以直接输入医学相关的非结构化文本、医学百科网站的url等。对于用户输入的非结构化数据,首先通过医学文本相关的知识抽取算法对文本中的实体和关系进行识别,抽取出文本中的结构化知识,并将其组织为三元组形式,然后使用ECharts方法对三元组进行可视化,其可视化效果如图11所示。
我们从可视化系统功能的丰富性和对知识图谱网络结构的表现力两个方面对可视化方法进行评估。对于功能的丰富性,我们选取几个代表性的医学知识图谱展示系统: 中医药知识图谱系统的中医临床知识图谱、中医养生知识图谱,以及医药卫生服务系统的疾病知识图谱,从具有实体层级分类、多视图、多维度、可搜索、节点之间可跳转、可缩放、可平移七个方面和本系统进行比较,比较结果如表4所示。
图11 非结构化数据自动结构化及可视化视图
表4 医学知识图谱可视化系统功能比较
对于网络结构的表现力,可以通过在相同页面上不同方法所能显示的图谱密度或不同方法显示相同密度的网络结构的可辨识度来衡量。图12是ECharts(2D)方法和本文提出的WebGL(3D)方法在显示稠密网络结构时的效果比较。
在图12中,使用ECharts 2D方法和WebGL 3D方法分别显示同一个节点数为100、边数为600的知识图谱,可以看出,2D(左)方法节点之间出现明显的拥挤重叠。
同时,我们还比较了几种不同的方法在同一页面不同的节点数目下的可辨识度,按照其可辨识程度划分为可辨识、拥挤和重叠三种定性等级,可辨识表示能较为清晰地分辨出每个节点(包括在旋 转 的条件下),拥挤表示节点之间难以分辨或有少量节点聚集并重叠,重叠表示节点之间出现大量重叠,大部分节点难以辨识,其结果如表5所示。
图12 2D效果和3D效果比较
表5 不同可视化方法的表现力比较
本文提出并实现了一种多视图、多维度的可视化方法,并将该方法应用于中文医学知识图谱CMeKG,实现了CMeKG的展示系统,与现有的二维平面可视化方法相比,多维度可视化方法能够适应不同复杂程度、不同空间结构的图数据,多视图的可视化提供了更丰富的交互功能,包括实体的层级结构,知识图谱的1D, 2D, 3D,VR AR效果显示,非结构化数据的处理,以及交互式可视化等。
通过多视图的可视化,使知识图谱结构的可读性更高,功能也更加丰富完整,能够让用户直观、有效地分析和理解知识图谱,进而发现更多蕴含的有价值的信息。然而目前不同视图的可视化方法之间的联系较为松散,同时功能存在重叠,且与所应用知识图谱耦合度较高。在未来的研究工作中,我们将从模块化、可移植性、可扩展、易使用、交互性、通用性等方面进一步探索知识图谱的可视化方法与实现。