APP下载

面向知识图谱的融合集成框架设计研究

2021-10-19贺宗平范少芬贺曦冉

现代信息科技 2021年5期
关键词:知识图谱

贺宗平 范少芬 贺曦冉

摘  要:随着知识图谱技术及应用的不断发展,形成了一系列独立的开发组件库,这些组件库在知识图谱的某些环节和领域中具有广泛的应用,但是其中大多数组件库之间相互独立、缺少统一标准,难以聚合形成体系开放能力。由于需要掌握多个独立组件的开发规范标准,这给相关研究和应用造成一定的难度和阻碍,因此利用Python的集成设计模式和语言黏合优势,对成熟的组件库进行分层分类整合,具有重要的实用价值。

关键词:知识图谱;图谱数据库;設计模式;集成构建

中图分类号:TP311      文献标识码:A 文章编号:2096-4706(2021)05-0023-03

Research on the Design of Fusion Framework for Knowledge Graph

HE Zongping,FAN Shaofen,HE Xiran

(Information Office,Nanjing Audit University,Nanjing  211815,China)

Abstract:With the continuous development of knowledge graph technology and its application,a series of independent development component libraries have been formed. These component libraries have a wide range of applications in some links and fields of knowledge graph. However,most of them are independent and lack of unified standards,which makes it difficult to aggregate and form the systematic open ability. Because there is a need to master the development specifications and standards of multiple independent components,which causes a certain difficulties and obstacles to the related research and application. Therefore,it has important practical value to use Python's integrated design pattern and language bonding advantages to integrate the mature component libraries in classified and hierarchical way.

Keywords:knowledge graph;graph database;design pattern;integration build

0  引  言

知识图谱在相关的研究和开发领域具有一系列成熟的开发组件库,这些组件库在知识图谱的某些环节和领域中具有较为广泛的运用,如自然语言处理模块spaCy、图分析算法包NetworkX。但是其中的大多数组件库之间相互独立、缺少统一标准和规范约束,无法提供体系化的功能。知识图谱的研究开发需要掌握多个独立组件的标准规范,给相关问题的研究开发造成了困难和阻碍。同时,由于jupyter、colab等数据工程和科学领域的平台工具,对编写Python Notebook程序的简洁性、可复现性提出了更高的要求。因此,构建统一简洁、全面完善的知识图谱集成框架,对于这个领域的研究发展有着重要的现实意义。

1  知识图谱构建

知识图谱的运用覆盖了从互联网搜索到聊天机器人、推荐系统、金融风控、物联网、医疗教育等多个热门领域,对知识图谱相关技术领域研究开发的热度不断攀升。例如传统的搜索是一种浅层次的关联搜索,通过对网页关键内容的过滤分析实现,而基于知识图谱的搜索将在进行知识语义理解的基础上进行深层次关联搜索,综合检索数据信息的来龙去脉,并提供对搜索事物的分类、属性和关系的描述。

知识图谱本质上是基于语义网络的知识库,由Google公司于2012年提出。实际应用中可以把知识图谱理解成由节点(Vertex)和边(Edge)构成的一种特殊的多关系图,通常多关系图一般包含多种类型的节点和边,而知识图谱一般只包含一种类型的节点和边。

1.1  数据处理

在Python语言中,可以通过pandas读取excel中的数据,并以图谱“三元组”形式存储到Neo4j图谱数据库,以构建相关的知识图谱。基于Neo4j图谱数据库能够很容易地构建知识图谱,除了用Neo4j自带的cypher语言导入,也可以通过py2neo组件创建节点和关系从而构建知识图谱。pandas组件包通常用于数据分析与处理,可以将excel格式文件转换成dataframe格式,这种格式类似于Spark中的Dataframe结构,支持类似SQL的形式对数据进行处理。

1.2  实体抽取

知识图谱构建流程主要就是抽取实体,通过抽取算法获取知识图谱上的“节点”。对于文本数据处理的方式,基于词性标注的方法从句子中提取单词,例如名词和专有名词就是需要的实体。此外,当一个实体关联多个单词时,还需要解析文本的依赖树。

1.3  图谱数据库

图数据库不同于一般的关系型数据库,是一种非结构化的图形数据库,与MySQL、Oracle等传统数据库存储结构化数据相对比,图数据库主要用来持久化存储图谱数据。目前主流的图数据库包括Neo4j、TigerGraph、JanusGraph等:

(1)Neo4j是典型的图数据库,也是图计算引擎,具备嵌入式、高性能、轻量级等优势。

(2)TigerGraph是为高性能存储和计算而设计的分布式图数据库。每个实体和连接实体的每个边都是计算单元,支持自动划分多个节点。

(3)JanusGraph是开源的图数据库,遵循Apache协议,具有良好的开放性。

2  架构需求

本文研究的主要内容是通过增加适配层方式进行多组件的集成,提供抽象层接口,统一SDK或API标准,以构建符合当前数据科学研究和知识图谱开发应用的需求。图1为融合多个技术组件的集成架构图。

2.1  层级区分

框架的体系架构垂直划分为三个层次,即图数据存储层、引擎处理层、功能集成层:

(1)图数据存储层:存储层主要由各种图数据库组成,支持分布式存储,实现图数据的持久化存储。在数据存储量上能够支持达到亿级以上点边总数,吞吐量数万QPS,查询响应在秒级以内。

(2)引擎处理层:引擎处理层是负责对图数据进行读取转换和序列化的处理,包括一些并行处理引擎、大数据内存处理引擎等。

(3)功能集成层:集成层主要是牵涉到图数据相关的建模、分析和计算等功能库,是知识图谱应用分析的主要功能集合。

2.2  集成与接口

集成框架的核心是为Python中的知识图谱相关组件构建统一抽象层。本文研究基于外观模式(Facade Pattern)进行封装设计,架构如图2所示。

