收藏 分享(赏)

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

上传人:无敌 文档编号:148069 上传时间:2018-03-22 格式:DOC 页数:7 大小:83.50KB
下载 相关 举报
基于neo4j图数据库的课程体系知识图谱系统设计与实现.doc_第1页
第1页 / 共7页
基于neo4j图数据库的课程体系知识图谱系统设计与实现.doc_第2页
第2页 / 共7页
基于neo4j图数据库的课程体系知识图谱系统设计与实现.doc_第3页
第3页 / 共7页
基于neo4j图数据库的课程体系知识图谱系统设计与实现.doc_第4页
第4页 / 共7页
基于neo4j图数据库的课程体系知识图谱系统设计与实现.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、基于 Neo4j 图数据库的课程体系知识图谱系统设计与实现 肖庆都 屈亮亮 侯霞 北京信息科技大学计算机学院 摘 要: 为了解决课程大纲课程编写不规范的问题, 并梳理课程之间的关系, 使用 JAVA技术与 Neo4j 图数据图设计并实现了一个知识图谱系统, 可以发现课程大纲之间存在的问题, 以及在知识图谱中快速搜索课程信息。关键词: JAVA; 图数据库; 知识图谱; 作者简介:侯霞, 女, 天津人, 副教授, 研究方向为智能信息处理、知识图谱。收稿日期:2017-11-09基金:北京信息科技大学 2017 年人才培养质量提高经费 (5111723400) Received: 2017-11-

2、091 背景关系型数据库长期以来一直占市场主流。目前主流关系型数据库管理系统有:SQL Server、My SQL、Oracle 等。随着网络应用程序的规模日渐变大, 数据形式更加多样化, 关系型数据库在数据建模和存储中的一些缺陷和问题随之凸显而来。真实世界中很多数据关系是图形的, 图数据库可以更好地描述此类数据1。例如 Neo4j 就是一种图形数据库管理系统。课程大纲由于人工编写的原因, 会存在一些问题。同时学生从课程单中很难清晰地梳理课程体系的关系。针对这类问题, 本文提供了一种解决方案, 基于Neo4j 数据库, 使用 JAVA 编程语言, 构建课程体系的知识图谱系统, 可以更加直观地展

3、示各个课程之间关系, 并发现大纲中存在的问题。在并对特定节点的前驱进行查询并展示, 替代手工查找, 更加节省时间, 便于对所需内容的快速获取。2 相关概念在图计算中, 基本的数据结构表达式是:G= (V, E) , V=vertex (节点) , E=edge (边) 。图数据库中数据模型主要以节点和关系 (边) 来体现2, 也可以处理键值对。数据具有如下特征:包含节点和边节点上有属性 (键值对) 边有名字和方向, 并总是有一个开始节点和结束节点边也可以有属性Neo4j 数据库是一个高性能的 NOSQL 图形数据库, 它将结构化数据存储在网络上而不是表中。Neo4j 也可以被看作是一个高性能的

4、图引擎, 该引擎具有成熟数据库的所有特性。具有以下优点:自带易于学习的查询语言 (名为 Cypher) 不使用 schema, 可以满足任何形式的需求相比关系型数据库, 查询速度要快上很多实体与关系结构非常自然地切合人类的直观感受支持 JAVA 进行操作提供可视化查询控制台3 系统总体设计系统设计目标:构建一个课程体系的知识图谱, 数据存储在图数据库中, 界面展示知识图谱, 并可以根据特定的节点查询所需内容。系统设计分为数据提取, 数据存储, 知识图谱可视化及查询。主要处理流程如图 1 所示, 包括如下步骤:数据准备和提取:准备 Word 形式的课程大纲和存储课程性质 (如必修、选修等) 的

5、Excel 文件;使用 JAVA 语言自动化抽取 Word, Excel 中相应信息, 并将 Word中文档信息与 Excel 文档中的信息进行匹配;数据存储:根据抽取信息构建课程体系的知识图谱, 存储到图数据库中;图谱的可视化及查询:界面展示知识图谱, 并可基于图谱进行课程关系的查询。图 1 课程图谱构建 下载原图4 系统主要模块设计本节将给出系统的主要模块的相关设计。4.1 数据抽取数据抽取是系统中最关键的基础部分, 对 Word, Excel 文档进行数据自动化提取以及规范化。Word 文档数据抽取主要对表格处理, 抽取课程名称, 先修课程。抽取得到的内容需要进行相应处理, 对于字符的大

6、小写以及特殊字符处理, 如将所有的英文字符全部规定为大写字符, 以及所有含有特殊字符的数据处理为英文的特殊字符, 例如:中文的括号、逗号等。Word 课程大纲文档结构如图 2。图 2 课程大纲文档的数据存储形式 下载原图Excel 文档结构总体分为课程名称, 课程类型。课程类型分为必修和选修两种类型。具体结构如图 3。图 3 Excel 课程文档的数据存储形式 下载原图4.2 数据存储数据存储首先需要将数据处理完毕, 构成知识图谱。知识图谱在数据库中存储结构的示意图如图 4 所示。图 4 数据节点样式 下载原图数据类型分为必修, 选修, 以及未匹配三种类型, 数据节点颜色不同, 数据类型不同,

7、 更加直观展示节点之间的关系以及节点的信息, 便于进行查找节点之间的关系。单个数据节点的存储结构:节点可拥有不同属性值, 节点的颜色会随 type 类型的变化而变化。由于数据库的特殊性, 可以创建两个除 ID 之外完全相同的节点, 在创建节点时尤其要注意字符的处理。数据库中信息节点可以文本类型查看, 通过文本类型, 可更加直观展示单个节点的所包含的信息。由于抽取的数据以及存储的数据为中文信息, 在图数据库中进行存储时, 要特别注意的是中文的字符的长度, 特殊字符的中英文区别, 否则将会创建多个相同的节点。造成知识图谱的混乱。存储数据时首先要先检查所要创建的节点以及关系在数据库中是否存在, 图数

