基于日志事件关系生成KPI曲线并标记波段特征的方法转让专利

申请号 : CN202210292597.6

文献号 : CN114398898B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 戴曦尹立超徐旭朝

申请人 : 三峡智控科技有限公司

摘要 :

本发明公布了基于日志事件关系生成KPI曲线并标记波段特征的方法,根据日志中事件的关系先生成日志KPI曲线,再将KPI曲线分割为若干段等长的波段,根据波段的非时间维度聚类成多个簇,提取各个簇的基波,比较各个簇的各波段数据与基波的相似度,找出各个簇的分组边界线,将各个簇的各波段数据分组,提取各簇中连续同类波段的总时间长度,取总时间长度的最大值作为滑动窗口宽度。该窗口用于分割KPI曲线,使分割后的各窗口中波段容易聚类归类,利于将对整KPI曲线的迅速成由不同类型波段组成的波段链,然后对单独监测指标的KPI曲线进行周期检测和类型检测标记标签,再利用该窗口分割单独的KPI曲线,利用基波KPI曲线内的波段进行分组加标签。

权利要求 :

1.基于日志事件关系生成KPI曲线的方法,其步骤包括:

步骤F1.设置训练句子组成的训练句子集,同一工控系统中工控设备基于监测指标获得故障日志,将故障日志中的语料分别与各训练句子组成待处理句子对,并计算相似度,删除相似度低于阈值一的语料;

步骤F2.对步骤F1中的剩余语料进行分词,生成由多个特征词组成的分词队列,并对多个特征词标注词性,获得语料的词性队列;

步骤F3.若词性队列含有对应特殊词性的多个特殊特征词,则利用命名实体识别模型从多个特殊特征词中获得命名实体的边界及类别,将词性队列中特殊特性词的词性更新为命名实体的边界及类别,获得更新后的词性队列,其中,特殊词性包括:数词、时间词;

步骤F4.根据F3对剩余语料的标注对剩余语料分类,统计各类别词性队列的出现频次,降序排序,挑选出排序大于阈值二的词性队列,统计各类别词性队列中各种动词、名词的出现频次,并进行降序排序,根据排序阈值依次从按动词、名词的出现频次的排序中筛选出排名靠前的两种词性队列集合,提取两种词性队列集合的交集对应的语料,构建真训练集;

步骤F5.从真训练集的语料中筛选出含有词性标注组合为[n,v,n]的分词队列,n表示名词的词性,v表示动词的词性,并从中提取出词性为名词或专有名词的第一个和第二个分词分别作为事件一和事件二,形成事件元组;

步骤F6. 基于现有的故障事件关系表,使用Snowball算法发现事件元组的事件关联规则,根据事件关联规则发现事件元组中的关联事件组,即生成日志关键事件关系表;

步骤F7. 基于日志关键事件关系表重复使用步骤F6直至收敛;

步骤F8.以步骤F7生成的每种事件关系作为一种日志关键事件标签标记故障日志,以各日志关键事件标签标每分钟出现的次数作为监测指标,建立各个日志KPI曲线,使用高斯核平滑处理各个日志KPI曲线;

步骤A1.将全部的日志KPI曲线中各分钟的数据点集合并,再分割成时间宽度为s分钟的若干段波段,根据波段的非时间维度聚类成多个簇,提取各个簇的基波,比较各个簇的各波段数据与基波的相似度,找出各个簇的分组边界线,将各个簇的各波段数据分组;

步骤A2.提取被分到不同分组中的各段日志KPI曲线数据集的时间戳,得到每个分组的时间戳列表;

步骤A3.将每组的时间戳列表做移步相减,即使用各时间戳列表中下一项的起始时间戳与本项的起始时间戳相减获得事件触发间隔列表;

步骤A4.将各簇的事件触发间隔合并成时间间隔KPI集,依据NCC计算各簇的时间间隔KPI集之间的相似度;

步骤A5.将步骤A4获得的各簇之间时间间隔KPI集的相似度展开成相似度矩阵;

步骤A6.使各簇之间时间间隔KPI集的相似度按数值大小依次排序,然后将相似度的数值拟合成平滑线,依据拐点法获得各簇之间时间间隔KPI集的相似度的分界线;

步骤A7.将相似度矩阵中数值大于拐点的且相邻的簇标记为同一个相似组,统计各相似组的簇数;

步骤A8.计算相似组中簇数最多的一组的总时间间隔,作为滑动窗口宽度;

步骤A9.先按步骤A8获得的滑动窗口,将各个日志KPI曲线分割成时序宽度为总时间间隔的若干段日志KPI曲线窗口段,按步骤A1的分割方法将日志KPI曲线窗口段分割成时序宽度为1分钟的i段日志KPI曲线数据集 ,每一段是一个波段;

将步骤A1得到的各基波逐一与每一条日志KPI曲线的每一个窗口内的各波段比较相似度,并相似度从大到小排序,依据排序找出分组边界线,将波段分组,形成基波标签构成的标签链,获取不同KPI的模式波形,称为KPI曲线码型重排表;

步骤A10. 将不同的KPI曲线码型重排表统一时间维度放置在一个维度中,获得KPI曲线码型重排关联表。

2.根据权利要求1所述的方法,其特征在于,步骤F1中计算相似度包括以下步骤:基于预构建的语料库对句子对中的句子分别进行分词,其中,预构建的语料库包括行业语料库和普通语料库;

将分词后句子的各特征词转化为词向量,并使用余弦相似度分别计算各句子对的相似度,若相似度低于阈值一则删除该语料。

3.根据权利要求2所述的方法,其特征在于,步骤F8和步骤A1之后还包括:

Z01.用傅里叶变换提取日志KPI曲线的频谱强度图;

