一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种停电计划文本解析方法与流程

2021-11-22 13:22:00 来源:中国专利 TAG:


1.本发明涉及文本解析技术领域,具体涉及一种停电计划文本解析方法。


背景技术:

2.停电计划公告是具有一定规范的文字,包含大量的调度操作指令、监控操作内容、开关跳闸记录、监控异常记录等文本信息,主要以夹杂数字、字母符号的中文短文本的形式出现,蕴藏着丰富的设备历史运行状态信息,检修效果信息,甚至设备的拓扑结构等,对其进行有效正确的解析是电力调度智能化的基础。
3.近年来,机器学习方法特别是基于统计的机器学习方法在文本处理方面受到了广泛关注,早期出现的信息抽取系统往往依赖于手工建立的抽取规则,适应性和可扩展性较差,为此,提出一种停电计划文本解析方法。


技术实现要素:

4.本发明所要解决的技术问题在于:如何在对网格内各要素信息归集的基础上,通过对关怀对象主体预警预测信息的关联应用和分析,从而完成事前告知、事中关注、事后评估的全流程信息化管理工作,提供了一种停电计划文本解析方法。
5.本发明是通过以下技术方案解决上述技术问题的,本发明包括以下步骤:
6.s1:格式化解析
7.利用网页爬取和网页解析工具,将停电信息网页中包含的半格式化停电信息进行格式化解析;
8.s2:实体成分标注
9.在通过网页爬取和网页解析工具对文本进行格式化后,针对停电线路,停电原因,停电范围设计标注标准,对文本中实体成分进行标注;
10.s3:停电数据实体识别
11.在标注数据的基础上,利用含有层叠双向长短时记忆网络层和全局指针网络层的模型进行训练得到停电信息文本解析模型,进行停电数据实体的识别。
12.更进一步地,在所述步骤s1中,停电信息字段包括停电线路、停电范围、停电时间、停电原因。
13.更进一步地,在所述步骤s2中,利用brat标注工具标注数据以后得到多种格式数据,通过处理得到训练数据文本文件对nlp模型进行训练,其中,标注的实体类型如下:
14.bd:变电站;
15.xl:线路;
16.zx:支线;
17.dg:电杆;
18.kg:开关;
19.jq:间隔;
20.hwg:环网柜;
21.gdyg:高低压柜;
22.pd:配电房/配电站;
23.gf:高分;
24.kbs:开闭所;
25.byq:变压器;
26.zj:之间关系(两个设备之间的线路);
27.bl:并列关系(表示两个设备的并列关系)。
28.更进一步地,在所述步骤s2中,标注时存在嵌套实体和分离实体,嵌套实体指的是一个组合实体包含多个单实体,分离实体指的是经过标注后包含两个实体,通过设置关系标签进行解决。
29.更进一步地,在所述步骤s3中,整理所有的停电文本数据,基于bert的预训练模型,改进预训练的目标,增加变电站领域的原始语料作为训练语料对模型进行训练,并同时优化模型结构。
30.更进一步地,训练策略如下:
31.1、将文本中15%的字符随机masking,并且在6份重复相同的语料进行相同的操作,并且每份数据都会在上面训练20个轮次,进而得到跟下游的事件关系抽取任务更一致的上下文特征向量;
32.2、取消bert的nsp训练任务;
33.3、将原始bert中的单字符的mask操作改为连续字符的mask操作。
34.更进一步地,模型结构的优化过程如下:
35.s31:对原始的文本通过不同的线性变换对原文的文本进行编码,然后通过attention机制计算结果:
[0036][0037]
multihead(q,k,v)=concat(head1,...,head
h
)w
o
[0038]
head表示的模型包含的一个头的计算方法,multihead将所有头的计算结果进行拼接操作,再乘以一个w
o
的矩阵,最终作为当前层的最终输出结果,再输入到下一层继续进行计算;
[0039]
s32:attention机制针对长文本场景进行了如下设计:
[0040]
对于输入文本序列s中的任何一个中文字符t,对于文本片段[t

s,t]中的一个中文字符r,其中的相似度计算方式为:
[0041][0042]
其中,w
k
,w
q
是k和q的线性变换的矩阵,p
t

