基于Neo4j和Unity3D的钻井知识图谱可视化系统

2022-08-20 09:21黄朝兵
现代计算机 2022年12期
关键词:钻井工程图谱结构化

陈 瑞,黄朝兵

(武汉理工大学信息工程学院,武汉 430070)

0 引言

现如今,互联网和大数据产业飞速发展对社会的发展产生了深远影响。国内的石油钻井这一传统行业在近30年的信息化过程中已经实现了科技进步和技术革新,开始推广自动化和智能化的钻井设备和工艺。然而,钻井基础理论、钻井工艺、钻井技术手册等钻井相关知识还是依赖于传统的纸质书本或者视频资源进行传播,这限制了钻井领域相关人员获取知识的效率。

随着科技的快速发展,新的知识源源不断地产生,极大地丰富了原有的钻井工程知识。但是这些知识分布于各类文献中,是零碎的、分散的,这也意味着当下缺乏有效的措施将现有的知识进行抽取、收录和管理,不便于快速查阅,因此,获取知识的成本很昂贵。同时,很多知识的载体五花八门,知识的表示不统一,使钻井知识体系变得分散,不便于构建一个完整的钻井知识体系。

诞生于2012年的知识图谱在国内石油相关领域的发展虽然起步晚一点,但是已经有了许多优秀的研究成果。邓小亚提出了基于计算机本体理论的石油勘探开发知识库的构建方法,并以采油工程为例演示了知识本体库的开发路线和在石油钻探和开采领域建立知识库的可行性。文必龙等为了解决实体对齐问题,将孪生循环神经网络改进,完成了油藏地质领域知识图谱的构建。肖莉等提出了石油化工的领域语料库设计方案,完成了繁多的语料标注任务,使该领域的自然语言处理有了核心素材,为石油工业的知识工程建设奠定了坚实基础。张骄使用网络爬虫的技术手段从WOS(Web of Science)和中国知网数据库获取相关数据,并对数据进行聚类分析,完整建立页岩气水力压裂的知识图谱。钟原等在自己建立修井文本数据集的基础上,通过实验对比验证了基 于Bi-LSTM-CRF(Bidirectional-Long Short Term Memory-Conditional Random Field)的高精度NER(Named Entity Recognition)模型在石油非结构化文本的命名实体抽取方面有优秀的准确率。李大伟等从专业文献和中国石油勘探开发工程百科全书中抽取了海量的石油专业知识,构建庞大的石油工业知识图谱,并以此为基础利用深度语义匹配、检索候选文档等关键技术,研发了一套功能完善的“智能石油问答系统”。

但是在钻井这一垂直领域,还没有相关的知识图谱应用。基于上述背景和问题,本文运用知识图谱技术,充分地利用传统的钻井工程相关书籍和丰富的钻井领域相关文献资料,从中提取不同知识构建钻井工程知识图谱。同时使用Unity3D制作知识的搜索查询和知识可视化展示平台,实现钻井知识的快速检索和知识实体关系的可视化。

1 系统总体设计方案

钻井工程的知识是石油钻井施工的核心操作指南。目前,有关钻井的知识有些是以结构化的数据存储在关系数据库中;有些以文件、书本、操作手册等方式存储在纸质资料或者电子文档中;有些以非结构化的方式存储在互联网中。总之,这些钻井工程知识没有充分有效的集成,造成了“知识孤岛”的现象,这也导致钻井人员无法及时、有效地获取所需的知识。因此需要建立一个丰富的钻井工程知识图谱。

知识是有体系、有结构的,如果简单地将知识汇总后提供给人员学习,这仅仅是解决了知识来源的问题。如何让学员高效率地理解知识、理清知识脉络和掌握知识体系,做到举一反三和融会贯通是非常有价值的。Unity3D作为一款专业的游戏开发引擎,可以用于创作实时互动的3D内容,已经有了很多基于Unity3D开发的虚拟可视化软件应用于工业领域。因此本文利用Unity3D平台进行知识网络可视化研究和知识图谱可视化系统开发。