Z02.提取震动幅度最高的点计算其对应的周期,即待检验周期;

Z03.设定假设的周期,即期待周期,当且仅当待检验周期的长度为期待周期的95%到

105%区间范围内时,对待检验周期进行相关强度检测,当频谱强度足够时认定待检验周期为符合要求的周期,依据日志KPI曲线周期性的区别对滤波后的日志KPI曲线打的标签,称为日志KPI曲线周期标签。

4.根据权利要求3所述的方法,其特征在于,步骤Z03之后还包括:

Z04.将每个日志KPI曲线相互使用NCC算法计算两两相似度,并展开成对角的相似度矩阵,将相似度填入相似度矩阵,矩阵中行和列序号为日志KPI曲线的编号,相似度矩阵的行数和列数为日志KPI曲线的数量;

Z05.使用谱聚类算法根据上述的相似度矩阵输出不同簇类,对不同簇类标记不同的日志KPI曲线标签,称为KPI曲线业务标签。

5.根据权利要求1所述的方法,其特征在于,步骤F6包括:

步骤C1.使用现有的故障事件关系表,匹配事件元组中包含故障事件关系表中的事件的队列,并生成模板;模板的格式为五元组形式,分别为,事件1类型,,事件

2类型,;len为任意设定长度,为事件1左边len个词汇的向量表示,为事件1和事件2间的词汇向量表示,为事件右边len个词汇的向量表示;步骤C2.对生成的模板采用聚类,将相似度大于阈值三的模板聚为一类,利用平均的方法生成新的模板,加入用来存储模板的规则库;由步骤C2可知模板的格式记为,E1、E2分别表示模板P的事件1类型和事件2类型, 表示E1左边3个词汇长度的向量表示, 表示E1、E2之间词汇的向量表示, 表示E2右边三个词汇长度的向量表示,模板间的相似度计算,模板1: ,模板2: ,若满足条件 ,即满足模板P1的事件1类型E1与模板P2的事件1类型

相同且模板P1的事件2类型E2与模板P2的事件2类型 相同,则模板P1与模板P2的相似度由 计算得,μ1μ2μ3为权重,因 对模板间相似度计算结果影响较大,设置μ2>μ1>μ3;若不满足条件 ,则模板P1与模板P2的相似度记为0;

步骤C3.逐一将步骤C1获得的事件元组的模板与规则库中的模板进行相似度计算,相似度小于阈值三的舍弃,相似度大于阈值三的模板中的事件加入日志关键事件关系表中替换故障事件关系表。

6.根据权利要求1所述的方法,其特征在于,步骤A1包括以下步骤:

步骤J1.将全部的日志KPI曲线中各分钟的数据点集提取到同一个曲线集合L中,将曲线集合L按分割成时间宽度为s分钟的若干段日志KPI曲线数据集Mi,i为段序号;

步骤J2.使用dbscan算法依据每段日志KPI曲线数据集的属性计算各段数据集之间的欧氏距离,对i段的日志KPI曲线数据集进行聚类,获取k个簇类和异常项,每个簇是一个分组数据集,每个分组数据集有j段日志KPI曲线数据集Fj;

步骤J3.计算每个分组数据集中j段日志KPI曲线数据集的算术平均值ΣFj/j,作为该分组的基波;

步骤J4.使用NCC算法计算每个分组数据集的各段日志KPI曲线数据集Fj与该基波的波形相似度,并从大到小排序,在波形相似度排序为前95%的日志KPI曲线数据集Fj中,取波形相似度的最小值作为该组的分组边界线Bk;

步骤J5.使用NCC算法计算每段日志KPI曲线数据集Mi与各分组的基波的波形相似度,以各组的分组边界线为基准,判断各段日志KPI曲线数据集是否属于该分组,对于同时属于多个分组的一段日志KPI曲线数据集,依据分类得分Q进行排序,将日志KPI曲线数据集Mi分组到分类得分Q最小的分组中,得到每段日志KPI曲线数据集的分组信息,。

7.根据权利要求1所述的方法,其特征在于,步骤A7替换为:将相似度矩阵中数值大于拐点的相似度数值替换为1,将数值低于拐点的相似度数值替换为0;

将得到的相似度矩阵中相似度为1且相邻的簇标记为同一个相似组,统计各相似组的簇数。

8.根据权利要求1所述的方法,其特征在于,步骤A9中将KPI曲线窗口段分割成波段后的步骤为:使用NCC算法依据步骤A1得到的各基波逐一与每一条日志KPI曲线的每一个窗口内的各波段进行相似度计算,得到 ,并从大到小排序,在波形相似度排序为前’

95%的波段中,取波形相似度的最小值作为该分组的分组边界线Bk,以各组的分组边界线为基准,判断各段日志KPI曲线数据集 是否属于该分组,对于同时属于多个分组的一段日志KPI曲线数据集 ,依据分类得分 进行排序,将日志KPI曲线数据集Mi分组到分类得分 最小的分组中,形成基波标签构成的标签链,获取不同KPI的模式波形,称为KPI曲线码型重排表,。

9.根据权利要求1所述的方法,其特征在于,所有标签链依据时间维度排列后,再基于序列挖掘算法SPADE或GSP发掘在不同时间上发生的不同标签链之间的因果关系。

说明书 :

基于日志事件关系生成KPI曲线并标记波段特征的方法

技术领域

[0001] 本发明涉及人工智能技术领域,尤其涉及基于日志事件关系生成KPI曲线并标记波段特征的方法。

背景技术