r
为相对位置编码,公式如下:
[0043][0044][0045]
针对每个head,增加一个mask函数来形成一个[0,1]区间内的距离:
[0046][0047]
其中,r是一个控制函数平滑度的超参数,z是[0,s]之间的一个值,z是需要学习的参数,对每个head,z都是不同的,最终attention权重的计算方式如下:
[0048][0049]
按照如下方式计算当前head输出:
[0050][0051]
其中,w
v
被称作v的矩阵。
[0052]
更进一步地,在所述步骤s3中,层叠双向长短时记忆网络即使用层叠的双向lstm进行特征编码,其中将上层lstm作为一个序列输出到下一层。
[0053]
更进一步地,在所述步骤s3中,在全局指针网络层中,输入文本的长度为n,假设当前实体的标签数量为1,输入文本中的连续片段,并且可以存在嵌入实体,则候选实体的数量为如果实体标签的数量为k个,则从k个多标签分类:个实体中选若干个实体;
[0054]
假设长度为n的文本在经过特征提取层编码以后,得到序列[h1,h2,...,h
n
],然后通过线性变换q
i,a
=w
q,a
h
i
b
q,a
和k
i,a
=w
k,a
h
i
b
k,a
,得到识别a类型实体所用的编码特征[q
1,a
,q
2,a
,...,q
n,a
]和[k
1,a
,k
2,a
,...,k
n,a
];
[0055]
此时连续片段t[i:j]对应的a标签得分为:
[0056][0057]
更进一步地,在所述步骤s3中,停电信息文本解析模型的损失函数如下:
[0058][0059]
其中,p
a
是该样本的所有类型为a的实体的首尾集合,q
a
是该样本的所有非实体或者类型非a的实体的首尾集合。
[0060]
本发明相比现有技术具有以下优点:能够电力调控系统的停电计划文本进行更有效正确的解析,同时解决了嵌套实体和分离实体在文本解析时存在的问题,保证了停电计划文本解析的准确性,值得被推广使用。
附图说明
[0061]
图1是本发明实施例二中停电计划文本解析方法的流程示意图;
[0062]
图2为本发明实施例二中停电信息文本解析模型的工作流程示意图;
[0063]
图3是本发明实施例二中层叠双向lstm进行特征编码的示意图;
[0064]
图4是本发明实施例二中层叠双向lstm输出流特征图;
[0065]
图5是本发明实施例二中对抗样本的经典案例图。
具体实施方式
[0066]
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0067]
如图1所示,本实施例提供一种技术方案:一种停电计划文本解析方法,包括以下步骤:
[0068]
第一步:编写网页爬取和网页解析程序,将停电信息网页中包含的半格式化停电信息进行格式化解析,一般包含的停电信息字段有:
[0069]
停电线路:110kv山湖变电站10kv山工ⅱ19线路怀湖圩ⅱg1433高分201开关。
[0070]
停电范围:安徽省安庆市【迎江区】老峰新丰汪家墩、迎江铸造园部分专变用户、马窝港口、安庆监狱(备)、中铁隧道局北京分公司。
[0071]
停电时间:6月23日8:30

18:00。
[0072]
停电原因:安徽安塑管业有限公司高压增容送电。
[0073]
第二步:在通过网页爬取和网页解析程序对文本进行格式化后,针对停电线路,停电原因,停电范围设计标注标准,具体步骤如下:
[0074]
首先需要对电力调控文本进行预处理,输出规范的文本对象;作为进一步的语义解析的输入。输出特定类型事件的语义解析结果,转化成可用的json格式,供后续电网智能调度使用。
[0075]
由于市面上开源的nlp工具都是基于普通语料训练的,因此在电力调度的语料中表现都不好,需要我们在获取语料并且标注后自定义训练模型。具体需要的模型语料包含:
[0076]
电力公司的停电信息公告和电力调度信息(具体见下文示例)。
[0077]
基于上述标注的数据和训练的模型,最后利用序列标注模型输出结构化的数据。
[0078]
上述步骤得到的针对每个市的文本数据,再次进行句子分割成若干训练数据“0.txt”、”1.txt”...每个文本包含一个句子,并且部分句子里面加入一定的噪声。
[0079]
例如下面数据:
[0080]“1、因设备消缺,10kv中龙12线hwg3