构建钻井工程领域知识图谱的可视化系统需要完成两大核心功能区块:一是基于Neo4j的钻井工程知识图谱构建;二是基于Unity3D的知识可视化系统实现。知识图谱,本质上是一种揭示实体之间关系的语义网络,从逻辑上分为模式层和数据层。使用Unity3D实现的知识可视化系统则作为应用层,完成知识的检索和可视化。研究开发的钻井知识图谱可视化系统的核心框架有四个层级,详细框架如图1所示。

图1 钻井知识图谱可视化系统框架图

(1)资源层。主要是对《钻井工程》《钻井事故与复杂问题》等书本结构化知识和通过网络爬虫技术在互联网上获取的非结构化知识进行预处理。

(2)模式层。模式层是知识图谱的核心,完成钻井工程本体库的构建工作,主要是将资源层的文件提炼成完善的本体模型。

(3)数据层。以模式层完成的本体库提供的概念模板作为指导,从各类结构化和非结构化知识中提取三元组注入Neo4j图数据库。

(4)应用层。从Neo4j图数据库获取数据,在Unity3D中实现知识可视化,为用户提供钻井知识查询和知识可视化等功能服务。

2 钻井知识图谱构建

知识图谱的逻辑结构包含数据层和模式层。在知识图谱的数据层,知识数据以“实体-关系-实体”或者“实体-属性-属性值”三元组作为基本存储方式,在图数据库中庞大的实体关系网络形成知识的“图谱”。模式层在数据层之上,是知识图谱的核心。在模式层存储的是经过提炼的抽象知识模板,常使用本体库来建立知识模板和约束条件来规范实体、关系以及属性等具体对象之间的联系。钻井工程知识图谱的构建分为三个阶段:数据获取、本体库构建以及Neo4j图数据库构建。

2.1 钻井工程知识数据的获取

本文的数据主要来源为《钻井工程》《钻井手册》和《钻井事故和复杂问题》等书籍,从书籍中获取了大量的结构化知识,并且这些知识是较为权威的。在下阶段的知识融合和知识推理的过程中,针对部分知识出现冗余或者错误的情况,以这些出版物的知识为判断标准。同时,由于出版物的知识可能存在滞后的问题,没有包含近阶段的新技术、新机制和新知识,于是利用网络爬虫技术对数据进行了扩充。

数据扩充包括实例扩充和三元组扩充两部分:

(1)实例扩充。采用网络爬虫技术进行实例扩充。首先利用爬虫技术从中国知网爬取钻井工程相关内容,使用分词工具获取分词,然后与核心知识库对比,扩充没有被收录的实例。

(2)三元组扩充。实例扩充后,使用百度百科作为数据源,利用爬虫技术完成实例的三元组扩充。

2.2 钻井知识图谱的本体构建

在完成数据获取工作后,即可根据钻井工程的知识结构使用Protégé软件开始构建本体工作。Protégé是斯坦福大学医学院生物信息研究中心开发的软件,主要用于知识获取和本体编辑,是语义本体构建的核心开发工具。Protégé提供了本体概念类、关系、属性和实例的构造,用户只需在概念层构建领域本体模型即可。在该软件中,Thing是所有类的根节点,所有的类都是从Thing派生出来的。在Classes的选项卡中根节点owl:Thing下进行子类的增加,并且在子类的创建过程中名字不可重复。

依据对钻井工程领域知识数据的分析与整理,先建立一个“钻井工程”根节点。然后在该节点的基础上,创建各层级子类节点。钻井工程知识本体库如图2所示。

图2 钻井工程知识本体库

2.3 基于Neo4j的钻井知识图谱构建

本文在调研已有的开放领域知识图谱的基础上,利用钻井知识本体库,设计并构建钻井工程这一垂直领域的知识图谱。Neo4j是基于Java实现的图数据库,以图的形式存储数据,无需预设数据模式,具有高效的处理能力,在知识图谱领域使用较为广泛。构建完整的知识图谱是一个非常庞大的工程,主要使用以下三个步骤进行图谱构建:

