基于知识图谱的四大名著人物关系的构建
2021-03-14王家乐宋龙生
王家乐,宋龙生
(西藏大学信息科学技术学院,拉萨 850000)
0 引言
近年来,随着人工智能技术的发展和大数据时代的到来,知识图谱技术得到极大的发展,大量的知识图谱被构建出来并广泛应用在多种场景之中。四大名著作为我国古代杰出的文学作品,里面包含的人物众多,不同的人物之间又具有错综复杂的关系,要想读懂这几部经典著作,必须将其中的人物关系梳理清楚。
为了解决这个问题,本文利用知识图谱把四大名著中复杂的人物关系结合在一起。通过问答系统也可以为用户找出想要获取的某人的准确信息以及和亲属之间的联系,为用户提供更有价值的深层次信息。
1 系统开发环境及相关技术的介绍
1.1 Python
Python 作为一种跨平台的计算机程序设计语言,Python 语言简洁易读、扩展性好容易维护,它不像C 语言那样对格式的要求严谨,它的风格比较随意,很多的层次结构用空格就可以实现,对于开发者而言比较友好。同时Python 具有很好的可移植性,能够适应于多种平台,因此选择Python语言进行本设计开发。
1.2 Flask框架
与Python 中常用的框架Django 相比较而言,Flask框架可以定义为一个轻量级的框架,重要的是它显得简洁、轻巧而且灵活度高。Flask框架适合做分层比较少、逻辑简单的项目。本系统中采用Flask框架比较适合。
1.3 图形数据库Neo4j
图数据库存储和查询数据是通过图这种数据结构来实现的[1],数据都是以节点的形式来保存,它是通过指针来说明两个节点之间的关系,具有任意性。图数据库的数据存储方式和查询方式都是以图论为基础的[2]。本文使用图数据库Neo4j来实现对四大名著人物关系的存储。
1.4 MySQL数据库
在存储可视化展示界面和单个人物的事迹与简介的数据时采用MySQL 数据库。MySQL 是一种关系型数据库管理系统[3]。在存储关系型数据时,MySQL仍然是首要的选择。
1.5 知识图谱
知识图谱经历了早期语义网时代的发展、积累,最后才发展衍生出了这一概念。知识图谱有助于提供更好的搜索服务,比如当搜索篮球明星姚明时,搜索引擎不仅会出现查找人物的信息,而且旁边还会出现他的朋友、妻子、子女等简要信息。事实上,这种效果就是知识图谱的功劳,可以理解为知识图谱的简单应用。
2 系统整体框架与知识图谱的构建
2.1 系统的整体框架
本系统采用Flask 框架对整个项目进行交互,还包括网络爬虫部分、数据处理部分、知识图谱构建部分、分词部分和前端展示部分。
2.2 知识图谱的构建
知识图谱的构建首先需要大量的数据作为支撑,通过结合人工获取与网络爬虫共同得到本系统需要的数据,在得到大量的数据之后,接下来需要对数据进行分类。构建知识图谱的主要方法可以分为两种:一是自顶向下的构建方式,二是自底向上的构建方式[4]。
目前,在构建知识图谱时,一般采用自底向上的方式,从网络中抽取信息[5],这种从下往上将知识进行叠加的方式便于信息的修改。但是在后期的过程中同时使用自顶向下和自底向上构建方法,并将两种方法的优势结合一起能够更高效地完成这一阶段的工作。
2.3 数据的爬取
由于本系统要使用众多的人物图片和一些相关信息,所以使用网络爬虫技术作为收集数据的主要方式。网络爬虫伴随着大数据与人工智能时代的来临而受到越来越多人的重视与青睐。网络爬虫是搜索引擎的重要组成部分[6]。通俗的讲,爬虫就是程序代替人们在网页中获取想要的信息,用程序替你获取你想要的信息。
爬虫的主要步骤分为:分析站点(目标网站)→发送请求→获取相应的内容→解析网页→数据保存。
2.4 知识抽取
知识抽取的过程包括分词、实体命名识别、关系抽取以及事件抽取[7]。本系统的分词工具直接使用的是已经比较完善的LTP,因为它集成了分词和词性标注等多种方法在里面。
在本系统中用到的实体关系一般是指君臣关系、兄弟关系、同僚关系等。实体命名识别主要是从互联网或者文本中发现有用的人物节点。除了这种方式外,还有人工获取,将数据同样整理成三元组的形式进行存储。之所以加入人工获取的方式是因为在四大名著的文本中存在有二义性的词语。但是,本系统中的数据关系来源几乎都是人工整理所得,不存在二义性的问题。
2.5 问答系统架构
(1)数据处理部分。原始数据来源于关系数据库,需要将数据预处理后,导入的图数据库Neo4j 中。本系统选择使用Neo4j-import 将大规模的数据导入到Neo4j 数据库中(首先将数据Excel转换成CSV 格式,然后将CSV 格式存放在import文件夹下),最终形成想要的知识库。
(2)问题分析部分。本系统针对用户输入的问题进行模式匹配,识别出实体,进行词性分析,从而找出人名实体和亲属关系类别。
(3)查询结果部分。主要的功能分为两种类型:一种是查询人物的亲属关系,另一种是查询两个人物之间是否存在关系。
(4)结果返回部分。如果在图数据库中能找到答案,就返回相应的节点和关系展示出图谱的全貌,如果查找失败就报错,查询两个人物之间的关系时如果存在关系就会跳转到答案的界面,没有则显示没有关系,若查找成功还会出现人物对应的图片与人物简介。
3 知识图谱可视化系统与功能实现
在本系统中知识图谱的可视化主要是前端界面的整体展示,在对整体数据进行展示的过程中使用echarts 可视化平台可以直观地看到系统中的各类关系和实体以及数据的统计。人物检索主要是以关键词为中心,结果会将和关键词有关系的节点(实体)连在一起形成一个大的知识网络,展示在网页中。
对Neo4j 数据库中数据的读取和前端HTML界面的展示依靠的是Flask框架,进而将数据库中的所有内容进行可视化展示。可视化界面还具有搜索单个人物、知识图谱全貌的展示、查询人物关系等功能。
3.1 可视化界面实现
整体系统实现了:①可视化展示;②四大名著知识图谱全貌展示;③搜索单个人物;④查询人物之间的关系。
图1 是可视化界面,显示了本系统中关系和实体的总数目,中间部分的图谱效果是由echarts实现,当点击其中的名字会出现相应内容介绍。右侧介绍了系统中的主要功能模块。
图1 可视化界面展示
3.2 知识图谱的实现
图2是数据的展示界面。
图2 四大名著数据展示
可以看到四大名著人物关系全貌的一部分,它和在图形数据库Neo4j 中的效果略同,但是它在前端的展示会显得清楚、美观。
3.3 问答系统的实现
关于增添关系的效果,当需要添加两个人物的关系时,在输入框中添加两个人物的,名字和他们之间的关系就可以成功的添加这两个人的关系。
查找某个人的亲属关系,只要这个关系存在就会显示亲属的关系图谱,并且会显示出对应人物的简介。
除上述的功能之外,为了使系统中的内容更加充实以满足更多的使用者,加入了四大名著中主要事件的搜索以及主要事件的视频内容。例如:在搜索栏中搜索“武松打虎”,就会与数据库中的内容进行匹配,然后出现对应的视频片段。
4 结语
本文主要论述了基于四大名著的知识图谱的构建,使用人工获取和网络爬虫在互联网上获取相关资源后,通过对获取的人物关系进行归纳、整合等操作后整理成三元组的形式,利用Neo4j存储其中的人物关系,接下来使用Flask框架来实现系统中前后端的交互,最终构建了四大名著人物关系的知识图谱。不仅有基本的人物图谱的全部展示,而且加入了类似于大数据的前端展示,使得数据的可视化效果增强。