jgf2高分箱内03#开关以后线路将于2019年12月17日06:00

18:00停电,主要停电影响范围:雪花园、龙泽苑、地质队宿舍、雪华乡政府、技工学校等区域用户”。
[0081]
增加其他类型的数据可以提升模型的泛化能力。
[0082]
利用brat标注工具标注数据以后得到了若干个“0.txt”、“0.ann”等格式数据,通过程序处理,得到如下的训练数据文本文件:“train_data”,”test_data”。“b”代表实体的开始,“m”代表实体的中间,“e”代表实体的结束,“s”代表只有一个元素的实体,“o”代表非实体元素。
[0083]
实体类型如下:
[0084]
bd:变电站;
[0085]
xl:线路;
[0086]
zx:支线;
[0087]
dg:电杆;
[0088]
kg:开关;
[0089]
jq:间隔;
[0090]
hwg:环网柜;
[0091]
gdyg:高低压柜;
[0092]
pd:配电房(配电站);
[0093]
gf:高分;
[0094]
kbs:开闭所;
[0095]
byq:变压器;
[0096]
zj:之间关系(两个设备之间的线路);
[0097]
bl:并列关系(表示两个设备的并列关系)。
[0098]
可以发现上述标注的过程中存在嵌套实体和分离实体的问题,嵌套实体指的是一个组合实体包含多个单实体:“前进村ⅰg396环网柜”这是一个环网柜实体,同时也包含前进村这个实体,这种我们在下一步进行模型结构设计的时候进行解决。
[0099]
而分离实体的问题,指的是“104、106开关”这种包含两个实体,但是存在实体不连续的情况,这个时候,我们通过设计特殊的关系标签进行解决,即“104”和“106开关”开关之间还存在着“bl”这种并列关系,在实体识别以后利用规则处理这种特殊情况。
[0100]
可以将目前需要标注的实体划分为不同类型(根据标注的标准来可以实现更多的更细粒度的实体抽取:“母线”,“机组”等),其中包含“bl”和“zj”这种关系词也会单独识别出来,以更好的识别完整的电力设备实体。
[0101]
第三步:设计如下算法模型,在上述标注数据的基础上,进行停电数据实体的识别:
[0102]
1、整理所有的停电文本数据,基于bert(bidirectional encoder representations from transformers)的预训练模型,改进预训练的目标,增加变电站领域的原始语料作为训练语料,完整的策略如下:
[0103]
跟原始的bert不同的是,在大量的变电站领域的原始语料并进行清洗后,在关于变电站这个特定领域进行bert预训练,这些原始语料来自于专业书籍和论文中的原始文本数据,消除原始bert的预训练语料和变电站领域语料之间的差异性造成的性能损失。
[0104]
跟原始bert预训练不一样的训练策略的是,采取动态masking,即采取如下策略:将文本中15%的字符随机masking,并且在6份重复相同的语料进行相同的操作,并且每份数据都会在上面训练20个轮次,进而得到跟下游的事件关系抽取任务更一致的上下文特征向量。
[0105]
此外,还取消了bert的nsp(下一个句子预测)训练任务,(前面取消了segment embedding输入)由于原始的bert的nsp任务造成每次训练只能输入两个句子,造成跟下游的事件关系抽取任务的输入不一致的问题,会造成一定的性能损失,取消以后,对于长度较长(最长512)的文本,就能形成更加一致的上下文表示向量。
[0106]
同时我们将原始bert中的单字符的mask操作改为连续字符的mask操作,这样可以在预训练模型中就融合更多的实体语义信息,能够更加利于实体识别任务性能的提升。
[0107]
在优化模型训练策略的同时,我们通过如下方式优化模型结构:
[0108]
首先对原始的文本通过不同的线性变换对原文的文本进行编码,然后通过attention机制计算结果:
[0109][0110]
multihead(q,k,v)=concat(head1,...,head
h
)w
o
ꢀꢀ
(公式2)
[0111]
head表示的模型包含的一个头的计算方法,multihead将所有头的计算结果进行拼接操作,再乘以一个w
o
的矩阵,最终作为当前层的最终输出结果,再输入到下一层继续进行计算。
[0112]
这里的attention机制针对这里的长文本场景进行了如下设计:
[0113]
对于输入文本序列s中的任何一个中文字符t,对于文本片段[t

s,t]中的一个中文字符r,其中的相似度计算方式为:
[0114][0115]
其中,w
k
,w
q
是k和q的线性变换的矩阵,p
t