(1)知识提取。知识提取就是从已经处理过的结构化数据或未处理的非结构化的数据中提取知识。结构化数据一般就是直接从数据库通过一系列的规则映射为RDF数据格式。从非结构化数据中提取数据较为复杂,因为数据存在很多冗余或者无用部分,因此先提取实体,然后再进行关系抽取和属性抽取。

(2)知识融合。通过知识抽取,获取了知识的实体、关系和实体属性等信息,但是其中也必然存在大量的冗余和错误,因此需要对数据进行清理。知识融合,指不同数据来源的同一实体通过实体消歧(entity disambiguation)、共指消解(entity resolution)等技术被融合在一起。

(3)知识加工。原始数据在经过知识抽取和知识融合后,转化成了简练、准确的实体、关系和属性等核心知识要素。再经过知识加工的过程,就可以得到结构化的知识体系。

图3可以清晰地说明整个知识图谱的构建流程。

图3 知识图谱构建示意图

在经过上述几大开发步骤后,本文完成了钻井工程知识图谱的构建工作,部分数据如图4所示。

图4 部分钻井知识图谱数据展示

3 基于Unity3D的钻井知识可视化系统实现

3.1 基于FR算法的网络可视化

依据不同图的特性,研究人员设计实现了上百种网络布局技术。本文需要实现钻井知识图谱的数据可视化,经过调研和总结后,力导向图布局(Force-Directed Layout)算法把节点看作质点、把边作为质点之间的作用力,可以绘制出关系简洁明了的图形,非常适用于知识图谱的可视化。

Eades在1984年首次提出了力导向布局算法,其基本思想是将网络看成是一种带电荷的弹簧系统,节点为带电环,边为弹簧,节点之间的斥力和弹簧的弹力相互作用下,不断运动,直至互相稳定、平衡。但是该算法的计算开销大,研究人员在其基础上做了许多改进,诞生了KK算法、DH算法和FR算法。其中,FR算法由Fruchterman和Reingold提出,他们在Eades提出的算法基础上,将力导向布局算法的模型改进为静电力模型,还引入了模拟退火算法,降低了算法的时间复杂度。因此本文选用FR算法来实现知识图谱在Unity3D中的数据可视化。

FR算法在每次迭代过程中都会分三步计算:①计算所有节点之间的排斥力;②计算通过边连接起来的节点吸引力;③根据节点的排斥力和吸引力的综合受力情况计算节点的空间位移值。

在宽度为、高度为的节点绘制区域,任意节点在受到其他节点的相互作用力后,都有两个参数发生改变,即节点的位置pos和节点受力后的位移量disp。

FR算法的基本公式如下:

节点绘制区域面积为:

其中,为区域的高度,为区域的宽度。

理想距离为:

其中,||为区域内的节点数量。

节点和相邻,两节点之间的几何距离为:

节点和相邻,两节点之间的引力函数为:

节点和相邻,两节点之间的斥力函数为:

FR算法的伪代码如下。

输入:节点集合={,,…,v};边集合={,,…,e}。

输出:节点位置集合

.={.,.,…,v.};

MaxIterations=400,//假定最大迭代次数为400

for(i=1,i<=MaxIterations;i++){

//计算节点排斥力位移

for(v in V){

v.disp=0;

for(u in V){

Δ=v.pos-u.pos//表示u,v节点的位置差

.=.+(Δ/)f( ),*//C为常数,为了调节排斥力,美化布局

}

}

//计算节点吸引力力位移

for(e in E){

//v和u两节点之间有一条边

Δ=e.v.pos-e.u.pos//表示u,v节点的位置差

..=..-(Δ/)f( )

,

}

//更新节点位置并控制最大位移

for(v in V)

.=.+( ).||.*min(.,)//由温度t限制位移量

//通过宽度W和高度H,防止节点位移出边界

..=max(0,min( )

,..)

..=max(0,min( )

,..)

}

