高原植物知识图谱系统的设计与实现
2022-12-08史珂轩焦自程
史珂轩,焦自程
(西藏大学信息科学技术学院,拉萨 850000)
0 引言
随着国内的全面脱贫以及交通运输业的快速发展,高原地区的特殊地理风貌逐渐向内地民众揭开了神秘的面纱,但是对青藏高原地区特有的高原植物进行调查后的结构所知甚少。因为其种类繁多、分布疏散、形态相似等特点,使得高原植物的分析和辨识具有了一定的难度,让非专业人士难从下手[1];以至于近些年,一些珍稀的高原植物因得不到有效的生态保护,导致其消亡于历史长河中。至今为止,国内外尚未有较为先进的高原植物识别系统以及较为完整的高原植物知识图谱统,而现有的国内外高原植物图谱系统检索冗余,特点不够鲜明。虽然对于高原植物的囊括与介绍比较完整,但是缺乏检索的直接性,最新物种的更新进度较为缓慢。此外,国内现有的一些植物图谱和识别系统,没有显著的识别特点,多是针对生活中常见的普通、易辨认的植物种类,没有对高原植物做一个具有特殊地域性、特殊特征识别的内容整理,不能满足大多数用户的需求[2]。
基于以上现象设计了一款能够精确、简明索引高原植物,按植物种类进行划分,运用高原植物特征进行植物识别等多个功能的高原植物知识图谱系统,促进高原植物的保护[3]。
1 平台选用框架技术介绍
在平台的前后端框架技术方面,后端开发选用了Flask框架,主要为前端提供数据接口及服务器支撑;后台管理模块和前端模块选择了BootStrap,实现了数据及页面视图的双向绑定更新。
1.1 Flask介绍
Flask是一个采用Python编写的轻量级Web应用框架。其WSGI工具箱采用Werkzeug,模板引擎则使用Jinja2。Flask使用BSD授权。其没有默认使用的数据库、窗体验证工具。对于大多数小型网站的开发,使用SSH(Struts+Spring+Hibernat的一个JavaEE集成框架)即可以满足需要。和其他轻量级框架相比,Flask框架有更好的扩展性,这是其不可替代的的主要原因[4]。
1.2 BootStrap介绍
Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton基于HTML、CSS、JavaScript合作开发的简洁、直观、强悍的前端开发框架。Bootstrap提供了优雅的HTML和CSS规范,即是由动态CSS语言Less写成。Less是一个CSS预处理器,使CSS具有动态性,并能够很方便地获取数据的更新,实现页面视图与数据模型的交互[5]。
2 平台的设计与实现
2.1 平台总体设计
平台使用MVC的编程模式和前后端分离的设计方式进行开发。对于前端,采用BootStrap框架将系统的各个可视化部分设计为一个个组件,通过具有相似功能的模块直接调用组件就可以起到相同的效果,降低了代码的复用性,节约开发的时间成本,也有利于平台内容的动态实现。对于后端,使用Flask框架做整合,并在WSGI中结合Neo4j图数据库,实现对数据的增删改查。
系统的整体结构如图1所示,其中,将可视化后的知识图谱展示给用户,主要是通过首页的高原植物简介来完成,用户可以大致了解高原植物的物种多样性、使用价值以及保护意义;用户可以通过图谱的总体展示来了解每种植物的门类、各植物间的相互联系和各植物的具体属性;植物检索可以帮助用户认识到具体植物的图像信息、分布信息、医学属性等。面向后台管理员的主要功能有图数据库中的关系数据、节点数据、属性数据以及通过可视化接口实现对系统内容的动态增删改查。
2.1.1 用户模块
用户进入图谱首页后可以看到高原植物的起源与历史,大致认识到高原植物的重要意义、濒危程度以及生态保护的重要性。用户可以看到图谱的节点、关系和属性图示。在植物检索模块,用户可以根据自己的需求进行检索,以获取所需的具体植物信息。
2.1.2 后台管理模块
管理员可以通过系统的后台管理实现对知识图谱中的植物图示进行增删改查的操作;可以根据植物种类的类别模块进行总体信息更新,也可以对某一具体植物信息进行操作,并根据不同的需求分配不同的权限以此实现对不同数据信息的更新。
2.2 图数据库设计
本系统采用Neo4j图数据库,为了更好、更高效地描述实体之间的关系,图数据事务的设计严格遵循ACID性质,保证其原子性、一致性、隔离性和永久性的统一[6]。系统的图数据库如图2所示。
系统根据图1的整体设计得出的数据库设计见表1。
表1 数据库设计
2.3 重要技术实现
2.3.1 数据获取
知识图谱的数据获取主要有两种方式:一是半公开或者公开的数据集;二是抓取网络上公开的相关数据。系统结合两种方式,以公开数据集为主,以抓取网络数据为补充,形成本系统的数据来源。引用openkg“大规模1.4亿中文知识图谱开源下载”的数据集,对其进行筛选获得主要数据,并对“中国植物志”中的半公开数据进行抓取作为数据的补充来源,因此确保了数据的完整性。
2.3.2 信息抽取
信息抽取主要涵盖了实体抽取、关系抽取和属性抽取。对于从openkg中获取的公开数据集,通过对其使用正则表达式(re函数库)进行简单的数据筛选,就获得了系统图谱所需的候选知识单元;对于自行抓取的数据信息,采取Python中 的NumPy、Pandas、Matplotlib、Scipy等数据处理函数库进行数据的分析与处理,得到一系列离散的命名实体和实体间的关联关系[7]。
2.3.3 知识融合
知识融合主要关键技术包括指代消解、实体消歧、实体链接和知识合并。通过信息抽取获取的信息个体之间是扁平的,因此个体之间缺乏层次性和逻辑性,并且还存在冗余的信息碎片[8]。因此,需要知识融合技术将多个知识个体进行整合,从而形成知识库。通过设立encode_onehot方法对标签进行编码,对上述处理后的数据按照植物学的界门纲目科属种进行分类,同时对基于“实体-关系-实体”的三元组数据进行数据整合,这只是合并过程中对三元组中的顶点、边进行任意多属性的补充,从而形成最后的CSV数据文件,即property graph。
2.3.4 知识加工
知识加工主要包含以下三个方面:本体构建、知识推理和质量评估。将系统经过上述步骤处理的知识进行结构化、网络化,从而获得完整的知识体系并确保了知识库的质量。将植物数据三元组中的节点按照植物类别和具体植物进行本体的构建,以此获得本体的相似性。在知识图谱的雏形构建完成后,根据其自身属性和邻居信息对后续节点信息进行节点分类,通过知识推理的方法获取更为完整的植物知识图谱系统。
3 结语
主要论述了基于neo4j图数据库和Flask框架的一个高原植物知识图谱系统的设计与实现,重点介绍了项目的总体结构设计以及图数据库的知识库设计等内容。通过采用知识融合、知识推理的技术来获取完整、高效的知识库,最后通过BootStrap框架对高原植物知识库进行可视化显示,基本达到了最终的目标。