r
为相对位置编码,公式如下:
[0116][0117][0118]
针对每个head,我们增加了一个mask函数来形成一个[0,1]区间内的距离:
[0119][0120]
其中,r是一个控制函数平滑度的超参数,z是[0,s]之间的一个值,z是需要学习的参数,对每个head,z都是不同的,公式6的目的是将每个head的关注点进行不同的度量,从而进行针对性的学习的同时减小计算量,最终attention权重的计算方式如下:
[0121][0122]
其中按照如下方式计算当前head输出:
[0123][0124]
其中,w
v
被称作v的矩阵,其中通过公式2输出当前层的最终输出。
[0125]
如上提出的层我们称之为adaptive

bert层。
[0126]
2、针对我们上述标注的语料的特点,我们提出了层叠双向长短时记忆网络(stack

bilstm)和全局指针网络层的停电信息文本解析模型,如图2所示:
[0127]
2.1、层叠双向长短时记忆网络
[0128]
对于上述领域适应的bert输出的特征,我们使用常见的lstm进行编码:
[0129]
i
t
=σ(w
xi
x
t
w
hi
h
t
‑1 w
ci
c
t
‑1 b
i
)
[0130][0131]
o
t
=σ(w
xo
x
t
w
ho
h
t
‑1 w
co
c
t
b
o
)
[0132][0133]
一般的,上式中σ表示逐元素乘积(也叫作hadamard乘积)的sigmoid函数,而表示两个矩阵之间的逐元素乘积。
[0134]
而针对于本事件关系抽取任务,我们提出了针对事件实体较长的情况,我们使用了层叠的双向lstm进行特征编码,如图3所示。
[0135]
一般序列标注会使用双向lstm进行特征编码,在这种任务中,一个时刻的输出不但和过去的时刻有关,也和后续的时刻有关,在单向时间顺序的lstm的基础上,我们可以增加一个按照时间的逆序来编码信息:
[0136][0137][0138][0139]
其中x
t
为输入的编码向量,为向量拼接操作。
[0140]
进一步的,单个双向lstm的表达能力有限,为了编码更深层的语义信息,使用层叠的双向lstm能够增加网络深度,提高训练的效率和网络的准确性,如图4所示。
[0141]
上述层叠lstm的计算方式不是将上层lstm的单个最终输出到下面的lstm层,而是将上层lstm作为一个序列输出到下一层。
[0142]
实验证明,上述层叠双向lstm比常用的双向lstm效果有一定的提升效果。
[0143]
2.2、全局多头指针网络
[0144]
输入文本的长度为n,假设当前实体的标签数量为1,输入文本中的连续片段,并且可以存在嵌入实体,也就是实体的片段可以重复,那么候选实体的数量为如果实体标签的数量为k个,那么就是从k个多标签分类:个实体中选若干个实体的问题。
[0145]
假设长度为n的文本在经过上述特征提取层编码以后,得到序列[h1,h2,...,h
n
],然后通过线性变换q
i,a
=w
q,a
h
i
b
q,a
和k
i,a
=w
k,a
h
i
b
k,a
,得到识别a类型实体所用的编码特征[q
1,a
,q
2,a
,...,q
n,a
]和[k
1,a
,k
2,a
,...,k
n,a
]。
[0146]
此时连续片段t[i:j]对应的a标签得分为:
[0147][0148]
上述式子的含义就是片段t[i:j]为标签类型a的实体打分。
[0149]
3、对抗训练:
[0150]
深度学习中的对抗样本得到越来越多的关注,在cv(computer vision,计算机视觉)领域,需要通过对模型的对抗攻击和防御来增强模型的稳健性,而在nlp(natural language processing,自然语言处理)中,对抗训练一般是作为正则化手段提高模型的泛化能力。
[0151]
提到对抗训练,必须首先理解对抗样本,最先提于《intriguing properties of neural networks》文中,就是对人类来说可能基本一样,但是模型预测的结果跟预期差距很大的样本,如图5所示。
[0152]
图5中,仅仅增加了极小的扰动,就让模型对于“panda”的预测变为“gibbon”。所谓对抗训练,就是构造一些对抗样本加入原始数据集中,希望增强模型的健壮性。
[0153]
对抗学习一般用《towards deep learning models resistant to adversarial attacks》中的min

