基于Neo4j图数据库的课程体系知识图谱系统设计与实现

2018-01-08 20:30肖庆都屈亮亮侯霞
电脑知识与技术 2017年36期
关键词:知识图谱

肖庆都 屈亮亮 侯霞

摘要:为了解决课程大纲课程编写不规范的问题,并梳理课程之间的关系,使用JAVA技术与Neo4j图数据图设计并实现了一个知识图谱系统,可以发现课程大綱之间存在的问题,以及在知识图谱中快速搜索课程信息。

关键词:JAVA;图数据库;知识图谱

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)36-0130-03

1 背景

关系型数据库长期以来一直占市场主流。目前主流关系型数据库管理系统有:SQL Server、MySQL、Oracle等。随着网络应用程序的规模日渐变大,数据形式更加多样化,关系型数据库在数据建模和存储中的一些缺陷和问题随之凸显而来。真实世界中很多数据关系是图形的,图数据库可以更好地描述此类数据[1]。例如Neo4j就是一种图形数据库管理系统。

课程大纲由于人工编写的原因,会存在一些问题。同时学生从课程单中很难清晰地梳理课程体系的关系。针对这类问题,本文提供了一种解决方案,基于Neo4j数据库,使用JAVA编程语言,构建课程体系的知识图谱系统,可以更加直观地展示各个课程之间关系,并发现大纲中存在的问题。在并对特定节点的前驱进行查询并展示,替代手工查找,更加节省时间,便于对所需内容的快速获取。

2 相关概念

在图计算中,基本的数据结构表达式是:[G=V,E,V=vertex(节点),E=edge(边)] 。图数据库中数据模型主要以节点和关系(边)来体现[2],也可以处理键值对。数据具有如下特征:

l 包含节点和边

l 节点上有属性(键值对)

l 边有名字和方向,并总是有一个开始节点和结束节点

l 边也可以有属性

Neo4j数据库是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。具有以下优点:

l 自带易于学习的查询语言(名为Cypher)

l 不使用schema,可以满足任何形式的需求

l 相比关系型数据库,查询速度要快上很多

l 实体与关系结构非常自然地切合人类的直观感受

l 支持JAVA进行操作

l 提供可视化查询控制台

3 系统总体设计

系统设计目标:构建一个课程体系的知识图谱,数据存储在图数据库中,界面展示知识图谱,并可以根据特定的节点查询所需内容。

系统设计分为数据提取,数据存储,知识图谱可视化及查询。主要处理流程如图1所示,包括如下步骤:

l 数据准备和提取:准备Word形式的课程大纲和存储课程性质(如必修、选修等)的Excel文件;使用JAVA语言自动化抽取Word,Excel中相应信息,并将Word中文档信息与Excel文档中的信息进行匹配;

l 数据存储:根据抽取信息构建课程体系的知识图谱,存储到图数据库中;

l 图谱的可视化及查询:界面展示知识图谱,并可基于图谱进行课程关系的查询。

4 系统主要模块设计

本节将给出系统的主要模块的相关设计。

4.1 数据抽取

数据抽取是系统中最关键的基础部分,对Word,Excel文档进行数据自动化提取以及规范化。Word文档数据抽取主要对表格处理,抽取课程名称,先修课程。抽取得到的内容需要进行相应处理,对于字符的大小写以及特殊字符处理,如将所有的英文字符全部规定为大写字符,以及所有含有特殊字符的数据处理为英文的特殊字符,例如:中文的括号、逗号等。Word课程大纲文档结构如图2。

4.2 数据存储

数据存储首先需要将数据处理完毕,构成知识图谱。知识图谱在数据库中存储结构的示意图如图4所示。

数据类型分为必修,选修,以及未匹配三种类型,数据节点颜色不同,数据类型不同,更加直观展示节点之间的关系以及节点的信息,便于进行查找节点之间的关系。

单个数据节点的存储结构:节点可拥有不同属性值,节点的颜色会随type类型的变化而变化。由于数据库的特殊性,可以创建两个除ID之外完全相同的节点,在创建节点时尤其要注意字符的处理。

数据库中信息节点可以文本类型查看,通过文本类型,可更加直观展示单个节点的所包含的信息。

由于抽取的数据以及存储的数据为中文信息,在图数据库中进行存储时,要特别注意的是中文的字符的长度,特殊字符的中英文区别,否则将会创建多个相同的节点。造成知识图谱的混乱。

存储数据时首先要先检查所要创建的节点以及关系在数据库中是否存在,图数据库的特殊性在于如果不做事先处理,节点之间的关系可以存在多个关系,以及同样的节点可以存在多个,最终造成图谱的混乱,达不到系统的设计要求。

4.3 知识图谱展示以及查询

知识图谱展示需要首先将图数据库中节点信息抽取,使用插件将信息进行解析,展示在界面中[3]。在界面中输入特定节点信息,查询与之相关的所有前驱节点,并展示。

查询算法设计:

1) 输入节点名称n

2) 节点n在数据库中存在,否则跳转步骤12

3) Rset为空(Rset为与n相关节点的结果集),否则跳转步骤5