[0002] 异常点检测(又称为离群点检测)是找出其行为不同于预期对象的一个检测过程,这些对象被称为异常点或者离群点。异常检测方式通常包括基于统计的模型、基于距离的模型、线性变换的模型、非线性变换的模型、机器学习的模型等。
[0003] KPI(key performance indicators)指的是对服务、系统等对象的监控指标 (如网络中的延迟、吞吐量等)。其存储的形式是按其发生的时间先后顺序排列而成的数列,也就是我们通常所说的时间序列。时间序列的异常检测就是通过历史的数据分析,查看当前的数据是否发生了明显偏离了正常的情况。KPI 数据异常检测有着十分重要的意义:通过实时的监控KPI数据,发现KPI数据存在的异常,及时进行相应处理,从而保证应用的正常运行。
[0004] 通过对KPI数据设置阈值来进行实时异常检测的方法十分普遍,然而针对系统日志进行实时异常检测的方法还没有公开报道。
[0005] 传统机器学习为了追求有效性,大多采用监督学习方式,在实践中异常标注难以批量获得,通过海量有标注的数据样本提高模型输出的准确度,因而需要大量业务专家进行人工标注KPI曲线,往往需要反反复复调整矫正,耗时耗力,实际中可能需要同时开始监控几百万、几千万的KPI,因此,现实中的异常检测实践中往往无法找到某一种算法可以同时满足上述要求,无法同时解决上面的挑战;而非监督学习常用聚类等技术,主要用于特征发现,数据探索等场景,因为缺乏标注,其结果需要数据科学家进行解释才能抽象的映射到业务模式,并不能直接作用结果;弱监督在具体的实现中因为分阶段的引入非监督/监督方法,循环递归的提升准确性,显得过于学术,落地困难,另一方面为了融合具体方法,需要采用向量表达来统一不同方法间的表示,结果不容易应用人员理解。
[0006] 数据量越多,业务场景越复杂,引入的方式越复杂,需要投入成本/人力就越来越多样化。这种循环直接限制了机器学习在全行业的推广,而集中在收益较高的行业,而导致常规行业只采用放弃抵抗,被动防守,依靠全行业平均水平来倒灌,实现业务场景迁移,具体如下:如果一个方法在其他行业特别有效,人员已经富余后借用一下观察效果,如果可行在考虑使用。而工业应用场景就是这种被动防守的行业之一。

发明内容

