故障知识图谱是当前面向装备制造领域的落地重要探索领域,如何通过对设备的运行状态、运行日志进行信息抽取、关系建模,建成可供分析应用的知识库,并支撑故障诊断、维修辅助等应用场景,具有重要意义。
鉴于当前还未有系统性的开源相关项目整理出现,本文为了解决这一问题,从面向装备制造故障领域的知识图谱信息抽取、面向装备制造领域的移动端故障诊断分析平台以及代表性开源信息抽取组件三个方面进行介绍,从抽取评测(用于解决数据标注、定义和业务建模问题)、应用实例(用于解决如何用以及页面长啥样的问题)以及小白如何入门这几个层面进行揭示,供大家一起参考。
1、赛题背景
命名实体识别和关系抽取是知识图谱构建中两项重要的基础任务,自动构建高端装备制造业故障知识图谱对于实现高端装备制造的智能化检修和诊断具有重大意义。各种高端装备领域的故障案例文本是由业务专家或者专业维修人员撰写的描述相关设备异常、以及故障排查步骤的记录,该记录包括故障现象、故障原因、解决方法以及排故过程等,这些故障案例知识的利用受到数据结构化程度的影响,因而识别数据中的部件单元、性能表征、故障状态、故障检测工具等核心实体及其之间的组成关系至关重要。
地址:https://www.datafountain.cn/competitions/584
2、任务定义
本任务为信息抽取中的关系抽取任务,如图所示,带抽取的文本语料为工业制造领域的相关故障案例文本。
通过从大量故障案例文本抽取出部件单元、性能表征、故障状态、检测工具等实体及其关系,可以为后续高端装备制造业故障知识图谱构建和故障智能检修和实时诊断打下坚实基础。本任务需要从故障案例文本自动抽取4种类型的关系和4种类型的实体。关系类型为:部件单元的故障状态、性能表征的故障状态、部件单元和性能表征的检测工具、部件单元之间的组成关系。具体定义如下:
3、具体样例
{
"ID": "AT0003",
"text": "故障分析:1.经现场查看整车及动力电池故障灯报警;
2.用上位机查看故障码为总电压欠压二级,单体欠压二级,总压为133.6V,最高单体电压为3.373V,最低单体电压为3.121VSOC为17%初步判定SOC误差较大以及静态压差为265MV;
3.将该车充满电后总压为167.3V,最高单体4.189V,最低单体4.135V,故判断为单体压差过大;
4.当车辆总压为137.7V,SOC17%最高单体电压3.445V,最低单体电压为3.414V时,整车及动力电池故障灯报警,其故障为放电高温一级报警,此时动力电池最高温度为45℃(当天气温31℃,电充满温度为35℃途中路试未休息);
5.持续路试2次放电循环结果如下:①SOC10%总压为138V,最高单体电压3.454V,最低单体电压为3.428V,电池温度41℃、38℃(当天气温32℃路试中下雨,途中未休息)②SOC13%总压为139.5V,最高单体电压为3.493V,最低单体电压为3.459V,电池温度38℃、36℃(当天气温为30℃,分两次路试完成);
6.由于该车为OTS试制车根据以上所检测到的数据,SOC、温度、压差都不在正常范围内,依照现场条件,无法对上述异常情况现场进行排除。",
"spo_list": [
{"h": {"name": "SOC", "pos": [100, 103]}, "t": {"name": "误差较大", "pos": [103, 107]}, "relation": "部件故障"},
{"h": {"name": "总电压", "pos": [37, 40]}, "t": {"name": "欠压二级", "pos": [40, 44]}, "relation": "性能故障"},
{"h": {"name": "单体", "pos": [45, 47]}, "t": {"name": "压差过大", "pos": [167, 171]}, "relation": "部件故障"},
{"h": {"name": "车", "pos": [222, 223]}, "t": {"name": "报警", "pos": [231, 233]}, "relation": "部件故障"},
{"h": {"name": "车", "pos": [13, 14]}, "t": {"name": "报警", "pos": [22, 24]}, "relation": "部件故障"},
{"h": {"name": "动力电池故障灯", "pos": [224, 231]}, "t": {"name": "报警", "pos": [231, 233]}, "relation": "部件故障"},
{"h": {"name": "动力电池故障灯", "pos": [15, 22]}, "t": {"name": "报警", "pos": [22, 24]}, "relation": "部件故障"},
{"h": {"name": "单体", "pos": [45, 47]}, "t": {"name": "欠压二级", "pos": [47, 51]}, "relation": "部件故障"}]}
延伸项目地址: https://github.com/wgwang/CCL2022
1、赛题思路
随着工业生产自动化、数字化、智能化程度的日益加深,企业对设备的可靠性要求也越来越高。因而对设备故障的诊断和排除的研究具有重大的现实意义。互联网蕴含着大量有价值信息,是大数据的重要数据来源,也是经验交流留存的重要领地。通过对海量的分散的互联网数据进行采集,获取互联网上相关设备故障和维修解决方式,并形成知识库,可以提升故障判断的精准度和应用范围。
2、整体要求
当设备故障(某个或多个参数超出阈值)时,应用程序从网上抓取可能的故障原因和解决办法,并进行相关性排序总,形成匹配的故障诊断知识库;当出现类似故障时,应用程序先根据已有知识库诊断;若用户对诊断结果不认可,则通过网络抓取再次诊断,最终不断自我完善故障诊断知识库和精度。
数控机床故障诊断和维修是企业设备管理的难点和重点,设备在运行中会产生各种“疑难杂症”,不及时排出就会影响生产生活,甚至酿成事故。数控机床出了故障,一旦查清了故障点和故障原因,维修起来其实是一件比较容易的事。通过自适应设备故障诊断APP,根据故障信息,自动抓取互联网中适应的故障产生原因和优秀解决方法,形成知识库,将辅助设备维修人员快速诊断排出故障,保障生产。可以输入数控机床相关参数(品牌、型号、故障代码、某个或多个超出阈值参数、故障描述(文字或语音)等)或读取设备运行等相关数据,设置参数预警阈值;
3、项目概述
在这里我们介绍(https://github.com/wangrenyisme/Shukongdashi)这一项目,本项目是第八届中国软件杯大赛,基于移动端在线设备故障诊断平台的参赛作品。
该项目要求从网络上爬取相关设备故障和维修解决方式,并构建知识库,当设备出现故障时,用户通过输入数控机床相关参数(品牌、型号、故障代码、某个或多个超出阈值参数、故障描述(文字或语音)等),系统可以根据知识库来进行故障诊断和排除,如果没有满意的方案,系统会再次进行网络爬取,如果答案有效,则对知识库进行补充和优化。
我们设计系统时,主要的数据来源是《实用数控机床故障诊断及维修技术500例》这个PDF文档,我们尝试着对文档里的每一条故障描述进行拆解和分类(CNN),构建出了5中三元式推理规则,分别为:故障现象和故障现象之间存在并发症,故障前执行的操作间接导致的故障现象,某故障原因导致的故障现象,报警信息伴随的故障现象,故障部位常见的故障现象。使用Neo4j图数据库存储。
当用户输入一条故障信息时,我们按照上面构建RDF的方法,对故障描述先按照标点符号分句,然后使用CNN分类,识别出此次故障中用户执行了哪些操作,出现了哪些故障现象,然后根据知识图谱进行对照,除了推理出故障原因以及解决办法之外,还会推理出与已经发现的故障相关的未发现的设备故障,通过用户进一步检查反馈,可以进一步提高诊断结果的可靠性。如果用户没有找到满意的解决方法,还可以通过在线爬取网上的解决办法来做参考,如果找到了满意的解决办法,系统会将此次维修记录补充到知识图谱中,实现知识库的自学习。
4、构建效果
来源数据:
实现效果:
项目地址: https://github.com/wangrenyisme/Shukongdashi
最近找到一个质量较高的信息抽取相关组件,在本节中分享给大家:
1、NER实体识别组件
1)一种基于globalpointer的命名实体识别
地址:https://github.com/taishan1994/pytorch_GlobalPointer_Ner
2)一种基于TPLinker_plus的命名实体识别
地址:https://github.com/taishan1994/pytorch_TPLinker_Plus_Ner
3)一种one vs rest方法进行命名实体识别
地址:https://github.com/taishan1994/pytorch_OneVersusRest_Ner
4)一种级联Bert用于命名实体识别,解决标签过多问题
地址:https://github.com/taishan1994/pytorch_Cascade_Bert_Ner
5)一种多头选择Bert用于命名实体识别
地址:https://github.com/taishan1994/pytorch_Multi_Head_Selection_Ner
6)一种基于机器阅读理解的命名实体识别
地址:https://github.com/taishan1994/BERT_MRC_NER_chinese
2、三元组关系抽取
1)基于GlobalPointer的三元组抽取
地址:https://github.com/taishan1994/pytorch_GlobalPointer_triple_extraction
2)基于casrel的三元组抽取
地址:https://github.com/taishan1994/pytorch_casrel_triple_extraction
3)基于bert的关系抽取
地址:https://github.com/taishan1994/pytorch_bert_relation_extraction
4)基于LTP的三元组抽取
地址:https://github.com/taishan1994/ltp_triple_extraction
5)pytorch百度UIE关系抽取
地址:https://github.com/taishan1994/pytorch_uie_re
6)SpERT中文关系抽取
地址:https://github.com/taishan1994/SpERT_chinese
7)指针网络关系抽取
地址:https://github.com/taishan1994/PointerNet_Chinese_Information_Extraction
本文主要从面向装备制造故障领域的知识图谱信息抽取、面向装备制造领域的移动端故障诊断分析平台以及代表性开源信息抽取组件三个方面进行介绍。
如文章中所介绍的,从抽取评测(用于解决数据标注、定义和业务建模问题)、应用实例(用于解决如何用以及页面长啥样的问题)以及小白如何入门这几个层面进行揭示,可以更好的加深对该技术的印象 。
对于评测和项目的细节,大家可以进一步查看,加深理解。
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
就职于360人工智能研究院、曾就职于中国科学院软件研究所。
OpenKG
OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。
点击阅读原文,进入 OpenKG 网站。