4) 输出节点n的信息

5) list集合存储与n相关节点名称

6) list不为空,否则跳转步骤12

7) 遍历list集合,对list中每个元素,查询得到结果集Rset2

8) 移除当前list中当前查询的节点名称

9) 结果集Rest2不为空,否则跳转步骤6

10) 继续将与节点相关的元素添加到list集合中

11) 输出节点信息,跳转到步骤6

12) 结束

该算法采用递归方式,对输入特点节点进行查询与之相关的节点,从而达到对特定节点进行查询与之相连的所有节点的目的。算法中关键部分在于查询到一个节点相连的所有节点,如何对这些节点接着进行查询的问题。该算法采用list集合,存储与节点相连的所有节点,加入集合中。对集合进行遍历,查询集合中每个节点的信息,并从集合中删除该节点。算法关键流程如图5所示。

5 系统的实现

5.1 抽取数据的技术

Jacob是Java与COM组件桥接的缩写,即JAVA-COM Bridge。通过使用Jacob类库,我们可以很方便地在Java程序中调用COM自动化组件[4]。

Word中以表格形式存储课程名称,先修课程信息。表格有一定的规范性,只需要对表格特定位置进行操作,即可获取信息,将信息存放在HashMap中,以课程名称作为键值,先修课程进行规范化处理后,以List集合整体作为HashMap的值。由于HashMap的存储特性,进行存储过程中首先检查HashMap中是否存在相同的键,如果存在,即比较其值,选择存储。不存在相同的键,直接存储。

在抽取Excel表中信息时,首先针对Excel表进行处理,保证课程名称无重复信息,Excel表的规范性,只需要对特定表格进行处理,即可得到相应的课程信息,同样使用HashMap进行存储课程名称-课程类型。

使用Jacob相关方法对Word以及Excel文档进行操作,达到对数据进行抽取以及处理的目的[5]。

5.2 数据展示的技术

数据展示采用D3.js插件来显示图数据中数据节点以及节点之间的关系[6],D3.js是一个JavaScript库,它可以通过数据来操作文档。D3.js可以通过使用HTML、SVG和CSS把数据鲜活形象地展现出来。

为了便于Neo4j和D3.js的数据交互,采用JSON格式形式进行前后台的数据交互[7],如

{source:"1",target:”2”, type:”选修”,type2:”必修”,rela:”先修”}

使用插件对JSON数据进行解析,得到源节点,目标节点,源节点的类型,目标节点的类型,源节点与目标节点直接的关系这些信息。D3.js通过解析这些信息进行图谱的可视化[8]。

6 实验结果

通过对Word和Excel文档进行信息抽取,从Word中获取到课程信息,前驱课程即课程之间的关系,从Excel中获取课程名称和课程类型,将课程信息进行比对,得到课程名称,课程类型以及课程之间的关系即前驱。在数据库中构建课程知识体系图谱,知识体系图谱如图6所示。

针对课程知识体系图谱可以查询到指定课程的前驱课程,输入指定课程名称例如:计算机网络。查询结果如图7所示。

7 结束语

本篇文章主要介绍了从最初的设计到最终实现知识图谱系统的相关内容,图谱不仅仅可以用在构建知识体系图谱,可以运用到家庭图谱、交通网络、社交网络等等,图谱的应用较为广泛,生活中的方方面面都可以使用图谱。构建知识图谱来发现知识体系中存在的问题,并进行加以解决,通过知识图谱更加快捷地查找到所需要的内容,以及发现节点与节点之间的关系。

通过页面展示与数据库展示可以快速发现数据之间的关系以及存在的问题,页面展示可以快速查询所需节点与之相关的信息。

参考文献:

[1] 姜洋, 彭智勇, 彭煜玮. 基于图数据库的在线族谱编录系统[J]. 计算机应用, 2015, 35(1):125-130.

[2] 程耀东, 赵建昌, 徐军. 图形数据库应用技术研究[J]. 工程图学, 2006, 27(1):143-148.

[3] 宋海军. 基于Web的数据库检索系统的实现[J]. 中国科技信息工程论坛, 2005(5):96.

[4] 李瑞, 李永刚. JAVA中基于JACOB的COM 组件调用研究[J]. 微计算机信息, 2007 , 23(15):168-170.

[5] 王春明, 朱晓辉, 陆天捷. 基于 JACOB 的 Word 文檔自动生成技术研究[J]. 南通职业大学学报, 2012 , 26(1):77-80.

[6] 张运良, 张兆锋, 张晓丹, 等. 使用D3.js的知识组织系统Web动态交互可视化功能实现[J]. 现代图书情报技术, 2013, 29(7):127-131.

[7] 陈卫卫, 王艳. 基于NoSQL数据库的通用数据存储结构的设计方案[J]. 价值工程, 2012, 31(26):191-192.

[8] 权鑫. 基于D3.js的数据可视化系统框架设计与实现[D]. 北京: 北京交通大学 , 2016.

猜你喜欢
知识图谱
从《ET&S》与《电化教育研究》对比分析中管窥教育技术发展