[0007] 本发明的第一个目的是提供一种基于日志事件关系生成KPI曲线并标记波段特征的方法,处理工业控制系统中监测指标产生的文本日志,将高度相关的事件合并成同一个分组,产生与被监控的指标的KPI曲线周期性相关的日志KPI曲线。
[0008] 本发明的技术方案是:基于日志事件关系生成KPI曲线的方法,其步骤包括:
[0009] 步骤F1.设置训练句子组成的训练句子集,同一工控系统中工控设备基于监测指标获得故障日志,将故障日志中的语料分别与各训练句子组成待处理句子对,并计算相似度,删除相似度低于阈值一的语料;
[0010] 步骤F3.对步骤F2中的剩余语料进行分词,生成由多个特征词组成的分词队列,并对多个特征词标注词性,获得语料的词性队列;
[0011] 步骤F3.若词性队列含有对应特殊词性的多个特殊特征词,则利用命名实体识别模型从多个特殊特征词中获得命名实体的边界及类别,将词性队列中特殊特性词的词性更新为命名实体的边界及类别,获得更新后的词性队列,其中,特殊词性包括:数词、时间词;
[0012] 步骤F4.根据F3对剩余语料的标注对剩余语料分类,统计各类别词性队列的出现频次,降序排序,挑选出排序大于阈值二的词性队列,统计各类别词性队列中各种动词、名词的出现频次,并进行降序排序,根据排序阈值依次从按动词、名词的出现频次的排序中筛选出排名靠前的两种词性队列集合,提取两种词性队列集合的交集对应的语料,构建真训练集;
[0013] 步骤F5.从真训练集的语料中筛选出含有词性标注组合为[n,v,n]的分词队列,n表示名词的词性,v表示动词的词性,并从中提取出词性为名词和专有名词的第一个和第二个分词分别作为事件一和事件二,形成事件元组;
[0014] 步骤F6.基于现有的故障事件关系表,使用Snowball算法发现事件元组的事件关联规则,根据事件关联规则发现事件元组中的关联事件组,即生成日志关键事件关系表;
[0015] 步骤F7.基于日志关键事件关系表重复使用步骤F6直至收敛;
[0016] 步骤F8.以步骤F7生成的每种事件关系作为一种日志关键事件标签标记故障日志,以各日志关键事件标签标每分钟出现的次数作为监测指标,建立各个日志KPI曲线,使用高斯核平滑处理各个日志KPI曲线。
[0017] 有利地,同一工控系统指有直接或间接的物料供给关系、或电能传递关系、或热能传递关系、或机械能传递关系、或磁场传递关系、或能量转化关系、或信号控制关系的工控设备组成,同一工控系统中工控设备基于监测指标获得故障日志,由于监测指标具有相关性,故障日志也同样具有相关性,日志中关于监控指标的每条记录会有部分文本差异,直接聚类需要大量的人工标引和筛查工作,描述设备或装置的行为或状态的日志文本具有相似的句子文本结构,及相似的词性队列特征,步骤F1 F4筛选出相似词性队列的文本,剔除了~并非记录设备或装置的行为或状态的日志文本;文本中的名词和名词常有特定的关联逻辑关系,可依据该关系,将高度相关的事件关系合并成同一个分组,产生与被监控的指标的KPI曲线周期性相关的日志KPI曲线。
[0018] 进一步地,步骤F1中计算相似度包括以下步骤:基于预构建的语料库对句子对中的句子分别进行分词,其中,预构建的语料库包括行业语料库和普通语料库;
[0019] 将分词后句子的各特征词转化为词向量,并使用余弦相似度分别计算各句子对的相似度,若相似度低于阈值一则删除该语料。
[0020] 进一步地,步骤F8之后还包括:
[0021] Z01.用傅里叶变换提取日志KPI曲线的频谱强度图;
[0022] Z02.提取震动幅度最高的点计算其对应的周期,即待检验周期;
[0023] Z03.设定假设的周期,即期待周期,当且仅当待检验周期的长度为期待周期的95%到105%区间范围内时,对待检验周期进行相关强度检测,当频谱强度足够时认定待检验周期为符合要求的周期,依据日志KPI曲线周期性的区别对滤波后的日志KPI曲线打的标签,称为日志KPI曲线周期标签。
[0024] 周期检验是对波形打上周期和非周期的标志,周期的标志代表存在定期的反复的事件,这类信息往往意味着业务知识上的状态检测,旋转件这类业务信息;与之相对非周期的意味着事件业务。他们都是在其他步骤用到的业务标签,且与其他操作不相关;周期性的KPI存在相似性可能是因为由于多种原因形成的相似关系,不存在业务上的关联,而非周期KPI更可能是存在直接和间接的关系。
[0025] 进一步地,步骤Z03之后还包括:
[0026] Z04.将每个日志KPI曲线相互使用NCC算法计算两两相似度,并展开成对角的相似度矩阵,将相似度填入相似度矩阵,矩阵中行和列序号为日志KPI曲线的编号,相似度矩阵的行数和列数为日志KPI曲线的数量;
[0027] Z05.使用谱聚类算法根据上述的相似度矩阵输出不同簇类,对不同簇类标记不同的日志KPI曲线标签,称为KPI曲线业务标签。
[0028] 有利地,依据KPI曲线整体的相似性将KPI曲线进行聚类分类形成波形相近的各个簇。
[0029] 进一步地,步骤F6包括:
[0030] 步骤C1.使用现有的故障事件关系表,匹配事件元组中包含故障事件关系表中的事件的队列,并生成模板;模板的格式为五元组形式,分别为,事件1类型,,事件2类型,;len为可任意设定长度,为事件1左边len个词汇的向量表示,为事件1和事件2间的词汇向量表示,为事件右边len个词汇的向量表示;
[0031] 步骤C2.对生成的模板采用聚类,将相似度大于阈值三的模板聚为一类,利用平均的方法生成新的模板,加入用来存储模板的规则库;由步骤C2可知模板的格式可记为,E1、E2分别表示模板P的事件1类型和事件2类型, 表示E1左边3个词汇长度的向量表示, 表示E1,E2之间词汇的向量表示,  表示E2右边三个词汇长度的向量表示,模板间的相似度计算,模板1: ,模板2:  ,
若满足条件 ,即满足模板P1的事件1类型E1与模板P2的事件1类型
相同且模板P1的事件2类型E2与模板P2的事件2类型 相同,则模板P1与模板P2的相似度可由 计算得,μ1μ2μ3为权重,因 对模板间相似度计算
结果影响较大,可设置μ2>μ1>μ3;若不满足条件 ,则模板P1与模板P2
的相似度可记为0;
[0032] 步骤C3.逐一将步骤C1获得的事件元组的模板与规则库中的模板进行相似度计算,相似度小于阈值三的舍弃,相似度大于阈值三的模板中的事件加入日志关键事件关系表中替换故障事件关系表。
[0033] 本发明的另一个目的是提供一种KPI曲线标记波段特征的方法,将日志KPI曲线分割为若干段等长的波段,根据波段的非时间维度聚类成多个簇,提取各个簇的基波,比较各个簇的各波段数据与基波的相似度,找出各个簇的分组边界线,将各个簇的各波段数据分组,提取各簇中连续同类波段的总时间长度,取总时间长度的最大值作为滑动窗口宽度。该窗口用于分割日志KPI曲线,使分割后的各窗口中波段容易聚类归类,利于将对整日志KPI曲线的迅速成由不同类型波段组成的波段链,然后对单独监测指标的日志KPI曲线进行周期检测和类型检测标记标签,再利用该窗口分割单独的日志KPI曲线,利用基波对日志KPI曲线内的波段进行分组加标签。
[0034] 对上述方法得到的KPI曲线标记波段特征的方法,包括以下步骤:
[0035] 步骤A1.将全部的日志KPI曲线中各分钟的数据点集合并,再分割成时间宽度为s分钟的若干段波段,根据波段的非时间维度聚类成多个簇,提取各个簇的基波,比较各个簇的各波段数据与基波的相似度,找出各个簇的分组边界线,将各个簇的各波段数据分组;
[0036] 步骤A2.提取被分到不同分组中的各段日志KPI曲线数据集的时间戳,得到每个分组的时间戳列表;
[0037] 步骤A3.将每组的时间戳列表做移步相减,即使用各时间戳列表中下一项的起始时间戳与本项的起始时间戳相减获得事件触发间隔列表;
[0038] 步骤A4.将各簇的事件触发间隔合并成时间间隔KPI集,依据NCC计算各簇的时间间隔KPI集之间的相似度;
[0039] 步骤A5.将步骤A4获得的各簇之间时间间隔KPI集的相似度展开成相似度矩阵;
[0040] 步骤A6.使各簇之间时间间隔KPI集的相似度按数值大小依次排序,然后将相似度的数值拟合成平滑线,依据拐点法获得各簇之间时间间隔KPI集的相似度的分界线;
[0041] 步骤A7.将相似度矩阵中数值大于拐点的且相邻的簇标记为同一个相似组,统计各相似组的簇数;
[0042] 步骤A8.计算相似组中簇数最多的一组的总时间间隔,作为滑动窗口宽度;
[0043] 步骤A9.先按步骤A8获得的滑动窗口,将各个日志KPI曲线分割成时序宽度为总时间间隔的若干段日志KPI曲线窗口段,按步骤A1的分割方法将日志KPI曲线窗口段分割成时序宽度为1分钟的i段日志KPI曲线数据集 ,每一段是一个波段;
[0044] 将步骤A1得到的各基波逐一与每一条日志KPI曲线的每一个窗口内的各波段比较相似度,并相似度从大到小排序,依据排序找出分组边界线,将波段分组,形成基波标签构成的标签链,获取不同KPI的模式波形,称为KPI曲线码型重排表;
[0045] 步骤A10. 将不同的KPI曲线码型重排表统一时间维度放置在一个维度中,获得KPI曲线码型重排关联表。
[0046] 有利地,对日志KPI曲线处理后得到的标签信息,含有全部波段的全部信息,包含波段和波形两部分表现,波段标签即基波类型和基波标签的时间排列信息,波形标签有业务标签和周期标签两种。
[0047] 不同的KPI曲线如果使用同一KPI曲线业务标签,可能存在因果关系,其中属于非周期KPI比周期KPI曲线有更高的可能性。
[0048] 不同的KPI曲线如果在临近时间段存在同一KPI曲线段码型基波标签,可能存在因果关系,其中重复次数更多的有着更高的可能性。
[0049] 进一步地,步骤A1包括以下步骤:步骤J1.将全部的日志KPI曲线中各分钟的数据点集提取到同一个曲线集合L中,将曲线集合L按分割成时间宽度为s分钟的若干段日志KPI曲线数据集Mi,i为段序号;
[0050] 步骤J2.使用dbscan算法依据每段日志KPI曲线数据集的属性计算各段数据集之间的欧氏距离,对i段的日志KPI曲线数据集进行聚类,获取k个簇类和异常项,每个簇是一个分组数据集,每个分组数据集有j段日志KPI曲线数据集Fj;
[0051] 步骤J3.计算每个分组数据集中j段日志KPI曲线数据集的算术平均值ΣFj/j,作为该分组的基波;
[0052] 步骤J4.使用NCC算法计算每个分组数据集的各段日志KPI曲线数据集Fj与该基波的波形相似度,并从大到小排序,在波形相似度排序为前95%的日志KPI曲线数据集Fj中,取波形相似度的最小值作为该组的分组边界线Bk;
[0053] 步骤J5.使用NCC算法计算每段日志KPI曲线数据集Mi与各分组的基波的波形相似度NCCMi‑Jk,以各组的分组边界线为基准,判断各段日志KPI曲线数据集是否属于该分组,对于同时属于多个分组的一段日志KPI曲线数据集,依据分类得分Q进行排序,将日志KPI曲线数据集Mi分组到分类得分Q最小的分组中,得到每段日志KPI曲线数据集的分组信息,[0054] Q=((1‑NCCM i‑Jk)/(1‑Bk))2。
[0055] 进一步地,步骤A7替换为:将相似度矩阵中数值大于拐点的相似度数值替换为1,将数值低于拐点的相似度数值替换为0;
[0056] 将得到的相似度矩阵中相似度为1且相邻的簇标记为同一个相似组,统计各相似组的簇数。
[0057] 进一步地,步骤A9中将KPI曲线窗口段分割成波段后的步骤为:使用NCC算法依据步骤A2得到的各基波逐一与每一条日志KPI曲线的每一个窗口内的各波段进行相似度计算,得到 ,并从大到小排序,在波形相似度排序为前95%的波段中,取波形相似度的最小值作为该分组的分组边界线B’k,以各组的分组边界线为基准,判断各段日志KPI曲线数据集 是否属于该分组,对于同时属于多个分组的一段日志KPI曲线数据集,依据分类得分 进行排序,将日志KPI曲线数据集Mi分组到分类得分 最小的分组中,形成基波标签构成的标签链,获取不同KPI的模式波形,称为KPI曲线码型重排表,[0058] 。
[0059] 进一步地,所有标签链依据时间维度排列后,再基于序列挖掘算法SPADE或GSP发掘在不同时间上发生的不同标签链之间的因果关系。
[0060] 同一工控系统的工控设备生成的故障日志的文本中的特定名词具有相互的因果影响,表现为成对的名词因同一诱因同步出现,相似的名词队列可归为一类,即步骤F8得到的事件关系,统计事件关系得到的频次可得到日志KPI曲线,而日志KPI曲线是同步于工控设备监控物理参数模拟量获得的指标KPI曲线一起出现的,因此指标KPI曲线能通过分割、聚类归集为有标签排序特征的波段链,因此日志KPI曲线也有相同的波段链特征,不同的物理参数因同一诱因产生的指标KPI曲线的波段链特征相似,因此不同事件关系因同一诱因产生的日志KPI曲线的波段链特征也相似。
[0061] 为发现这样的波段链,需要采用合适宽度的滑动窗口沿日志KPI曲线滑动,从窗口中截取日志KPI曲线单元段,从日志KPI曲线单元段中提取的若干等长的波段,基于特征基波与波段的相似度,标记日志KPI曲线单元段中各波段的标签,使日志KPI曲线单元段成为有标签排序特征的波段链,这样每在日志KPI曲线上滑动一次窗口,获得一个波段链,所有的波段链等长,只是波段的分类标签排序不同,那么可以基于波段链的排序特征的不同,将通过滑动窗口获得的所有波段链依据时间维度排列后,基于序列挖掘算法SPADE、专家评定、知识图谱融合可得到不同特征的波段链在时间维度上的因果关系,即得到事件关系与事件关系间的因果关系,有助于补充专家对于系统中故障认定的知识体系,发现之前未发现的监测指标的关联关系,从而可在操作中基于新发现的监测指标之间的关联关系建立新的预警控制关系和调控阈值,提高同一系统中各被监测物的系统稳定性。
[0062] 本发明解决的技术问题类比于现有技术CN110726898B,CN110726898B中通过向自编码网络输入波形得到的特征压缩码,就相当于本发明的基于KPI曲线提取波段链或基于故障日志归纳事件元组。将压缩码输入分类模型得到故障波形的类型,就相当于本发明的基于序列挖掘算法SPADE、专家评定、知识图谱融合可得到不同特征的波段链在时间维度上的因果关系;或就相当于将事件元组输入现有的故障事件关系表(分类模型)基于Snowball分类为关联事件组。

