SCI论文(www.lunwensci.com)
摘 要: 自从知识图谱的概念被提出来以后,研究人员一直致力于对知识图谱的深入研究,以挖掘此项技术的潜力,本文从 知识图谱的架构入手介绍了知识图谱构建的步骤和涉及的核心技术,进而进行城市知识图谱的搭建。以兰州市为例,获取城市中 餐饮、医疗、教育、旅游景点等领域相对全面的数据让系统最终的实用性与真实性有所保障。考虑到用户的使用体验,设计了前端 界面完成知识图谱可视化,用户可以在客户端对知识图谱中的数据进行交互了解城市不同领域的内容结构,展现了该系统的实用性。
关键词:知识图谱,知识融合,实体消歧,Neo4j
Construction of Knowledge Graph for Smart City Applications: Taking Lanzhou City as an Example
LIANG Zunxun1.2. WANG Junfu1.2. YU Haomiao1.2. WANG Fangxiong1.2
(1.Liaoning Key Lab of Physical Geography and Geomatics, Liaoning Normal University, Dalian Liaoning 116029;
2.School of Geographical Sciences, Liaoning Normal University, Dalian Liaoning 116029)
【Abstract】: Since the concept of knowledge graph was proposed, researchers have been focusing on in-depth research on knowledge graph to explore the potential of this technology. This article introduces the steps and core technologies involved in constructing knowledge graph from the perspective of knowledge graph architecture, and then constructs urban knowledge graph. Taking Lanzhou City as an example, this article aims to obtain information on urban catering, healthcare, and education, the relatively comprehensive data in fields such as tourist attractions ensures the ultimate practicality and authenticity of the system. Considering the user experience, a front-end interface has been designed to visualize the knowledge graph. Users can interact with the data in the knowledge graph on the client to understand the content structure of different fields in the city, demonstrating the practicality of the system.
【Key words】: knowledge graph;knowledge fusion;entity disambiguation;Neo4j
引言
本文主要研究了时下热门的知识图谱 [1],从知识图 谱的构建结构入手,介绍知识图谱的搭建基础步骤和主 要技术,为了制作兰州市的城市知识图谱,对获取的 源数据进行处理,得到结构相同的三元组数据,使用 Neo4j 图形数据库在图形数据库中搭建起知识图谱结构 图,使用 D3.js、JQuery 等前端涉及到的技术,完成知识图谱可视化。
1 知识图谱数据源获取
1.1 知识获取
构建出一个完善的知识图谱,获得大量计算机可以 读取的知识数据是基础,知识存在分为三种形式,分别 为非结构化的文本数据、半结构化的表格、网页以及生 产系统的结构化数据。在对非结构化数据处理上,一开始要获取正文可以有效地排除广告,让只需要处理的文 本内容呈现,得到文本后,通过自然语言识别技术可以 用实体链接技术或者构建实体之间同义词表让不同实体 有相同描述,来识别出文本中的实体 [2]。
在对半结构化的数据处理方面,主要的工作是为了 学习半结构化数据的抽取规则可以通过包装器来进行学 习,半结构化的数据具有非常多相似相同的结构,为了 让机器从中发现某种方式规则从而可以进一步在整个站 点下用同样的规则对符合条件的数据进行相应的抽取获 得处理,并可以对数据进行一定的标记注释,最后通过 ELT 工具对数据进行处理得到最终需要的结果。
1.2 知识融合
知识融合 [3] 是指在获取大量数据后,由于数据来源 不同,可能表述方法也有所差异,为了集中处理要用统 一的术语将不同来源的数据融合为一个整体的数据库。 本体是提供统一术语的结构数据,不仅提供了术语字典 还构建了各个术语之间的关联。本体的作用是可以让用 户方便的根据自己的需求建立修改模型,运用到数据 映射技术,建立本体术语和不同知识源中知识的映射关 系,从而就可以把不同的数据融合在一起。有时候不同 的数据源的描述可能都是说明现实世界的同一个实体。 此时就需要用到实体匹配技术将不同数据源相同客体的 事物整合为一个整体。对于不同的本体最后融合结果的 数据库要有一个整合管理的解决方案,根据用户的需求 采用不同的存储框架。获取知识图谱构建实体数据源流 程图如图 1 所示。
2 Neo4j 中构建知识图谱
2.1 Neo4j 图形数据库介绍
Neo4j 属于一种 Java 持久化引擎,是一种基于磁 盘的嵌入式拥有一套完整的事物处理能力的引擎,因此 Neo4j 也可以被称为是高性能的图引擎, 同时完备的数 据库所拥有的特性, Neo4j 图形数据库都具备这些特点。
相比起关系数据库来说, Neo4j 在处理数据量比较 大且比较复杂但是相互连接和低结构化的数据时拥有巨 大优势,围绕着图形 Neo4j 会根据数据建模可以快速地遍历检查每一个节点和连接,这个过程非常的迅速,不 存在表的链接重建,也不会受到数据量的影响,可以快速 准确地完成查询,非常适配比如城市这种大批量的数据。
2.2 Neo4j 中知识图谱结构设计
Neo4j 中的四个基础概念,分别是标签(Label)、 节点(Node)、关系(Relationship)、属性(Property) 这四类是搭建知识图谱的基础。
(1)标签(Label) :标签一般是指节点所属于的类 别,同一个节点可以拥有很多种的标签,这也让知识图 谱的丰富性提升了很多。
(2)节点(Node) :节点对应到显示生活中就是指 一个确定真实存在的对象,也就是城市知识图谱中各个 地点的名称,一个节点可以有多个标签也可以有多个属 性,这样数据才具有准确性和实用性,可以表现出数据 的多方面特征和特点。
(3) 关系(Relationship) :关系是图型数据库和 以前用的例如 MySQL 这类数据库最大的区别,关系是 用来描述各个节点之间的联系,图形数据库可以很清晰 地展示这种网状连接的方式。
(4)属性(Property) :属性是用来描述节点特征 的,一般是 key-Value 结构。
此系统搭建兰州市的城市知识图谱,涉及到餐饮、 教育、医疗、旅游等领域,可以比较清晰完整地展现出 兰州市各个区县领域内的详情。为了能够清晰地展现出 各种节点之间的联系以及层级之间的关系,采用逐层的 方式来构建,通过设置的关系类别将同一类别的数据归 类到一起。搭建结构如图 2 所示。
2.3 实体数据导入
Neo4j 导入数据的方法分别是 CREATE 语句导入、 LOAD CSV 语句导入、Neo4j-import 导入。
CREATE 语句导入适用的数据量比较小, 需要人工 逐条输入,一般来说适用于一万以内的节点数据量,虽然语句比较简单,而且可以实时给 Neo4j 中插入数据, 但缺点是速度慢,数据导入速度很缓慢,而且录入过程 的工作量也比较庞大。
LOAD CSV 语句也可以实现实时插入,不过需要把 数据转化成 CSV 格式,明显比起 CREATE 语句要方便 很多很多。
相比起以上两种, Neo4j-import 非常适合形成新 的数据库,数据导入速度很快,使用起来也非常方便。 本次实验的数据源大概有 28 万条左右的数据,生成新 的数据库,需首先对处理好的实体数据进行格式处理, 然后将供处理成 .txt 格式的文件,按属性依次排列,最 后将编写代码导入图形数据库。
2.4 数据库设计
Neo4j 图数据库遵循属性图模型来存储和管理其数 据,其中节点和关系都包含属性,关系链接节点,属性是 键值对,每个关系都包含前驱节点和后继节点,其中主要 包含两种数据类型 :Nodes( 节点 ) 和 Relationships( 关 系 )。它们各自内部又包含 Key-value 形式的属性, 然 后节点之间通过关系相连,形成了关系型的网状结构 [4], 具体结构如图 3 所示。
部分关系属性结构和部分领域节点属性结构如表 1- 表 3 所示。
2.5 知识图谱搭建完成效果
按照此类格式可以完整构建起来知识图谱中的一个 分支,其他分支也是类似的方法,具体搭建起来的城市 知识图谱效果如图 4 所示, Neo4j 中自动帮我们按照 Node Labels、Relationship Types、Property Keys 节点、关系、属性分成了三类,可以直接从上面查询相 关信息,单个节点结构如图 5 所示。
3 可视化界面开发
3.1 系统开发技术
在前端设计中,前端框架包含 LayUI、JavaScript中的函数库 D3、轻量级框架jQuery[5]。
jQuery 是一个非常优秀的轻量级框架,对于各大 浏览器和 CSS3 兼容性都比较高,包含大部分数据可视 化时需要实现的功能。具有 HTML 元素的操作与选取, CSS 文件的操作, JavaScript 图形特效和动画展示,包 含元素节点的遍历和修改。
D3 全称是 Data-Driven Documents[6], 也是一个 JavaScript 的函数库,在业内主要就是用来进行数据可 视化,提供了很多简单易用函数,包括画图组件,用来 绘制可视化的图形。
LayUI 是在设计前端时所用的框架,这是一款采用 自身模块规范编写的前端 UI,这个框架定义了很多前 后端交互的接口,只需要前端配置好接口,后端根据设 定的规则返回数据就行,很大程度上进行了简化,让开 发人员代码压力小了很多。
3.2 界面设计与功能设计
设计的 4 个界面分别是登录界面(需要输入账号名 和账号密码来登录此系统的界面)、索引界面(在此界 面中可以展示知识图谱,并且引导用户选择执行增加、 删除、查询更改功能)、具体操作界面(当用户选择了 索引界面的某个功能后会自动跳转到具体操作界面,需 要用户自己填写需要的节点名称关系)、操作成功界面 (提示用户已经完成操作, 并给出可以转到主界面的链 接按钮)。
前端页面设计完成后, 需要丰富功能的实现, 分别 要完成添加节点添加关系,更改节点名称更改关系名 称,删除节点删除关系,各领域节点的查询与可视化, 区域结果统计,节点数量统计,完成与 Neo4j 数据库的 数据连接,将前端界面进行操作的结果实时到图形数据 库中 [7]。功能设计图如图 6 所示。
3.3 后端实现与展示
后端要实现的功能有以下几个 :连接 Neo4j 图形数 据库完成展示知识图谱功能 ;完成增加节点增加关系功 能并将结果同步到 Neo4j 数据库中,可以通过数据库语 言进行查询 ;完成更改节点名称和关系名称的功能并同步到 Neo4j 数据库中 ;完成删除节点与删除关系的功能。
用户可登录的用户账号密码存在 MySQL 的一个表 中,所以我们要做的就是链接 MySQL 获得 MySQL 中 的返回值得到 Connection。
在进行节点操作时节点需要属性,关系需要前驱节 点与后继节点,通过一套 Cypher 可以将输入的内容进 行拼接 [8.9], 形成一个整合的节点或者是节点与关系的 组合。
为了能够在前端展示出 Neo4j 中的部分知识图 谱,需要一个展示功能,这里使用到 Neo4j 一个操作类 Neo4jRestAPI 连接图形数据库 [10],获取节点关系的数 据,返回关系的 StringBuffer,为可视化做准备。关系的 StringBuffer, 一般是JSON 格式, 解析之后的 Result 里 包含所有的 Path, 当我们得到关系属性键后就可以初步 处理关系属性,返回关系中节点的 StringBuffer 也类 似,只是需要再用一个 Set 集合去除重复项,在增加新 节点前会自动判断是否新节点在以前的集合中。
对于关系的去重,选择新建一个 Map,以 startNodeId 作为 Key, 以 endNodeId 作为 Value, 用来去重, 因不 清楚能不能进行批处理,所以此次实验中没有用到批处理, 过程和判断节点是否重复类似,节点的集合是 Set, 关系的集合是 Map。完成这些之后就可以进行查询, 在添加之后也不会出现重复添加同样节点或关系的问 题。展示前端可视化结果,如图 7 所示,为了减少节点图 形之间的碰撞,让图看起来更加简洁一点,只展示了 200 个数据。
4 结语
本文完整实现了城市知识图谱的构建,在数据源 获取阶段对不同结构的数据通过爬虫框架与信息抽取 的方式获得原始数据,进一步对数据进行归一化处理 结合融合算法与实体消歧获得统一结构化的实体数据。 在 Neo4j 图形数据库 中选择 Neo4j-import 方法进行 导入,按层级与领域划分节点类别设置节点的属性与关 系属性,搭建起结构完整的知识图谱。在可视化方面 采用前端轻量级框架jQuery 与 LayUI,后端用到操作 类 Neo4jRestAPI 链接图形数据库。在客户端实现了知 识图谱的可视化,让操作人员可以了解到城市类,如医 疗、餐饮、教育、旅游等领域的内容,对学习知识图谱 结构与了解城市内容有一定的应用价值。
参考文献
[1] 刘燕,贾志杰,闫利华,等.知识图谱研究综述[J].赤峰学院学 报(自然科学版),2021.37(4):33-36.
[2] 张奇.信息抽取中实体关系识别研究[D].合肥:中国科学技术 大学,2010.37(4):33-36.
[3] 杜睿山,陈寰宇.构建知识图谱实现知识融合—评《知识 图谱》[J].山西财经大学学报,2021.43(5):127.
[4] 赵毓诚,陈建军.人工智能领域知识图谱构建与分析[J].计算 机与数字工程,2021.49(3):514-520.
[5] 黄申永芳.基于jQuery框架的Web前端开发的研究[J].信息 通信,2019(10):105-107.
[6] Marcos Iglesias.Pro D3.js[M].Apress,Berkeley,CA: 2019-01-01.
[7] 赵尔平,王禹皓,王伟.一种知识图谱可视化方法及系统:中国, CN202110027767.3[P].2021-11-26.
[8] 杨振,万为清.图数据库的研究和应用[J].电脑编程技巧与维 护,2020(12):91-93.
[9] 李艳茹,周子力,倪睿康,等.基于知识图谱的学科知识构建 [J].计算机时代,2021(4):65-68.
[10] 张丹普,董雪梅,赵曼.一种基于Neo4j高性能图数据库的关 系图谱更新方法:中国,CN201911091235.5[P].2021-05-11.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/63725.html