曾伟桂
(北京信息科技大学,北京 100101)
化工行业工艺复杂,储存物料危险性大,一旦引发事故,往往造成极强的破坏力,社会影响巨大。近年来,化工事故发生量在政府管理下有所降低,但事故强度愈演愈烈[1],化工行业的安全形势依然严峻。
将知识图谱引入化工安全领域,利用大数据、人工智能等相关信息技术整合存储海量的化工安全知识,构建基于化工安全领域的知识图谱,便于从业人员更好地利用化工安全领域丰富的知识,对中国化工安全发展、对国家发展具有长远意义。
2012年5月17日,Google公司为了提高搜索引擎能力、改善用户搜索质量及搜索体验,首次采用了“知识图谱(knowledge graph)”技术[2],知识图谱应运而生。知识图谱是知识库与语义网络相结合的产物,用于描述客观世界中的实体、实体与实体之间的关系。它用节点表示语义符号,用边表示语义之间的关系,从而把现实世界中的人、事和物联系在一起,得到一个类似“多关系图(multi-relational Graph)”的巨大语义网络。随着人工智能的不断发展,知识图谱技术体系亦日趋完善,其已在金融领域、搜索引擎、问答系统、电商平台、社交网络等方面有了一定的应用,在解决大数据文本分析和图像理解等方面发挥着重要作用。
基于行业领域划分,知识图谱可分为开放领域的知识图谱和特定领域的知识图谱[3],具有广阔的研究与应用前景。针对化工安全这个特定的领域,创新性地引入知识图谱技术,通过对近年来全国近100起化工爆炸事故的研究,初步完成了化工安全知识图谱的构建,并基于Neo4j对数据进行存储。
知识图谱的架构包括自身的逻辑结构及构建知识图谱所采用的技术架构[4]。根据不同的需求和应用,知识图谱可能涉及不同技术。从最原始的数据(包括结构化、半结构化、非结构化数据)出发,到最终形成知识图谱这一过程,包含了信息抽取、知识表示、实体对齐、知识推理、质量评估等步骤[5]。其理论架构如图1所示:
图1 知识图谱理论架构
知识定义可分为实体定义和关系定义。在化工生产过程中易发且影响最大的几类事故中以化工爆炸为例,针对其实体定义主要有两部分,一是化工爆炸事故本体概念图谱,二是化工爆炸事故案例相关图谱。
和本体概念图谱对应的是不同化工爆炸相关的事件图谱,如图2所示。
图2 化工爆炸事故本体&案例图谱
由于尚未建立实体之间的联系,就没办法解释各个概念之间的关系类型,所以建立各个实体之间的连接,以关系为导向,对于丰富化工安全知识库、提升搜索效果和可视化展示至关重要。针对化工爆炸事故中的关系定义,可以归纳为表1所示类型。
表1 化工爆炸事故关系表
知识抽取指的是通过人工或自动等方式从数据源中提取实体、属性及关系的技术[6]。知识抽取包括实体、关系及属性抽取三个方面[7]。针对化工爆炸事故案例,通过对全国近100起化工爆炸事故进行研究,对化工园区或企业爆炸的致灾因素进行综合分析。人工抽取部分实体和关系如表2所示。
表2 部分实体关系表
图数据库(Graph Database)是一种不限于SQL的新型数据库,它使用图结构的方式建模,数据模型主要是以节点和边来体现,因而图数据库能够运用图结构的自然伸展特点,解决一系列非常复杂的设计问题。
Neo4j是图数据库中比较流行的一款产品,由于其具有更丰富的关系表示、更完整的事务支持、更快的数据库操作、更直观的数据展示等优点,故基于Neo4j构建化工安全知识图谱。
Cypher是专门为图像数据库设计的语言,浅显易懂,具有丰富的表现力,能高效地查询和更新图数据,借鉴了SQL结构。查询可由各种各样的语句组合,采用如MATCH、WHERE和DELETE等类似SQL的语句来组合模式,以表达预期操作。
利用Cypher 语言使用多个关系的复杂模式能够表达任意复杂概念,支持各种使用场景的特点,可以更高效地对化工安全知识数据进行增删改查,并基于Neo4j实现知识存储。
Neo4j批量数据导入提供了三个工具,即Load CSV、neo4j-admin import及Cypher CREATE语句。由于neo4j-admin import适合于海量数据的初始化导入,需要停止neo4j服务器并清库,故采用Load CSV和Cypher语句对实体关系数据进行导入、增加、修改等操作。
LOAD CSV用于从处理好的CSV文件中导入数据,通过批量导入CSV文件导入节点和关系,创建化工安全知识图谱。部分代码如图3、图4所示。
图3 部分节点导入代码
图4 部分关系导入代码
需要注意的是,设置LOAD CSV中file:///URL中的根路径必须设置为数据库服务器上的文件系统的单个目录,它让所有的请求从file:///URL加载时都使用根路径的相对路径。
此外,还可以通过Cypher语句对已创建好的知识图谱进行增加或修改操作,如图5所示。
图5 增加节点关系代码
Neo4j图数据库通过Cypher语言中的MATCH关键字指定查询模式(Patterns),即将节点和关系的语法组合在一起的表达模式。为了增强模块性和减少重复,Cypher允许将模式赋给一个变量,这使得匹配到的路径可以用于其他表达式。例如:通过Cypher语句MATCH p=()-[r :CAUSE]->()RETURN p LIMIT 25,可以查询到如图6所示的部分实体关系图谱。
图6 部分实体关系图谱
结合化工安全这个特定领域,创新性地引入了知识图谱技术。针对化工安全事故类中的爆炸事故,通过对全国近100起化工爆炸事故的研究,对化工园区或企业爆炸的致灾因素进行综合分析,抽取出其中的实体和关系,初步构建了化工安全知识图谱,并基于Neo4j,实现了知识存储。研究表明,利用知识图谱技术对化工安全领域的知识进行管理是可行的,为后续化工安全知识图谱的应用提供重要参考。