t=cool(t)//每次迭代,温度都减小

}

FR算法中引入了“温度”和“冷却”的概念,即采用了模拟退火算法。通过这种方式可以限制节点的最大位移,并且“温度”随着迭代次数的增加而减小,系统的内能也逐渐减小,使网络布局越来越好。

在图5中,右上角的粒子受外力作用产生位移,网络的内能增加。当外力撤走后,网络的平衡被打破,各个粒子都受到其他粒子的排斥力或者吸引力,整个网络就如图6所示,所有粒子在不断地发生位移。

图5 粒子受外力作用

图6 粒子间相互作用

但是随着粒子之间作用力的相互抵消和“温度”的下降,整个网络如图7所示,将再次回归平衡。

图7 系统恢复平衡

这也展示了FR算法在网络布局中的优秀特性,适合应用于网络可视化。

3.2 钻井工程知识查询和知识可视化的实现

在Neo4j图数据库正常运行的前提下,通过编写C#脚本使用WebRequest类建立Neo4j图数据库和unity3D平台的连接。使用IO流读取所需的数据,并以JSON文件的形式发送到Unity3D平台。平台解析接收的JSON文件,再根据自定义的Node、NodeProperties、Relationship、RelationshipProperties等类分别存储数据。依据这些数据可以实现UI界面刷新、自动生成节点及关系物体和利用FR算法实现数据网络自动布局。图8为系统的功能流程图。

图8 系统功能流程图

本系统使用了Unity3D内置一套完整的UGUI系统完成UI界面和功能开发。UGUI系统主要包括画布、按钮、文本框及滚动条等组件和事件机制(EventSystem)。通过组件和脚本的相互配合,可以开发出所需的UI界面,实现系统所需功能。系统的查询和节点可视化效果如图9所示,左侧为查询窗口,输入“粘吸卡钻”,点击“research”按钮后,在按钮的下方显示有9个节点和3个关系,并在右侧的显示区域自动绘制相关节点。

图9 知识查询和节点可视化效果图

显示区域内的所有节点都是通过预制体自动加载的,并且添加了Mesh Collider碰撞体和相应C#脚本。当鼠标移动到任意节点上就会检测到碰撞,节点的外围圆环会变成黄色,表示节点可被点击。点击鼠标左键,就会弹出该节点的详细属性面板,该面板使用了Scroll View组件的垂直滚动条来控制文字显示,达到了钻井知识的展示,具体效果如图10所示。

图10 钻井知识展示图

4 结语

本文针对钻井工程这一垂直领域的“知识孤岛”现象,结合目前数据模型描述不直观、不立体的特点,将图数据库存储和数据可视化相搭配,从而使用户能够直观地学习和了解以往不便描述和观察的知识结构。主要完成了以下几个方面的工作:

(1)通过纸质资料、电子文档和互联网资源获取了钻井工程的基础数据,并进行了初步的知识清洗和填充。然后根据这些知识建立了本体库。

(2)在数据和本体库的基础上完成了知识提取、知识融合以及知识加工工作,顺利完成了钻井工程知识图谱的构建。

(3)运用FR算法,使节点之间通过吸引力或者排斥力的相互作用,不断调整位置,最终系统达到稳态,实现了知识图谱在Unity3D中的可视化。

猜你喜欢
钻井工程图谱结构化
“植物界大熊猫”完整基因组图谱首次发布
精武门的武术图谱与徐悲鸿
顾丽英:小学数学结构化教学的实践探索
借助问题情境,让结构化教学真实发生
深度学习的单元结构化教学实践与思考
左顾右盼 瞻前顾后 融会贯通——基于数学结构化的深度学习
图表
钻井工程安全动态评价方法研究
浅析控压钻井技术探讨与展望
中国知名官方智库图谱