附图说明

[0063] 图1是从同一工控系统中基于工控设备生成的故障日志生成的日志KPI曲线;
[0064] 图2为形成的基波标签构成的标签链;
[0065] 图3为根据故障日志文本生成日志KPI曲线并聚类后的类别。

具体实施方式

[0066] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述;显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下述实施例中标签链和波段链是相同的含义,KPI曲线单元段与KPI曲线窗口段是相同的含义。同一工控系统指有直接或间接的物料供给关系、或电能传递关系、或热能传递关系、或机械能传递关系、或磁场传递关系、或能量转化关系、或信号控制关系的工控设备组成,同一工控系统中工控设备基于监测指标获得故障日志,由于监测指标具有相关性,故障日志也同样具有相关性。
[0067] 实施例1
[0068] 基于日志关键词聚类生成KPI的方法,其步骤包括:
[0069] R1收集同一发电站工控系统网络中工控设备基于监测指标获得的故障日志,根据故障日志构建事件元组,snowball算法处理故障日志,来构建事件关系。
[0070] 构建事件元组的方法:
[0071] F1设置训练句子组成的训练句子集,从故障日志中提取语料分别与各训练句子组成待处理句子对,并基于预构建的语料库对句子对中的句子分别进行分词,其中,预构建的语料库包括行业语料库和普通语料库;
[0072] F2将分词后句子的各特征词转化为词向量,并使用余弦相似度分别计算各句子对的相似度,若相似度低于阈值则删除该语料,如阈值设置为0.9;
[0073] 步骤F1 F2用于从故障日志中挑出文法、语义结构是用于指代、行为记录和状态描~述的句子,工控系统中故障日志的一般文法如:[对象 是 什么], [对象 完成 某个任务]、 [处于 某个状态]、 [某一项 为 多少],因为这类句子描述结构歧义少,有利于剔除故障日志中的错误日志,保留工业记录日志;
[0074] 分词时使用jieba.cut函数将语料进行分词,cut函数的定义如下:
[0075] def cut( sentence, cut_ all=False, HMM=True)
[0076] 其中sentence是需要分词的句子样本;cut_all是分词的模式,jieba分词有全模式和精准模式两种,分别用true和false来选择,默认是false即精准模式;HMM就是隐马尔可夫链,是在分词的理论模型中用到的,默认是开启的。
[0077] F3对步骤F2中的剩余语料进行分词,由多个特征词组成的分词队列,并对多个特征词标注词性,获得语料的词性队列;
[0078] 标注词性使用jieba.posseg.cut函数对输入的词语返回类别代号。杨庆跃在“jieba分词的词性表”中记载了jieba.posseg.cut函数的使用步骤和词性分类表。
[0079] F4若词性队列含有对应特殊词性的多个特殊特征词,则利用命名实体识别模型从多个特殊特征词中获得命名实体的边界及类别,将词性队列中特殊特性词的词性更新为命名实体的边界及类别,获得词性队列;
[0080] 其中,特殊词性包括:数词、时间词,本实施例的应用场景中只有数值和时间利用词性分类容易出现识别不准确;例如图3中对语料“16:10:23(Ⅰ套)信号出现脉冲允许”分词获得词性队列后得到“{16: m,:: x,10: m,:: x,23: m,(: x,Ⅰ套: n,): x,信号: n,出现: v,脉冲: n,允许: v}”,其中:m,表示数词,:x,表示字符串,:n,表示名词,:v,表示动词。对语料“16:17:00(Ⅰ套)信号出现另一通道接收”按步骤F4进行处理后得到的词性队列为:“{16:17:00: t,(: x,Ⅰ套: n,): x,信号: n,出现: v,另一通道: n,接收: v}”,本步骤避免了将较难识别的时间词的词性标注为数词,从而使含有时间词的队列和含有数词的队列能通过词性队列区分。
[0081] 其中,命名实体识别模型可以从待处理语料中识别出命名性指称项。狭义上,是识别出人名、地名、组织机构名、专有名词这四类命名实体。通常包括两部分:(1)实体边界识别;(2) 确定实体类别(人名、地名、机构名或其他)。命名实体识别的方法有多种,例如:基于规则的方法、基于特征模板的方法、基于神经网络的方法等,命名实体识别模型可以基于上述方法构建。
[0082] 例如:命名实体识别模型(CRF)对句子“我来到陶家村”进行实体标注,正确标注后的结果为:我/O来/O到/O陶/B家/M村/E(O 表示当前词不是地理命名实体,B M E 分别表示当前词为地理命名实体的首部 内部 尾部)。采用线性链 CRF 来进行解决,那么(O, O, O, B, M, E)是其一种标注序列,(O, O, O, B, M, E)也是其一种标注选择。
[0083] F5根据F4对剩余语料的标注对剩余语料分类,统计各类别词性队列的出现频次,统计各类别词性队列中各种:动词、名词的出现频次;
[0084] F6各类别词性队列分别按各种的动词、名词的出现频次进行降序排序,根据排序阈值依次从上述两种排序中筛选出排名靠前的两种词性队列集合,提取两种词性队列集合的交集对应的语料,构建真训练集;
[0085] F7从真训练集的语料中筛选出含有词性标注组合为[n,v,n]的分词队列,并从中提取出词性为名词或专有名词的第一个和第二个分词分别作为事件一和事件二,形成事件元组;
[0086] F8使用Snowball算法发现事件元组的事件关联规则,根据事件关联规则发现事件元组中的关联事件组:
[0087] 步骤C1.使用现有的故障事件关系表,匹配事件元组中包含故障事件关系表中的事件的队列,并生成模板;模板的格式为五元组形式,分别为,事件1类型,,事件2类型,;len为可任意设定长度,为事件1左边len个词汇的向量表示,为事件1和事件2间的词汇向量表示,为事件右边len个词汇的向量表示;
[0088] 步骤C2.对生成的模板采用聚类,将相似度大于阈值0.7的模板聚为一类,利用平均的方法生成新的模板,加入用来存储模板的规则库;由步骤C2可知模板的格式可记为 ,E1、E2分别表示模板P的事件1类型和事件2类型, 表示E1左边3个词汇长度的向量表示, 表示E1,E2之间词汇的向量表示,  表示E2右边三个词汇长度的向量表示,模板间的相似度计算,模板1: ,模板2:  ,
若满足条件 ,即满足模板P1的事件1类型E1与模板P2的事件1类型
相同且模板P1的事件2类型E2与模板P2的事件2类型 相同,则模板P1与模板P2的相似度可由 计算得,μ1μ2μ3为权重,因 对模板间相似度计算
结果影响较大,可设置μ2>μ1>μ3;若不满足条件 ,则模板P1与模板P2的
相似度可记为0;
[0089] 平均的方法即对同一类中的模板的向量取平均,生成新的模板,可参考《关系抽取之snowball算法‑程序员大本营》。
[0090] 步骤C3.逐一将步骤C1获得的事件元组的模板与规则库中的模板进行相似度计算,相似度小于阈值0.7的舍弃,相似度大于阈值0.7的模板中的事件加入日志关键事件关系表中替换故障事件关系表;
[0091] 步骤C4.重复步骤C1 C3,直至经步骤C3处理后没有可舍弃的模板;~
[0092] 步骤R2以步骤C4生成的每种事件关系作为一种日志关键事件标签标记故障日志。
[0093] 如图1,以各日志关键事件标签标每分钟出现的次数作为监测指标,建立各个日志KPI曲线,使用高斯核平滑处理各个日志KPI曲线;
[0094] 步骤A9根据日志KPI曲线的周期性分类打标;
[0095] 对每一种事件关系的日志KPI曲线进行周期性验证检查,依据日志KPI周期性的区别对高斯核平滑处理后的日志KPI曲线打的标签,称为日志KPI曲线周期标签;
[0096] 步骤D1周期性验证检查包括以下步骤:
[0097] Z01.用傅里叶变换提取日志KPI曲线的频谱强度图;
[0098] Z02.提取震动幅度最高的点计算其对应的周期,即待检验周期;
[0099] Z03.设定假设的周期,即期待周期,当且仅当待检验周期的长度为期待周期的95%到105%区间范围内时,对待检验周期进行相关强度检测,当频谱强度足够时认定待检验周期为符合要求的周期。
[0100] 步骤A10根据日志KPI曲线的相似度分类打标;
[0101] 每个日志KPI曲线相互使用NCC算法计算两两相似度,并展开成对角的相似度矩阵,将相似度填入相似度矩阵,矩阵中行和列序号为日志KPI曲线的编号,相似度矩阵的行数和列数为日志KPI曲线的数量,相似度矩阵中的数值为各日志KPI曲线之间的相似度;
[0102] 使用谱聚类算法根据上述的相似度矩阵,用簇类标记不同的日志KPI曲线标签,获得日志关键事件标签的映射关系(业务隐式关系);
[0103] “https://zhuanlan.zhihu.com/p/29849122”介绍了谱聚类的分类方法。
[0104] 步骤A11对步骤A10得到的KPI曲线按实施例4的步骤进行预处理。
[0105] 实施例2
[0106] 基于实施例1获得的日志KPI曲线标记波段特征的方法,包括以下步骤:
[0107] 步骤A1.将全部的日志KPI曲线中各分钟的数据点集提取到同一个曲线集合L中,将曲线集合L按分割成时间宽度为s分钟的若干段日志KPI曲线数据集Mi,i为段序号;
[0108] 步骤A2.使用dbscan算法依据每段日志KPI曲线数据集的属性计算各段数据集之间的欧氏距离,对i段的日志KPI曲线数据集进行聚类,获取k个簇类和异常项,每个簇是一个分组数据集,每个分组数据集有j段日志KPI曲线数据集Fj;
[0109] 步骤A3.计算每个分组数据集中j段日志KPI曲线数据集的算术平均值,ΣFj/j,作为该分组的基波;
[0110] 步骤A4.使用NCC算法计算每个分组数据集的各段日志KPI曲线数据集Fj与该基波的波形相似度,并从大到小排序,在波形相似度排序为前95%的日志KPI曲线数据集Fj中,取波形相似度的最小值作为该组的分组边界线Bk;
[0111] 步骤A5.使用NCC算法计算每段日志KPI曲线数据集Mi与各分组的基波的波形相似度NCCM i‑J k,以各组的分组边界线为基准,判断各段日志KPI曲线数据集是否属于该分组,对于同时属于多个分组的一段日志KPI曲线数据集,依据分类得分Q进行排序,将日志KPI曲线数据集Mi分组到分类得分Q最小的分组中,得到每段日志KPI曲线数据集的分组信息,[0112] Q=((1‑NCCM i‑J k)/(1‑Bk))2;
[0113] NCCM i‑J k越大,Q就越小,说明Mi与簇类k越相似,当日志KPI曲线数据集Mi与不同簇类的相似度NCCM i‑J k相同时,Bk越小说明该簇类Mi与簇类k的相似度NCCM i‑J k在该簇类中波形相似度排序中越靠前;通过这个公式可以计算出该日志KPI曲线数据集Mi在候选簇中的可能性,从而计算出最有可能是哪一类簇。
[0114] 步骤A6.提取被分到不同分组中的各段日志KPI曲线数据集的时间戳,得到每个分组的时间戳列表;
[0115] 步骤A7.将每组的时间戳列表做移步相减,即使用各时间戳列表中下一项的起始时间戳与本项的起始时间戳相减获得事件触发间隔列表;
[0116] 事件触发间隔即每个分组数据集中相邻两段日志KPI曲线数据集的时间间隔;
[0117] 步骤A8.将各簇的事件触发间隔合并成时间间隔KPI集,依据NCC计算各簇的时间间隔KPI集之间的相似度;若不同簇的时间间隔KPI集相近,说明簇的波形在时间总宽度上相近;
[0118] 步骤A9.将步骤A8获得的各簇之间时间间隔KPI集的相似度展开成相似度矩阵;如表1,a d为簇的序号,相似度矩阵的行数和列数为簇的数量,相似度矩阵中的数值为各簇之~间时间间隔KPI集的相似度,相似度矩阵是一个对角矩阵;
[0119]
[0120] 步骤A10.使各簇之间时间间隔KPI集的相似度按数值大小依次排序,然后将相似度的数值拟合成平滑线,依据拐点法获得各簇之间时间间隔KPI集的相似度的分界线;
[0121] 步骤A11.将相似度矩阵中数值大于拐点的相似度数值替换为1,将数值低于拐点的相似度数值替换为0,如表2;
[0122]
[0123] 步骤A12.将步骤A11得到的相似度矩阵中相似度为1且相邻的簇标记为同一个相似组,统计各相似组的簇数;
[0124] 步骤A13.计算相似组中簇数最多的一组的总时间间隔,作为滑动窗口宽度;
[0125] 以该总时间间隔设置为滑动窗口的宽度,利用该窗口将日志KPI曲线分割成若干段,分割出的每一段的时间宽度覆盖了分步骤S12得到的时长最大的相似组。以该滑动窗口扫描日志KPI曲线,能将连续出现的簇快速分割到一个窗口中,再快速聚类到同一个波形类别,减小计算量,且能对日志KPI曲线的波段进行整体归类,减少遗漏知识的可能性。
[0126] 上述的NCC(Normalized cross correlation)算法其定义为:
[0127]
[0128] 式中,xt为背景波形,yt+h为模板波形,NCC的值在‑1~1之间,‑1代表变换前后波形相反,0代表两波形正交,1代表完全相同。NCC只描述两波形的宏观相似程度,与波形幅值,能量衰减多少无关。
[0129] 步骤A14.先按步骤A13获得的滑动窗口,将步骤F10获得的各个日志KPI曲线分割成时序宽度为总时间间隔的若干段日志KPI曲线窗口段,按步骤A1的分割方法将日志KPI曲线窗口段分割成时序宽度为1分钟的i段日志KPI曲线数据集 ,每一段是一个波段;
[0130] 使用NCC算法依据步骤A2得到的各基波逐一与每一条日志KPI曲线的每一个窗口内的各波段进行相似度计算,得到 ,并从大到小排序,在波形相似度排序为前’95%的波段中,取波形相似度的最小值作为该分组的分组边界线Bk,以各组的分组边界线为基准,判断各段日志KPI曲线数据集 是否属于该分组,对于同时属于多个分组的一段日志KPI曲线数据集 ,依据分类得分 进行排序,将日志KPI曲线数据集Mi分组到分类得分 最小的分组中,如图2形成基波标签构成的标签链,获取不同KPI的模式波形,称为KPI曲线码型重排表, ;
[0131] 经步骤A14处理后得到的标签信息,含有全部波段的全部信息,包含波段和波形两部分表现,波段标签有基波类型,波形标签有业务标签和周期标签两种。
[0132] 这样每在日志KPI曲线上滑动一次窗口,获得一个波段链,所有的波段链等长,只是波段的分类标签排序不同,本实施例将有关联关系的不同监测指标的日志KPI曲线的曲线特征转换为了标签链排序特征,由于有关联关系,所以这些日志KPI曲线的波幅虽然不同,但周期相似起伏节奏相似,也就是标签排列,这样可以将海量的有关联关系的KPI曲线统一成标准一致的标签链。
[0133] 步骤A15.将不同的KPI曲线码型重排表统一时间维度放置在一个维度中,获得KPI曲线码型重排关联表。
[0134] 不同的日志KPI曲线如果使用同一日志KPI曲线业务标签,可能存在因果关系,其中属于非周期日志KPI比周期日志KPI曲线有更高的可能性。
[0135] 不同的日志KPI曲线如果在临近时间段存在同一日志KPI曲线段码型基波标签,可能存在因果关系,其中重复次数更多的有着更高的可能性。
[0136] 所有标签链依据时间维度排列后,基于序列挖掘算法SPADE或GSP可以发掘在不同时间上发生的不同标签链之间的因果关系,如果两件事总是成对发生,认为两件事存在相关,如果其中一件事总是发生在另一件之前,则认为两者之间存在因果,前因后果。有助于补充专家对于系统中故障认定的知识体系,发现之前未发现的监测指标的关联关系,从而可在操作中基于新发现的监测指标之间的关联关系建立新的预警控制关系和调控阈值,提高同一系统中各被监测物的系统稳定性。