牛增贤, 刘海峰, 徐伟峰, 李 刚,2, 谢 庆, 王洪涛,2
(1. 华北电力大学 计算机系, 河北 保定 071003;2. 华北电力大学 复杂能源系统智能计算教育部工程研究中心, 河北 保定 071003;3. 华北电力大学 电力工程系, 河北 保定 071003)
变压器作为电力能源输送的重要中间节点, 其健康情况直接影响整个电力系统的安全运行[1-2]. 目前, 变压器的运维工作主要依赖于技术和管理人员的知识与经验, 需要工作人员熟悉变压器运维知识, 并对变压器运维的历史数据进行查阅、 分类和统计. 该方法工作量大、 知识提取效率低, 且易产生疏忽和遗漏[3]. 虽然通过关键词在传统数据库中进行检索的方法能提高知识提取的效率, 但传统数据库建模不灵活, 很难适用于复杂多变的变压器运维场景[4]. 随着电网规模的不断扩大, 变压器运维工作具有数量大、 类型多、 处置难、 响应慢等特点, 仅靠人工积累和传统数据库检索的方法提取可用知识效率低, 难以实现大量变压器的快速有效运维[5]. 因此, 电力系统亟需智能化技术提高知识提取的效率, 从而形成专业的变压器运维知识库, 支撑变压器的快速精准运维.
知识图谱(knowledge graph)是一种将实体和属性通过关系联结在一起的语义网络知识库. 知识图谱以形式化、 简洁化的方式表示知识, 表示方式一般为〈头实体,关系,尾实体〉[6-7]. 与传统数据库相比, 知识图谱的知识表达形式简洁直观, 能有效组织复杂多样的知识. 构建电力变压器运维知识图谱, 一方面能充分挖掘和沉淀变压器运维中的知识, 另一方面可为变压器健康管理辅助决策、 变压器缺陷故障分析等场景提供支持.
近年来, 知识图谱在电力领域的应用逐渐增多. 例如: 文献[8]提出了一种电力设备知识图谱, 用于避免电力设备信息丢失, 提高数据储存和提取的效率; 文献[9]提出了知识图谱在设备健康管理中的应用场景, 并分析了当前电力领域对知识图谱技术的需求; 文献[10]利用缺陷记录实现了电力设备缺陷知识图谱; 文献[11]完成了电网故障处置知识图谱的构建, 并进行了可视化. 虽然近几年知识图谱技术在电力领域中的应用得到快速发展, 但这些知识图谱中涉及到变压器信息的节点数量较少, 变压器运维知识不全面, 尚未形成用于变压器运维的专业知识图谱.
本文以电力变压器为核心设备, 拟基于变压器运维文本数据, 提出一个电力变压器运维知识图谱的构建框架. 首先, 根据专家经验建立电力变压器运维知识图谱模式层; 其次, 为解决变压器运维文本的实体界限模糊和语义信息理解不充分问题, 提出一种基于扩展Span表示的深度神经网络知识抽取框架, 其中Span指句中跨度为n的某个片段, 如某句出现的“2号变”即为跨度为3的Span; 最后, 使用特征匹配和深度模型相融合的方法抽取实体和关系, 创建电力变压器运维知识图谱数据层.
在变压器日常运行和维护的过程中, 工作人员积累了大量变压器运维相关的文本资料, 统称为变压器运维文本. 变压器运维文本蕴含着与变压器最密切的信息, 如变压器故障现象和设备质量状况等, 这些信息为工作人员的变压器运维工作提供了帮助. 变压器运维文本示例列于表1. 由表1可见, 变压器运维文本类型包括变压器设备事故调查报告书、 设备异常分析报告等. 这些文本都是对某地区某一变压器故障的详细记录, 包含变压器、 变电站以及故障等信息.
表1 变压器运维文本示例Table 1 Examples of transformer operation and maintenance text
通过对大量实际变压器运维文本的分析发现, 变压器运维文本内容丰富、 语义复杂, 给提取变压器运维知识带来了挑战. 此外, 由于人为记录的主观性, 不同变压器运维文本的侧重点也不同. 变压器运维文本具有以下特点:
1) 变压器运维文本种类多, 文本内容差异大, 不同类型的变压器都会发生局部放电故障, 但由于变压器种类和处理人员不同, 变压器运维文本的格式和处置方式的描述也不同;
2) 变压器运维文本的专业性强, 描述清晰, 变压器运维文本包含大量专有名词和专业术语, 如变压器的型号、 故障的类型等, 都有详细清晰的记录;
3) 变压器运维文本中实体之间边界模糊, 如“某变电站2号变局部放电故障”, 这句话包含“某变电站”、 “2号变”和“局部放电”3个实体, 且它们之间无明显边界词.
本文在构建变压器运维知识图谱时, 充分考虑了上述文本特点, 提出一种融合特征匹配和深度学习的知识抽取方法. 对特征明显的知识, 使用特征匹配方法; 对无明显特征的知识, 使用深度学习方法.
知识图谱可分为两类: 领域知识图谱和不限领域知识图谱(通用知识图谱)[12]. 领域知识图谱面向某一领域, 例如医疗领域知识图谱等, 是由某一领域专业数据构成的行业知识库. 不限领域知识图谱面向各行各业, 覆盖面广, 但对知识的准确度要求较低, 常见的通用知识图谱有DBpedia[13]和YAGO[14]等. 本文面向电力领域, 从本体设计、 模式层和数据层3个方面构建电力变压器运维知识图谱.
领域知识图谱的本体设计方法有自顶向下式、 自底向上式和混合式[15]3种. 自顶向下式能清晰地展现概念间的层级关系, 但人工依赖性强, 数据质量要求高; 自底向上式数据质量要求较低, 适合大型知识图谱的构建, 但抽取到的知识噪声较大、 准确性不高; 混合式是前两种方式的结合, 融合了这两种方式的优点, 先依靠专家指导进行知识图谱的模式层构建, 再通过知识抽取建立知识图谱的数据层.
本文采用混合方式对电力变压器运维知识图谱进行构建, 如图1所示. 首先, 采用自顶向下式的构建方法, 建立变压器运维的本体概念以及本体之间的关系, 完成电力变压器运维知识图谱的模式层构建. 其次, 为确保知识图谱的完备性, 采用自底向上式的构建方法, 对变压器运维文本进行实体、 关系和属性的抽取, 完成电力变压器运维知识图谱的数据层构建; 同时, 对抽取结果进行归纳总结, 将归纳总结出的概念映射补充到知识图谱模式层中. 最后, 将构建好的概念层与数据层知识图谱存储到Neo4j图数据库中, 完成电力变压器运维知识图谱的构建.
图1 电力变压器运维知识图谱构建框架Fig.1 Construction framework of power transformer operation and maintenance knowledge graph
模式层建立在数据层之上, 描述了实体关系和属性关系. 本文根据电力专家的指导创建了电力变压器运维知识图谱的模式层, 如图2所示. 首先, 变压器是本文构建的知识图谱中最核心的本体, 且变压器在概念上属于变电设备, 故定义了变压器和变电设备本体. 其次, 为了解变压器内部构件、 历史发生故障等信息, 针对变压器定义了部件、 故障等本体. 此外, 由于变压器历史故障现象以及故障处置方法等信息可有效辅助工作人员对变压器故障进行诊断, 故针对变压器的故障定义了故障类别、 故障等级和处置措施等本体.
2.3.1 数据层知识抽取框架
电力领域的知识抽取一般采用基于规则的方法, 通过电力专家制定规则和模板完成对模式相对固定知识的抽取[16]. 这种方法相对简单, 对模式固定的语句抽取准确率高, 缺点是灵活性较低, 难以适应具有丰富语义的场景. 目前, 基于深度学习的方法已成功应用于知识抽取问题, 并取得了很好的效果. 这种方法对专家的依赖较低, 且灵活性高.
图3 融合规则和深度学习的知识抽取框架Fig.3 Knowledge extraction framework of fusion rules and deep learning
2.3.2 基于特征匹配的实体抽取技术
变压器运维文本中对于发生故障时的天气状况以及故障处置措施描述非常详细. 基于特征匹配抽取的实体类别和示例列于表2.
表2 基于特征匹配抽取的实体类别和示例Table 2 Entity types and examples based on feature matching extraction
由表2可见, 这两类实体内容广、 字符跨度大, 深度学习方法很难捕捉实体特征, 但句式和位置相对固定, 特征明显. 如表2中天气实体, 有明显实体触发词位于最后位置, 且存在固定单位, 使用特征匹配方法能准确匹配到该实体信息.
特征匹配是指通过特征模板与文本内容的比较, 找到文本内容与模板相匹配的部分. 特征匹配实体抽取流程如图4所示. 以表2中的天气实体为例, 实体触发词设为“气象条件”. 输入文本, 发现文本存在“气象条件”触发词; 然后锁定触发词所在句, 即为表2中示例句; 通过正则表达式: “re.findall(‘(气温.+?℃)’, 示例句)、 re.findall(‘(湿度.+? %)’, 示例句)、 re.findall(‘(风速.+?级)’, 示例句)”对示例句进行特征匹配, 最后将结果拼接在一起, 完成对天气实体的抽取. 人工记录具有主观性, 特征匹配的方法有时不能或不能完整地抽取知识, 所以特征匹配的模板需要定期更新. 对于不能抽取知识的情形, 由专家分析该类变压器运维文本, 并进行触发词的更新; 对于不能完整抽取的情形, 本文将已抽取结果与原文实体所在句进行余弦相似度匹配判断抽取是否完整, 根据实体情形设置不同的阈值. 若匹配结果大于阈值, 则无需更新; 若匹配结果小于阈值, 则人工进行正则表达式的更新.
图4 基于特征匹配的实体抽取流程Fig.4 Flow chart of entity extraction based on feature matching
关系匹配技术仅用于抽取表2中两类实体的关系, 这两类实体通常是一段话, 使用深度学习模型抽取关系很难提取实体之间的依赖关系, 故使用关系匹配. 关系匹配将实体类型与预设关系三元组进行匹配, 图2中所有的边及边的两个端点作为预设关系三元组. 如特征匹配出实体的类型是处置措施, 关系匹配后发现处置措施只与故障有关系, 且变压器运维文本通常只针对某变压器的某一具体故障, 故处置措施与实体抽取出的故障实体建立关系.
2.3.3 基于扩展Span表示的实体抽取技术
实体抽取也称为命名实体识别(named entity recognition, NER), 基于深度学习的实体抽取方法主要抽取变压器、 部件等实体, 其实体类型列于表3. 由表3可见, 这些实体成分复杂、 出现频率高、 位置不固定, 基于特征匹配的方法很难灵活地抽取实体. 深度学习方法可以自动学习特征, 具有较强的灵活性. 但将深度学习应用到变压器运维文本, 仍存在实体界限模糊和语义信息理解不充分的问题.
在诺内特看来,“如果统治政权倾向于不顾被统治者的利益或者否认它们的正统性,那么它就是压制性的。”[2]因为,在这种法制模式下,最受关注的是权力的权威性及其形成的统治、管理秩序,为了实现这种秩序性核心价值,“刑法是法律官员关注的中心,是表现法律权威的典型方法。”[2]整体来看,中国古代历朝法制状况均系“言法必刑”“以刑为主”,由于其固有的强大威慑性,刑法成为治理手段的首选,其他的社会规范则退居其后,以致长期形成了社会治理刑法化的路径依赖。
表3 基于深度学习抽取的实体类型和示例Table 3 Entity types and examples extracted by deep learning
为解决变压器运维文本的实体界限模糊和语义信息理解不充分问题, 本文提出一种使用扩展上下文信息和BERT[17]预训练模型获取扩展Span表示的方法, 分别实现实体和关系抽取.
BERT预训练模型是一种带有掩码的语言模型, 通过在海量语料库上的学习可生成单词的特征表示, 提升下游任务的性能. 针对实体界限模糊问题, 模型对输入进行改进: 在训练时, 根据实体的位置标注, 将每个实体的实体类型插入到原始句子中. 例如“2号变发生故障”, “2号变”为变压器实体类型, 改进后的句子为“〈e: 变压器〉2号变〈/e: 变压器〉发生故障”. 这种方法可以明确实体界限, 使模型更好学习实体的特征. 模型只学习本句信息, 可能会忽略上下文的联系, 导致语义信息理解不充分. 如图5所示, 若只输入本句信息, 模型会很难理解2号变究竟发生了哪个具体故障, 难以建立2号变与具体故障等信息之间的依赖关系, 导致模型不能完整地捕获2号变的语义特征. 针对语义信息理解不充分的问题, 模型采用合并句子上下文方式构建更好的上下文表示: 设定扩充上下文大小为N, 在输入句前填充N/2个字的前文信息, 在句后添加N/2个字的下文信息.
本文采用Span-level NER[18]的方式标注数据. 基于扩展Span表示的实体抽取模型结构如图5所示, 由预训练语言模型BERT以及带有ReLU激活函数的两层前向神经网络组成. 首先, 通过BERT获得输入句子中每个字的上下文表示Ht, 其中Et是每个字的字向量、 句子向量和位置向量之和.然后, 设置Span跨度, 以该跨度枚举所有Span标签. 如图5中, 若Span跨度设为3, “2号变”即有“2”、“2号”、“2号变”等多个Span, 且每个Span均为候选实体. 每个Span表示为
he(si)=(XSTART(i),XEND(i),Φ(si)),
(1)
其中:XSTART(i)为Span开始位置的上下文表示, 对应图5中绿点;XEND(i)为Span结束位置的上下文表示, 对应图5中的紫点;Φ(si)为Span跨度的特征表示, 对应图5中黄点. Span跨度指包含字符的数目, 如“2”的跨度为1, “2号变”的跨度为3. 最后, 通过预测实体为类型的概率:
Pe(e|si)=Softmax[FFNN(he(si))],
(2)
其中FFNN[19]为带有ReLU激活函数的两层前馈神经网络.
2.3.4 基于扩展Span表示的关系抽取技术
属性抽取和关系抽取本质上都是抽取两个实体之间的关系, 故本文采用统一的抽取方法. 实体间关系抽取(relation extraction, RE)依赖于实体抽取的结果, 两个抽取任务相互独立, 可以更好地学习特定任务的特征. 关系抽取仍采用基于扩展Span表示的方法, 变压器运维文本中实体间的关系类型列于表4.
表4 基于深度学习抽取的关系类型Table 4 Relation types extracted by deep learning
基于扩展Span表示的关系抽取模型结构为: 首先, 实体边界以及类型作为标识符被加入到实体Span前后, 作为关系模型的输入, 表示为
S=…〈S:ei〉,ESTART(i),…,EEND(i),〈/S:ei〉…〈O:ej〉,ESTART(j),…,EEND(j),〈/O:ej〉…,
(3)
其中〈S:ei〉表示头实体开始位置, 〈/S:ei〉表示头实体结束位置, 〈O:ej〉表示尾实体开始位置, 〈/O:ej〉表示尾实体结束位置; 其次, 通过BERT模型获得填充后的实体对之间的Span表示为
hr(si,sj)=(ESTART(i),ESTART(j)),
(4)
其中ESTART(i)为头实体开始位置的向量表示,ESTART(j)为尾实体开始位置的向量表示; 最后, 预测两个实体之间最可能的关系为
Pr(r|si,sj)=Softmax[FFNN(hr(si,sj))].
(5)
基于扩展Span表示的关系抽取模型利用实体模型的抽取结果以及关系标签信息进行训练, 最终完成关系抽取任务.
本文选取240份变压器运维文本作为变压器运维文本数据集. 变压器运维文本数据集主要来源于变压器现场故障分析报告、 异常检测报告等半结构化文本, 其中变压器的故障分析报告约占70%. 运维文本的内容包括变压器的属性、 变压器故障运维方案等, 涵盖了电力变压器领域大部分的故障类型、 故障诊断方法以及热点研究内容.
数据集经过人工标注后, 按8∶1∶1随机划分为训练集、 验证集和测试集. 表5列出了变压器运维文本数据集的句子统计数据. 本文选取标准的评价方法, 模型评价指标为准确率(P)、 召回率(R)和F1值[20]. 对于实体抽取任务, 如果一个实体边界和类型的预测值与标注信息相同, 则认为该预测是正确的; 对于关系抽取任务, 如果两个实体边界的预测值与关系类型的预测值均与标注信息相同, 则认为该关系预测正确.
表5 数据集统计信息Table 5 Statistical information of datasets
实验数据集为本文构建的变压器运维文本数据集, 实验环境为Visual Studio Code, 深度学习框架版本为Pytorch 1.4.0, Transformers 3.0.2, Python版本为3.7, 显卡为Tesla K80.
3.2.1 基于特征匹配的实体抽取实验与分析
基于特征匹配的实体抽取方法用于抽取天气和处置措施两类实体, 两类实体的最初触发词设置及实验结果列于表6, 关系匹配结果列于表7.
表6 基于特征匹配的实体抽取实验结果Table 6 Experimental results of entity extraction based on feature matching
表7 关系匹配实验结果Table 7 Experimental results of relationship matching
由表6可见, 天气和处置措施的召回率偏低. 这是因为人为记录具有主观性, 工作人员对变压器运维的描述存在差异. 例如, 对于天气实体, 有些变压器运维文本存在定义的天气实体触发词, 从而有利于匹配; 但有些文本中不存在定义的触发词, 特征匹配的方法就不能匹配到天气信息. 此外, 实体触发词可能与其他信息相关, 影响了抽取准确率. 例如, “处置”是处置措施实体的触发词, 但在一些变压器运维文本中, “处置”一词出现在变压器部件处置情况中. 但本文基于特征匹配的实体抽取方法所用的正则表达式和触发词是不断更新的, 为匹配效果的提升提供了支撑. 而关系匹配的准确率依赖于天气、 处置措施和故障3个实体是否能被准确识别, 任一实体识别失败, 都会降低某关系抽取的准确度.
3.2.2 基于扩展Span表示的实体抽取实验
本文基于所构建的数据集验证所提方法在实体抽取上的性能, 参数设置列于表8. 基于扩展Span表示的实体抽取模型(Extended Span)对比实验模型选择隐Markov模型(HMM)以及深度学习模型: BiLSTM和BiLSTM+CRF. 本文设置上下文数量N=100, 实验结果列于表9.
表8 实体抽取模型参数设置Table 8 Parameters setting of entity extraction model
表9 实体抽取实验结果Table 9 Experimental results of entity extraction
变压器运维文本具有描述清晰和流程性强的特点, 为知识抽取任务带来了帮助. 由表9可见, 各模型的实验结果均在80%以上. 其中, Extended Span模型通过跨句信息的帮助取得了最优. HMM主要学习了电力数据集的初始状态分布, 当文本的描述发生变化时, 会导致预测精度降低. 双向长短期记忆网络(BiLSTM)具有一定的非线性拟合能力, 可以从前后两个方向对句子进行建模, 捕获长距离上下文信息, 自然语言处理(CRF)可对BiLSTM预测结果进行优化, 辅助提高预测精度. 与Extended Span模型相比, 对比模型的输入没有经过预训练语言模型, 所以词向量表示的质量可能会下降, 影响了后续训练. 此外, 变压器运维文本数据集存在实体界限模糊的现象, 导致对比模型难以准确捕获不同实体的特征. 与对比模型相比, Extended Span模型由预训练模型(BERT)作为编码器, 为模型的训练提供了较准确的词向量表示.
Extended Span模型通过添加实体标签以及合并句子上下文方式进行了实体抽取. 为验证本文方法的有效性, 对本文方法进行了消融实验, 实验结果列于表10.
表10 消融实验结果Table 10 Results of ablation experiment
由表10可见, 添加实体标签的方式提升了模型的性能, 但去除上下文信息后, 模型准确率和召回率明显下降, 说明上下文信息可使模型更好地理解句子信息. 实验结果表明, 本文方法给实体抽取任务带来了帮助.
3.2.3 基于扩展Span表示的关系抽取实验
本文基于所构建的数据集验证所提方法在关系抽取模型上的性能, 关系抽取同样设置上下文数量N=100, 模型参数设置列于表11.
表11 关系抽取模型参数设置Table 11 Parameters setting of relationship extraction model
为验证本文方法的有效性, 选取SSAN[21]深度学习模型作为对比模型. SSAN模型将每篇文档作为输入进行关系抽取, 充分考虑了实体之间的共指关系. 关系抽取实验结果列于表12. 由表12可见, Extended Span模型的各指标均取得领先. 分析认为, 变压器运维文本中关系种类多, 但具有共指关系的实体少, 所以影响了SSAN模型的性能. 而变压器运维文本中多种关系存在较明显的关系触发词, 且Extended Span模型以句子作为输入, 并融合了上下文信息, 模型可更好地学习到各关系的特征, 故抽取结果高于SSAN模型.
表12 关系抽取实验结果Table 12 Experimental results of relationship extraction
表4中待抽取关系类型的抽取结果列于表13. 由于变压器运维文本中的部件有很多别名以及代号, 且变压器和部件之间很少有触发词, 如“XX变954跳闸事故报告”, 954代表某一部件, 变压器和部件之间无关系触发词. 关系模型难以提取它们之间的关系, 故本文不再列出.
表13 表4中特征抽取关系类型的关系抽取实验结果Table 13 Experimental results of relationship extraction for types of relationships to be extracted in Table 4
由表13可见, 模型对各关系类别的抽取结果存在差异. 分析认为, 变压器运维文本中多种关系存在较明显的关系触发词, 为关系识别提供了帮助. 如“2号变局放故障开始时间为2021-12-03”, 模型通过“开始时间”, 可以判断“2号变局放故障”和“2021-12-03”之间是有开始日期的关系. 型号关系识别的准确率较低, 但召回率较高, 达到90%以上, 这是由于该关系触发词帮助了模型识别变压器和型号的关系, 但如果实体抽取没能正确识别出“型号”实体, 则会间接影响关系抽取.
本文对240份变压器运维文本进行实体和关系抽取后, 共形成1 278个实体和1 653条关系. 将实体之间的关系以三元组形式存储到Neo4j图数据库, 进行了展示, 图6为部分电力变压器运维知识图谱.
图6 部分变压器运维知识图谱Fig.6 Part of transformer operation and maintenance knowledge graph
图7为基于变压器运维文本构建的电力领域变压器运维知识图谱中有关110 kV变电站1号变压器的知识, 当该变压器再次发生故障时, 知识图谱辅助处理人员会迅速明晰变压器运行工况、 历史故障等关键信息, 查明故障原因.
图7 某变压器运维知识图谱的部分信息Fig.7 Part of information of a transformer operation and maintenance knowledge graph
综上所述, 本文以电力变压器运维文本为对象, 构建了电力变压器运维知识图谱. 首先, 搭建了电力变压器运维知识图谱框架, 完整构建了变压器运维知识图谱; 其次, 为解决变压器运维文本中实体界限模糊、 语义信息理解不充分的问题, 提出了一种基于扩展Span表示的知识抽取方法, 并使用特征匹配和深度模型相融合的方法抽取了实体和关系; 最后将知识抽取结果存储到Neo4j图数据库, 并进行了展示. 实验结果表明, 本文知识抽取方法准确率较高.