在面向对象方法的程序设计中,外观模式又被称为门面模式,外观模式定义了一个高层接口,通过引入一个类对子系统进行封装,让外部通过统一的外观对象进行调用,为子系统中的接口提供一致的访问标准。引入封装的外观可有效降低原有系统的复杂度,同时减少客户端与子系统类之间的耦合度。

外观设计模式通过一个统一的外观对象实现子系统外部与其内部的通信,屏蔽了客户端访问子系统的复杂性,客户端只需与外观对象通信,无需要调用子系统内部的多个复杂对象的功能。外观模式的目的在于降低系统的复杂程度,极大程度上提高了聚合功能包开发的便捷性,使得客户端无须关心子系统的实现细节,通过外观接口类即可完成所有功能調用。

3  构建方法

Python有着多种丰富成熟的图数据组件包,提供了包括语义技术、图数据查询、交互可视化、图数据结构算法、概率图推断,以及和机器学习等方面集成的工具包。这些工具包各自独立向外提供编程功能接口,工具包之间在数据处理、接口规范、功能种类等方面都存在一定的差异性。此外,这些开发包与主流的数据科学基础平台和工具包(例如Apache Spark、Ray、RAPIDS、Apache Parquet、pandas、scikit-learn、PyTorch、spaCy等)相比,也同样缺少有效集成。

3.1  组件构成

组件集成了RDFlib、OWL-RL、pySHACL、NetworkX、iGraph、PyVis、node2vec等开源项目工具包,集成各种图计算分析、可视化分析相关的功能方法,有助于知识图谱开发融入数据科学,并推动与数据工程实践更加紧密关联。

3.2  功能要素

构建的功能要素包括6个方面的内容:

(1)RDFlib中的知识图谱构建功能。RDFlib主要功能就是将基于语法的文件转换成RDF格式的知识表达,需将原始数据按照相应语法进行预处理,如TTL、JSON-LD、Parquet等数据格式序列化。

(3)基于SPARQL的查询能力,并将查询结果输出转换为pandas格式数据。SPARQL是针对RDF存储的查询语言,SPARQL与SQL类似,通过查询可以返回一条或多条图存储内容结果。

(4)基于SHACL约束规则的图计算验证。SHACL是一种标准化的依据一组条件来验证RDF图的语言,可以在预定义图谱形状构建的数据图上,强制执行标准结构。

(5)NetworkX和iGraph的图分析算法。NetworkX和iGraph是Python中创建、操作和研究网络图谱的工具包,尤其在分析网络结构的方面具有十分完备的支持。

(6)基于RDFS、OWL知识推理功能。RDFS是对RDF的扩充,用来描述RDF数据,增加更多的关系表示方法,OWL则提供高效灵活的数据建模和自动推理能力。

3.3  接口构建

集成框架基于Facade设计模式,将各类复杂的知识图谱功能库封装,提供外界统一访问的模块接口,内部中各个功能库仍然相对独立,降低系统耦合度并相互减少依赖。外观接口类构建的代码示例:

class  SpecialGraphFacade():

igraphObj = None

rdfObj = None

visObj = None

def __init__(self):

self. igraphObj = IGraph()

self.rdfObj = RDF()

self.visObj = PyVisual()

def createSpecialGraph(self,data):

self.rdfObj.readGraph(data)

return self.igraphObj.createSpecialPath(self.rdfObj)

def visualSpecialGraph(self):

return self.visObj.visual(self.igraphObj)

4  结  论

开源社区在知识图谱相关的存储处理和计算分析层面提供了多种成熟的組件功能包,为避免在知识图谱应用开发和研究中带来的版本、接口和集成等问题,可充分发挥Python语言高效粘合式集成开发能力,基于Facade设计模式为一系列知识图谱组件功能包提供一致的高层接口层,隐藏多组件开发带来的复杂性,并承接版本控制的统一性、功能的一致性等内容,为知识图谱相关研究提供便利。

参考文献:

[1] 张云中,祝蕊.面向知识问答系统的图情学术领域知识图谱构建:多源数据整合视角 [J].情报科学,2021,39(5):115-123.

[2] 张思龙,王兰成,娄国哲.基于知识图谱的网络舆情研判系统研究 [J].现代情报,2021,41(4):10-16.

[3] 刘宝珠,王鑫,柳鹏凯,等.KGDB:统一模型和语言的知识图谱数据库管理系统 [J].软件学报,2021,32(3):781-804.

[4] 于升峰.面向科技智库的知识图谱系统构建 [J].智库理论与实践,2021,6(1):56-64.

[5] 贺宗平,张晓东,刘玉.基于Jupyter交互式分析平台的微服务架构 [J].计算机系统应用,2019,28(8):63-70.

[6] 魏泽林,张帅,王建超.基于知识图谱问答系统的技术实现 [J].软件工程,2021,24(2):38-44.

[7] 赵捷,宫政,李晟飞.基于知识图谱的机构大数据集成系统研究 [J].标准科学,2020(9):74-78.

作者简介:贺宗平(1982.09—),男,汉族,江苏南京人,工程师,硕士,研究方向:软件体系架构、数据平台。

猜你喜欢

知识图谱
国内外智库研究态势知识图谱对比分析
国内信息素养研究的知识图谱分析
国内图书馆嵌入式服务研究主题分析
国内外政府信息公开研究的脉络、流派与趋势
基于知识图谱的产业集群创新绩效可视化分析
基于知识图谱的产业集群创新绩效可视化分析
基于知识图谱的智慧教育研究热点与趋势分析
国内酒店品牌管理研究进展的可视化分析
从《ET&S》与《电化教育研究》对比分析中管窥教育技术发展
专家知识图谱构建研究