8、据库的特殊性在于如果不做事先处理, 节点之间的关系可以存在多个关系, 以及同样的节点可以存在多个, 最终造成图谱的混乱, 达不到系统的设计要求。4.3 知识图谱展示以及查询知识图谱展示需要首先将图数据库中节点信息抽取, 使用插件将信息进行解析, 展示在界面中3。在界面中输入特定节点信息, 查询与之相关的所有前驱节点, 并展示。查询算法设计:1) 输入节点名称 n2) 节点 n 在数据库中存在, 否则跳转步骤 123) Rset 为空 (Rset 为与 n 相关节点的结果集) , 否则跳转步骤 54) 输出节点 n 的信息5) list 集合存储与 n 相关节点名称6) list 不为空, 否则

9、跳转步骤 127) 遍历 list 集合, 对 list 中每个元素, 查询得到结果集 Rset28) 移除当前 list 中当前查询的节点名称9) 结果集 Rest2 不为空, 否则跳转步骤 610) 继续将与节点相关的元素添加到 list 集合中11) 输出节点信息, 跳转到步骤 612) 结束图 5 算法流程图 下载原图该算法采用递归方式, 对输入特点节点进行查询与之相关的节点, 从而达到对特定节点进行查询与之相连的所有节点的目的。算法中关键部分在于查询到一个节点相连的所有节点, 如何对这些节点接着进行查询的问题。该算法采用list 集合, 存储与节点相连的所有节点, 加入集合中。对集合

10、进行遍历, 查询集合中每个节点的信息, 并从集合中删除该节点。算法关键流程如图 5 所示。5 系统的实现5.1 抽取数据的技术Jacob 是 Java 与 COM 组件桥接的缩写, 即 JAVA-COM Bridge。通过使用 Jacob类库, 我们可以很方便地在 Java 程序中调用 COM 自动化组件4。Word 中以表格形式存储课程名称, 先修课程信息。表格有一定的规范性, 只需要对表格特定位置进行操作, 即可获取信息, 将信息存放在 Hash Map 中, 以课程名称作为键值, 先修课程进行规范化处理后, 以 List 集合整体作为 Hash Map 的值。由于 Hash Map 的存

11、储特性, 进行存储过程中首先检查 Hash Map 中是否存在相同的键, 如果存在, 即比较其值, 选择存储。不存在相同的键, 直接存储。在抽取 Excel 表中信息时, 首先针对 Excel 表进行处理, 保证课程名称无重复信息, Excel 表的规范性, 只需要对特定表格进行处理, 即可得到相应的课程信息, 同样使用 Hash Map 进行存储课程名称-课程类型。使用 Jacob 相关方法对 Word 以及 Excel 文档进行操作, 达到对数据进行抽取以及处理的目的5。5.2 数据展示的技术数据展示采用 D3.js 插件来显示图数据中数据节点以及节点之间的关系6, D3.js 是一个 J

12、ava Script 库, 它可以通过数据来操作文档。D3.js 可以通过使用 HTML、SVG 和 CSS 把数据鲜活形象地展现出来。为了便于 Neo4j 和 D3.js 的数据交互, 采用 JSON 格式形式进行前后台的数据交互7, 如source:“1“, target:”2”, type:”选修”, type2:”必修”, rela:”先修”使用插件对 JSON 数据进行解析, 得到源节点, 目标节点, 源节点的类型, 目标节点的类型, 源节点与目标节点直接的关系这些信息。D3.js 通过解析这些信息进行图谱的可视化8。图 6 课程知识体系图谱 下载原图6 实验结果通过对 Word 和

13、 Excel 文档进行信息抽取, 从 Word 中获取到课程信息, 前驱课程即课程之间的关系, 从 Excel 中获取课程名称和课程类型, 将课程信息进行比对, 得到课程名称, 课程类型以及课程之间的关系即前驱。在数据库中构建课程知识体系图谱, 知识体系图谱如图 6 所示。针对课程知识体系图谱可以查询到指定课程的前驱课程, 输入指定课程名称例如:计算机网络。查询结果如图 7 所示。图 7 计算机网络前驱课程图谱 下载原图7 结束语本篇文章主要介绍了从最初的设计到最终实现知识图谱系统的相关内容, 图谱不仅仅可以用在构建知识体系图谱, 可以运用到家庭图谱、交通网络、社交网络等等, 图谱的应用较为广

14、泛, 生活中的方方面面都可以使用图谱。构建知识图谱来发现知识体系中存在的问题, 并进行加以解决, 通过知识图谱更加快捷地查找到所需要的内容, 以及发现节点与节点之间的关系。通过页面展示与数据库展示可以快速发现数据之间的关系以及存在的问题, 页面展示可以快速查询所需节点与之相关的信息。参考文献1姜洋, 彭智勇, 彭煜玮.基于图数据库的在线族谱编录系统J.计算机应用, 2015, 35 (1) :125-130. 2程耀东, 赵建昌, 徐军.图形数据库应用技术研究J.工程图学, 2006, 27 (1) :143-148. 3宋海军.基于 Web 的数据库检索系统的实现J.中国科技信息工程论坛,

15、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陈卫卫, 王艳.基于 No SQL 数据库的通用数据存储结构的设计方案J.价值工程, 2012, 31 (26) :191-192. 8权鑫.基于 D3.js 的数据可视化系统框架设计与实现D.北京:北京交通大学, 2016.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 期刊/会议论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报