max公式进行表示:
[0154][0155]
其中d代表训练集,x代表输入,y代表标签,θ代表模型参数,l代表样本的损失,r
adv
是对抗扰动,s代表扰动空间。
[0156]
如何将上述的对抗训练迁移到nlp中呢?goodfellow在17年提出了在连续的词嵌入中进行扰动,虽然构造的对抗样本并不能映射到具体的单词,但是论文《enhanced adversarial training for language understanding》的研究表明,在词嵌入中加入对抗样本,模型的泛化能力变强了。因此,nlp中的对抗训练的目的跟cv不一样的是,作为一种正则化的手段从而提高模型的泛化能力。
[0157]
对抗训练的两种方法:
[0158]
1)、fast gradient sign method
[0159]
goodfellow在2017年提出了fast gradient sign method(fgm),来计算样本的扰动,将公式(5)的对抗扰动r
adv
的计算方式定义如下:
[0160][0161]
其中sgn为符号函数,l为损失函数,公式(6)的思想就是:将输入样本向着损失上升的方向再进一步,得到的对抗样本就能造成更大的损失,提高模型的错误率。
[0162]
2)、projected gradient descent
[0163]
madry在2018年提出了projected gradient descent(pgd):
[0164]
x
t 1
=π
x s
(x
t
αg(x
t
)/||g(x
t
)||2)
[0165][0166]
其中s=r∈r
d
:||r||2≤ε为扰动的约束空间,α为小步的步长,公式(7)的思想也就是假设如果走出了扰动半径为ε的空间,就映射回“球面”上,来保证扰动不会太大。
[0167]
4、损失函数设计
[0168]
由上文可知,对于一个a实体标签,有类多标签分类问题,很容易形成类别不平衡的问题,为了应对这种总分类数量较大,标签类别数量较少的情况,设计了如下损失函数:
[0169][0170]
其中,p
a
是该样本的所有类型为a的实体的首尾集合,q
a
是该样本的所有非实体或者类型非a的实体的首尾集合。
[0171]
下面本方法所应用的实例:
[0172]
'string':'东郊变10kv东康ⅰ05线前进村ⅰg396环网柜104开关,东郊变10kv东康ⅱ17线吾悦新城g733环网柜104、106开关',
[0173]
[0174][0175]“变电站”:“东郊变”;“线路”:“10kv东康ⅰ05线”;“环网柜”:“前进村ⅰg396环网柜”;“开关”:“104开关”;
[0176]“变电站”:“东郊变”;“线路”:“10kv东康ⅱ17线”;“环网柜”:“吾悦新城g733环网柜”;“开关”:“104”;“并列关系”:“、”;“开关”:“106开关”。
[0177]
上述是实体最细粒度的抽取结果,根据需要,设定规则,处理抽取结果:
[0178]
线路 开关得到“10kv东康ⅰ05线104开关”,“10kv东康ⅱ17线104”,又由于有并列关系词顿号“、”,“106开关”这个开关词和前面的开关有并列关系,因此将“10kv东康ⅱ17线104”中的开关替代为“106开关”,得到“10kv东康ⅱ17线106开关”,同时“10kv东康ⅱ17线104”加上开关的关键词得到“10kv东康ⅱ17线104开关”,最终得到如下三个组合电力实体:
[0179]
10kv东康ⅰ05线104开关、10kv东康ⅱ17线104开关、10kv东康ⅱ17线106开关。
[0180]
同时,如果建立好“电力设备台账信息标准库”,“电力设备同义词库”,得到的抽取结果就可以更符合电力设备标准信息综上所述,上述实施例的停电计划文本解析方法,,值得被推广使用。
[0181]
综上所述,该停电计划文本解析方法,能够电力调控系统的停电计划文本进行更有效正确的解析,同时解决了嵌套实体和分离实体在文本解析时存在的问题,保证了停电计划文本解析的准确性,值得被推广使用。
[0182]
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献