首页> 中国专利> 一种面向电网故障案例的文本结构化方法

一种面向电网故障案例的文本结构化方法

摘要

本发明公开了一种面向电网故障案例的文本结构化方法;对非结构化文本进行命名实体识别,并构建面向电网领域的实体字典来辅助实体识别和文本分词;提取属性值以及描述各属性的状态量,状态量按照类型分为数字型状态量和非数字型状态量,基于规则的方法来提取并对数字型状态量修饰属性进行匹配;将非数字型状态量进行细化,划分为基于词组形式的状态量和基于句子形式的状态量,分别提取其修饰的属性;根据识别出的属性以及对应的状态量,最终生成若干由属性和对应状态量形成的二元组,完成文本结构化。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-18

    授权

    授权

  • 2018-06-01

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20171213

    实质审查的生效

  • 2018-05-04

    公开

    公开

说明书

技术领域

本发明涉及一种面向电网故障案例的文本结构化方法。

背景技术

在电力系统的检修与维护环节,电网企业积累了大量的故障案例报告,这些文本包含检修试验记录,巡检消缺记录,故障问题描述,故障原因描述等,主要以非结构化的形式呈现,这些描述信息通过自然语言的规范和逻辑组织而成,而并没有预定义的数据模型或文字模板。

对于各种设备状态的描述,散落在文本的不同地方,文本信息结构化的目的就是通过对非结构文本的分析和处理,得到对设备故障进行描述的状态量,并填充到预定义的数据模型中。现有的文本结构化方法通常仅是对一些通用属性的结构化信息抽取,例如:时间、地点、人物、特定关系等。

这种通用性的方法对于电网领域的可用性不大,因为电力故障案例文本中的属性具有领域性特点,描述属性的状态量,可以从类型上划分为两种,一种是数字类型,例如电压等级,故障时间等,另一种则是非数字类型,以文字来描述状态量,例如故障现象和原因等。因此,对不同类型的状态量需要使用不同的方法来分析,而目前的文本结构化方法明显没有进行区别分析。

发明内容

本发明为了解决上述问题,提出了一种面向电网故障案例的文本结构化方法,本发明能够具体、全面的描述每篇电力故障案例文本中设计的各个属性状态量。

为了实现上述目的,本发明采用如下技术方案:

一种面向电网故障案例的文本结构化方法,包括以下步骤:

(1)对非结构化文本进行命名实体识别,并构建面向电网领域的实体字典来辅助实体识别和文本分词;

(2)提取属性值以及描述各属性的状态量,状态量按照类型分为数字型状态量和非数字型状态量,基于规则的方法来提取并对数字型状态量修饰属性进行匹配;

(3)将非数字型状态量进行细化,划分为基于词组形式的状态量和基于句子形式的状态量,分别提取其修饰的属性;

(4)根据识别出的属性以及对应的状态量,最终生成若干由属性和对应状态量形成的二元组,完成文本结构化。

进一步的,所述步骤(1)中,在标注训练语料阶段,采用字典匹配的方法来自动进行标注,并且通过基于CRF++的半监督命名实体识别方法来不断完善实体字典。

更进一步的,具体包括:

(1-1)构建初始的种子实体词典;

(1-2)构建训练集用于CRF++的训练:采用基于完全匹配的方法进行自动标注,当实体字典内的实体词出现在故障案例文本中时,将该词标注为命名实体,完成命名实体自动标注后,将其转化为CRF++训练文件的格式以方便后续的模型训练;

(1-3)利用CRF++工具对构建的训练语料进行训练,模型训练完成后,对测试语料进行预测,发现新的命名实体;

(1-4)对识别出来的新实体进行筛选,筛选通过后,即加入到实体词典中进行实体扩充;

(1-5)重复步骤(1-1)-(1-4),直到不能发现新的有效实体。

进一步的,所述步骤(1)中,描述属性包括故障设备、故障现象、故障原因、故障时间和/或电压等级。

进一步的,所述步骤(2)中,对于文本中数字类型状态量描述的属性,采用基于规则的方法来进行提取。

更进一步的,通过人工构建数学单位映射字典来识别数学单位,对于文字形式的数学单位,和字典中的数学单位完全一致再进行提取;对于数学符号,忽略大小写的差异进行提取,提取数学单位后,基于正则表达式来识别数字,并采用规则来匹配数字和数学单位。

进一步的,所述步骤(3)中,非数字类型状态量指文本状态量。

进一步的,所述步骤(3)中,基于词组形式的状态量实质上是命名实体,通过条件随机场模型,识别出每条案例文本语句中的命名实体,利用Stanford Parser工具,提取命名实体所修饰的词语。

更进一步的,通过设定的语法修饰规则来约束匹配条件,命名实体必须沿着句法树,找到最近的修饰名词,该名词和命名实体组成一个二元组。

所述步骤(3)中,结构化的过程中发现故障案例文本中,故障描述、故障分析过程、分析结论、故障处理方法、现场情况、建议及对策发状态量的描述都是句子,将描述的抽取问题,转化为针对句子的分类问题,构建基于双向LSTM和分类模型,完成句子状态量和描述属性的匹配。

与现有技术相比,本发明的有益效果为:

1、本发明能够具体、全面的描述每篇电力故障案例文本中设计的各个属性状态量。

2.通过实验能够证实本发明对电网故障案例的文本结构化是有效的,能够更好的配合电力故障案例文本中的属性具有领域性特点。

附图说明

构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。

图1为文本结构化流程图;

图2为条件随机场链式结构图;

图3为基于CRF++的半监督算法流程图;

图4为数字类型状态量描述提取流程图;

图5为非数字型状态量描述提取流程图;

图6为展开的RNN图;

图7为标准RNN中的重复模块包含单一的层;

图8为LSTM中的重复模块包含四个交互的层图;

图9为Bi-LSTM结构图;

图10为Bi-LSTM故障案例文本句子分类模型示意图;

图11为随着被训练次数的增加BLSTM_drop和BLSTM_nodrop在训练集和验证集上Loss变化图;

图12为随着被训练次数的增加BLSTM_drop和BLSTM_nodrop在训练集和验证集上Loss变化图;

图13为随着被训练次数的增加BiLSTM和LSTM在训练集和验证集上F1_score变化图;

具体实施方式:

下面结合附图与实施例对本发明作进一步说明。

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

在本发明中,术语如“上”、“下”、“左”、“右”、“前”、“后”、“竖直”、“水平”、“侧”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,只是为了便于叙述本发明各部件或元件结构关系而确定的关系词,并非特指本发明中任一部件或元件,不能理解为对本发明的限制。

本发明中,术语如“固接”、“相连”、“连接”等应做广义理解,表示可以是固定连接,也可以是一体地连接或可拆卸连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的相关科研或技术人员,可以根据具体情况确定上述术语在本发明中的具体含义,不能理解为对本发明的限制。

一种电力故障案例文本结构化的方法,以具体、全面的描述每篇电力故障案例文本中设计的各个属性状态量。

为达到上述目的,本发明实施例提供了一种电力故障案例文本结构化的方法,包括:

在标注训练语料阶段,考虑到人工标注的工作量较大,采用字典匹配的方法来自动进行标注,并且通过基于CRF++的半监督命名实体识别方法来不断完善实体字典。

对于文本中数字类型状态量描述的属性,例如:时间、编号、温度以及各种电力学指标,采用基于规则的方法来进行提取。先通过人工构建数学单位映射字典来识别数学单位,对于文字形式的数学单位,需要和字典中的数学单位完全一致才可提取,而对于数学符号,将忽略大小写的差异。提取数学单位后,基于正则表达式来识别数字,并采用规则来匹配数字和数学单位。为了获取状态量和属性之间的修饰关系,我们需要对文本语句进行语法分析,并基于分析结果来匹配状态量和修饰属性,即可得到最终的(属性,状态量)二元组。

非数字类型状态量主要是指文本状态量,在电网故障描述中同样有两种表现形式,一种是基于词组形式,一种是基于句子形式。

基于词组形式的状态量实质上是命名实体,例如设备名称,生产厂家名称等等。通过条件随机场模型,可以识别出每条案例文本语句中的命名实体,利用Stanford Parser工具,可以提取命名实体所修饰的词语。通过制定一个语法修饰规则来约束匹配条件,命名实体必须沿着句法树,找到最近的修饰名词,该名词和命名实体组成一个二元组。

结构化的过程中发现故障案例文本中,故障描述、故障分析过程、分析结论、故障处理方法、现场情况、建议及对策这7种状态量的描述都是句子,因此将描述的抽取问题,转化为针对句子的7分类问题。构建基于双向LSTM和分类模型,完成句子状态量和描述属性的匹配。

本发明实施例提供了一种电力故障案例文本结构化的方法,首先分析电力故障案例文本中包括不同类型的状态量分别为数字型,词组型及句子型,然后针对不同类型的状态量制定不同的结构化方法,从而能够得到具体、全面的电力故障案例文本的结构化结果。

在电网故障描述文本中,故障描述信息都是以非结构化的形式呈现,这些描述信息通过自然语言的规范和逻辑组织而成,而并没有预定义的数据模型或文字模板。对于各种设备状态的描述,散落在文本的不同地方,文本信息结构化的目的就是通过对非结构文本的分析和处理,得到对设备故障进行描述的状态量,并填充到预定义的数据模型中。数据模型R以二元组的方式来描述:

R={(x,y)|x∈A,y∈S}

其中A表示预定义好的描述属性,S则是需要从非结构文本中挖掘和分析的该属性的状态。在本课题中,描述属性包括故障设备,故障现象,故障原因,故障时间,电压等级等等。这些描述属性的状态量,可以从类型上划分为两种,一种是数字类型,例如电压等级,故障时间等,另一种则是非数字类型,以文字来描述状态量,例如故障现象和原因等。因此,对不同类型的状态量需要使用不同的方法来分析。文本结构化处理的整体流程如图1所示。

本发明实例所述的方法包括如下几个步骤:

A1、对非结构化文本进行命名实体识别,并构建面向电网领域的实体字典来辅助实体识别和文本分词。具体地,本发明实例基于CRF++提出一种半监督迭代的方法,不断地优化实体识别的效果并对词典进行扩展。

A2、提取属性值以及描述该属性的状态量。状态量按照类型可以分为数字型状态量和非数字型状态量,针对数字型状态量,本发明实例提出了基于规则的方法来提取并对其修饰属性进行匹配。

A3、针对非数字型状态量,本实施例将其划分为基于词组形式的状态量和基于句子形式的状态量。对于基于词组形式的状态量,本实施例采用基于语法修饰规则的方法提取出其修饰的属性,对于基于句子形式的状态量,本实施例采用结合word embedding(词嵌入)和双向LSTM(长短时记忆)的方法来对句子进行分类,从而判定其所修饰的属性。

A4、通过上述方法识别出属性以及对应的状态量,最终生成若干(属性,状态量)二元组,从而完成文本结构化。

接下来将对本实施例方法进行详细描述。

1、命名实体识别

命名实体识别是指识别文本中具有特定意义的实体,常见的包括人名、地名、机构名等等。命名实体识别是自然语言处理中的关键技术,是文本信息理解和处理的基础,在信息抽取、信息过滤、问答系统、机器翻译等研究分支上具有重要地位。在不同的应用场景中,可以赋予命名实体不同的含义,在本实施例中,命名实体是指非数字状态量描述的设备故障的基本属性,例如生产厂家,故障描述,设备类型等等。

命名实体识别的主要方法通常分为两类,基于规则和基于机器学习的方法。在基于规则的方法中,规则的制定十分依赖于领域专家,规则的设计过程耗时且容易产生错误,难以覆盖所有的语言现象。因为命名实体的数量巨大,所以无法完全枚举,全部收录到词典中,同时某些类型的实体名称变化频繁,并且没有严格的规律可以遵循,缺乏严格的命名规范,因此随着时间推移,会不断地产生新的命名实体。因此基于规则的方法准确性、覆盖度、可移植性、可扩展性都较差,并不适用于本实施例。

相比而言,基于机器学习的方法利用人工标注的语料进行训练和学习,标注语料时不需要广博的语言学知识,知识的获取大部分是通过机器完成,客观性比较强,同时一旦学习到有效的语言模式,可以扩展到所有语料上,对于新的命名实体也能进行有效识别,智能化程度更高。因此本实施例采用机器学习的方法来识别命名实体,此时命名实体识别任务可以被视为一个序列标注问题。

在目前的自然语言处理研究中,条件随机场模型(CRF)则是应用最为广泛并且性能表现良好的序列标注模型,条件随机场是用来标注和划分序列结构数据的概率化结构模型,在确定观察序列的情况下,对整个的标识序列会给出一个指数模型。和隐马尔可夫模型以及最大摘马尔科夫模型相比可以更多的依赖于长距离的信息,可以很好的利用语句中的上下文信息,通过这些相关的信息对待识别词做出更加准确的判断。条件随机场在面对中文组块时很好的解决了数据归纳偏置问题,并且进行了严格的独立性假设。它通过定义了多种特征模板,大大的提高了识别的准确度。与其他模型相比,在使用相同特征集合的条件下,条件随机场模型较其他概率模型有更好的性能表现,因为它有很强的推理能力,它可以利用重叠的、非独立的、非常复杂的特征进行训练推理。它可以有效地利用内部外部的多种信息,使模型的特征集非常的丰富。下面将介绍条件随机场的基本原理。

1)条件随机场

条件随机场是一个无向图判别模型,对于需要估计的标识序列Y和观测序列X,条件随机场需要求解的是条件概率P(Y|X),这与产生模型求解概率分布P(X,Y)来描述模型是不同的。条件随机场也可以看作是一个马尔科夫随机场。

将条件随机场定义为:设G=(V,E)为一个无向图,V为结点集合,E为无向边的集合。Y={Yv|v∈V},V中的每个节点与都对应于一个随机变量Yv,它的取值范围标记集合为{y}。当我们以观察序列X为条件时,要求任何一个随机变量Yv都满足以下马尔科夫特性:

P(Yv|X,Yω,ω≠v)=P(Yv|X,Yω,ω~v)

其中,w~v表示两个结点在图G中是邻近结点。那么(X,Y)为一个条件随机场模型。对序列进行建模可以形成最简单、最普通的链式结构图,结点对应标记序列Y中的元素,其链式结构如图2所示。

显然,观察序列X的元素之间并不存在图结构,因为这里只是将观察序列X作为条件,并不对其作任何独立性假设。

在给定观察序列X时,某个特定标记序列Y的概率可以定义为:

其中,tj(yi-1,yi,X,i)是转移函数,表示对于观察序列X其标注序列在i及i-1位置上标记的转移概率;sk(yi,X,i)是状态函数,表示对于观察序列X其i位置的标记概率;λj和μk分别是tj和sk的权重,需要从训练样本中估计出来。

在定义特征函数时可以定义一组关于观察序列的{0,1}二值特征b(X,i)来表示训练样本中某些分布特征。

转移函数可以定义为:

为了便于描述,可以将状态函数书写成如下形式:

s(yi,X,i)=s(yi-1,yi,X,i)

这样特征函数可以统一表示为:

其中,每个局部特征函数fj(yi-1,yi,X,i)表示状态特征s(yi-1,yi,X,i)或转移函数t(yi-1,yi,X,i)。

由此,条件随机场定义的条件概率可以由下式得出:

其中,分母Z(X)为归一化因子:

2)参数估计及优化

对条件随机场模型参数的求解,可以采用最大似然估计。假定对于训练数据有一组样本集合D={xj,yj},j=1,2…,N,其中的样本之间是相互独立的,p(x,y)为训练样本中(x,y)的经验概率。对于某个条件模型p=(y|x,θ),训练数据样本集合D的最大似然函数公式可表示为:

取对数形式:

具体到条件随机场,其条件概率可表示为:

其中θ={λ1,λ2,。。λn,μ1,μ2..μn}是需要估计计算的权重参数。

CRF模型的似然函数可表示为:

其中λ和μ为待估参数,f和g为特征函数的向量。

对参数λk求导:

令上式值为0即可满足部分约束条件,求得λk。同理也可求得μk,从而解析出θ。

条件随机场模型是现阶段最为流行的自然语言模型之一,它克服了最大熵马尔科夫模型的标志偏置问题,并且具备长距离依赖的优点。

3)CRF++

本实施例利用条件随机场模型进行命名实体识别,并且选择CRF++作为CRF实现工具,因为它是目前最流行的CRF工具之一。

CRF++是一个可用于连续数据标注的简单、可定制并且开源的CRF工具,并且在windows系统下有可执行的工具包。

CRF++的输入文件包括三个,分别是训练语料,模板文件以及测试文件,最终结果会输出到指定文件中。

a)训练文件,测试文件以及结果文件格式

训练文件由若干个句子组成(能够理解为若干个训练例子),不同句子之间通过换行符分隔。每一个句子能够有若干组标签,最后一组标签是标注,第一列则句子的字序列,表1是一个对设备制造厂商的实体标注示例,包括两列数据,第一列是已知的训练语料,第二列则是实体标签。标签分为三类,用“B”和“I”分别表示命名实体的开始和继续两种状态,用“O”来表示无关的字序列。下表中,“西安电缆厂”被标注为“BIIII”。在句末用换行符分隔不同句子。

表1设备厂商实体识别训练语料示例

测试文件格式和训练文件格式一样。通过CRF++工具对测试文件进行命名实体识别后,结果将输出到指定文件。结果文件和测试文件的区别在于,结果文件会多出一列,即为预测的标签,通过比较预测标签和标注标签,最终可以计算出命名实体识别的准确率。表2给出了一个结果示例,可以看到CRF++识别出了一个未标注的设备厂商“江西变压器厂”,因此CRF++对新的命名实体有一定识别能力。

表2设备厂商实体识别结果示例

训练语料标注结果OOOOOOOB西OIOIOIOIOIOOOO

模板文件格式

为了充分考虑语言的现象,生成反映语言内在规律的模型,可以通过一些模板来筛选特征。模板是对上下文的特定位置和特定信息的考虑。而CRF模型最大的优点就是它可以使用各种上下文信息或者外部特征。特征模板的作用就是为特征函数的生成提供一个统一的模式,通过特征模板的使用可以方便的获得我们所需要的所有特征函数。特征函数模板的制定直接关系到特征函数的生成,同时也提供了一个灵活的特征选择方式。在本实施例中使用的特征模板如表3所示。

表3命名实体识别特征模板

特征模板类型特征模板UnigramU00:%x[-2,0]UnigramU01:%x[-1,0]UnigramU02:%x[0,0]UnigramU03:%x[1,0]UnigramU04:%x[2,0]UnigramU05:%x[-2,0]/%x[-1,0]/%x[0,0]UnigramU06:%x[-1,0]/%x[0,0]/%x[1,0]UnigramU07:%x[0,0]/%x[1,0]/%x[2,0]UnigramU08:%x[-1,0]/%x[0,0]UnigramU09:%x[0,0]/%x[1,0]BigramB

在上表的特征模板中,毎一种模板中使用标号对每个特征进行区分,如在Unigram中,使用“U00:”形式的标号进行区分,而在书写特征时采用的是“%x[row,col]”的形式,row表示与当前位置的相对行数,col表示的是与当前位置的相对列数,在本特征模板中,只选取上下文信息作为特征,所以在标注训练文本时,只有文本与实体类别两列数据,因此在编写特征模板时,相对列数col均为0,只对row进行改变。U05-U09特征将一元特征进行组合,合并成为二元或者三元特征。在模板中只编写了一个二元特征Bigram,其表现形式为B,意思是将每相邻的两个特征进行自由组合,特征模板中出现二元特征B时,将特征模板应用于训练数据,则会自动生成两个相邻行的自由组合特征,例如[-2,0]/[-1,0]。

4)基于CRF++的半监督命名实体识别算法

为了针对电网故障案例构建命名实体词典,首先要确定需要识别的命名实体类别。考虑到电网故障文本描述的多样性,不同的设备的属性无法统一。因此构建人工模板来预定义不同设备需要提取的属性是必要的。通过观察故障文本案例,设备将被划分为六类,每个类别需要提取的属性示例如下表:

表4设备故障属性模板示例

通过制定属性模板,可以过滤掉无关属性,对案例文本的结构化也变得更有针对性。本实施例通过提出基于CRF++的半监督算法,不断迭代和优化命名实体识别的效果,并通过实验来证明该方法的有效性。如图3所示,具体步骤如下:

A1、人工选取小部分的实体,并以此来构建初始的种子实体词典;

A2、构建训练集用于CRF++的训练。考虑到人工标注的工作量太大,本实施例采用基于完全匹配的方法进行自动标注。具体地,当实体字典内的实体词出现在故障案例文本中时,将该词标注为命名实体。完成命名实体自动标注后,将其转化为CRF++训练文件的格式以方便后续的模型训练。

A3、利用CRF++工具对构建的训练语料进行训练,模型训练完成后,对测试语料进行预测,发现新的命名实体。

A4、对识别出来的新实体进行人工筛选,筛选通过后,即加入到实体词典中进行实体扩充。

A5、重复以上步骤直到不能发现新的有效实体。

基于CRF++的半监督算法实验

本实施例通过实验来证实上述的基于CRF++的半监督命名实体识别算法的有效性。实验以故障描述实体的识别为例,主要实验步骤和实验结果如下:

A1、人工构建故障描述实体字典,共包含1406个故障描述实体。

表5故障描述实体字典示例

绝缘电阻不合格连接部位发热接头出现裂纹调整板故障

A2、对每个故障案例文档,按照句号对内容进行切分,从而得到语句集合C。通过完全匹配的方式,对C中所有的语句进行自动标注。实验使用的电网故障文本案例文档共有1296篇,总字数为2518762。本实验将70%的案例文档作为训练集,30%的案例文档作为测试集,对训练语料和测试语料的统计结果如下:

表6训练语料的统计结果

标注的故障实体数量标注的总字数不重复的故障实体数量1415334048234

表格7测试语料的统计结果

标注的故障实体数量标注总字数不重复的故障实体数量591914382177

A3、使用CRF++进行模型的训练和实体识别。本实施例统计出所有连续的“BI”标签,提取出对应的命名实体,提取时,必须是严格以“B”标签开头,后面是连续“I”标签才认为有效。

实验采用的评价指标是准确率和召回率。准确率P是针对预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP),也就是:

而召回率R是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。

初次识别的结果如下:

表8初次命名实体识别结果

本实施例将识别出来的实体分为登录词和未登录词,登录词是指已经在训练集中出现过,并且已经包含在已有的词典中。未登录词是指没有在训练集中出现过,只在测试语料中出现,因此未登录词又可根据该词是否包含在已有词典中来判断是否是新实体。下面分别对登录词和未登录词进行结果统计,其中新实体需要人工判断正确与否。

表9未登录词总体统计结果

识别总数量52识别正确数量49识别正确率94.23%识别不重复实体数量25识别不重复实体正确数量24识别不重复实体正确率96%

表10包含在字典内的未登录词统计结果

识别总数量32识别正确数量32识别正确率100%识别不重复实体数量15识别不重复实体正确数量15识别不重复实体正确率100%

表11未包含在字典内的未登录词统计结果

表12登录词识别结果

数量正确识别数量正确率5853579999.08%

表13未包含在字典内的未登录词示例

继电器进水着火短路接地不合格接头气体泄漏

A4、对识别出来的新实体进行人工筛选。没有包含在字典内的未登录词,就是识别出来的新命名实体。通过观察结果发现新命名实体可分为两类,一类是已有实体的组合,例如“着火”和“短路”都已经包含在故障实体字典内,而“着火短路”则没有被包含。另一类则是完全未出现过的故障实体,在初次识别结果中,有三个该类别的新实体,分别是“接地不合格”,“螺栓松开”和“破股”,其中“螺栓松开”在案例文档中表现为测试方法,而不是故障,因此被人工判定为识别错误。人工筛选结束后,将新识别出来的实体加入到已有的实体词典中进行扩充和完善。

通过初次识别结果,可以发现无论是登录词还是未登录词,识别效果都较为良好,对于登录词,由于它们已经在训练集中出现过,因此识别准确率很高,而对于未登录词的高准确率,则说明CRF++对于故障实体的上下文信息以及本身的词语规范都有着强大的学习能力。

A5、重复以上步骤,经过3次迭代后,CRF++无法再发现新的实体,命名实体识别结束。同时,更加充分的学习也将未登录词的召回率从56.14%提升到65.75%。最终,识别出有效的新词共22个。

通过上述的实验,可以看出本实施例所提出的基于CRF++的半监督命名实体识别算法是有效的。该算法通过不断地迭代优化,最终能成功学习到实体的语境信息和词语规范。通过命名实体识别,可以有效地帮助提取属性和状态量,从而达到文本结构化的目的。

数字类型状态量描述提取处理

用数字类型状态量描述的属性有时间、编号、温度以及各种电力学指标。对于此类型的状态量,本实施例采用基于规则的方法来进行提取,先通过正则匹配,将每个句子中的数字提取出来,再根据语法修饰规则,找到数字状态量的单位,将数字和数学单位合并成为完整的状态量,并将属性和对应的数字状态量进行匹配,即可得到最终的(属性,状态量)二元组。流程图如图4所示。

具体地,所述方法步骤如下:

A1、通过正则匹配来提取数字。正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。本实施例通过构建数字的正则表达式来完成正则匹配。

A2、人工构建数学单位映射词典。不同的状态量有着自己独有的数学单位作为衡量标准,例如电压单位是千伏或者kv,温度单位是摄氏度等等,而类似于“编号”属性的状态量则没有数学单位,只是单纯的数字,因此,构建一个人工的数学单位映射字典是必要的,其中数学单位既包括词语形式,也包括数学符号。单位映射字典中,只包含课题所需要提取的状态量。单位映射词典示例如下:

表14单位映射词典示例

状态量单位设备电压等级千伏/伏/kv/v时间年/月/日温度度/摄氏度//℃线路号

A3、数学单位提取。为了准确提取出数字单位,本实施例将采用完全匹配的规则。如上表所示,数字单位有两种表现方式,分别是基于文字的形式和基于数学符号的形式,对这两种方式的匹配方法有所不同。对于文字形式的数学单位,需要和字典中的数学单位完全一致才可提取,而对于数学符号,将忽略大小写的差异,这样可以避免因为字母大小写不同而带来的遗漏。

A4、对数字和数学单位进行匹配。提取出数学单位后,还需要制定规则来对数字和数学单位进行匹配,根据电网故障文本的特点,本实施例直接使用邻近原则来匹配,即数学单位必须紧跟在数字之后,才认为该数字和数学单位匹配成功,只有匹配成功的数字状态量,才认为是有效的候选状态量,这样可以有效的避免无关数字的干扰。对于时间的匹配,还需要对连续的“年”“月”“日”进行组合,以获得完整的时间状态量。

表15数字类型状态量提取示例

A5、匹配状态量和描述属性。通过上述方法完成数字和数学单位的匹配后,即可得到数字类型的状态量。接下来需要制定规则来提取状态量所描述的属性。为了获取状态量和属性之间的修饰关系,我们需要对文本语句进行语法分析,并基于分析结果来匹配状态量和修饰属性。本实施例采用的语法分析工具是由斯坦福大学研发的工具StanfordParser。

Stanford Parser是由斯坦福大学自然语言研究小组推出的语法解析工具,可以针对某个句子解析其句子结构,为句子中不同的成分打上成分标签,具体到某个分词单元,可以为其打上词性标签。对于输入的句子,需要事先进行分词工作,各个分词单元间以空格符分隔。Stanford Parser可以将句子的整体结构进行树形展示,其中叶子节点为各个分词单元。同时提供了多个用于展示句子内部各分词单元间依赖关系的接口函数,可以展示句子中某两个词之间的依赖关系。因此借助Stanford Parser,句子内各个词语的修饰关系可以直观地展示出来。根据修饰关系,可以制定规则来提取状态量所修饰的属性。

表16 Stanford Parser语法分析示例

上表展示了一个使用Stanford Parser进行语法分析的示例,上表左侧是该语法解析器的输入,是一个已经分好词的文本语句,在分词过程中,提取出来的数字状态量需要完整切分,避免解析结果过于零碎和混乱。上表右侧是语法解析结果,结果以若干个三元组表示,每个三元组包括修饰词语,词语句法分析成分以及词语之间的依存关系,句法分析成分和依存关系都是由一组预定义好的符号进行表示。常见的句法分析成分包括名词(NN),动词(VV),基数词(CD),名词短语(NP)等等,常见的依存关系包括名词主语(nsubj),直接宾语(dobj),数值修饰(nummod),时间修饰(tmod)等等。在这里我们只关注修饰词以及修饰词是否存在依存关系,目的是提取出状态量所修饰的属性。在上例中,可以看到状态量“220kV”修饰的属性是“丰铁线”,而通过命名实体识别可以知道丰铁线属于线路实体,通过单位映射字典可以知道设备实体电压等级和“kv”是相互匹配的,因此可以提取出最终的二元组(丰铁线,220kv)。

非数字类型状态量描述提取处理

如图5所示,非数字类型状态量主要是指文本状态量,在电网故障描述中同样有两种表现形式,一种是基于词组形式,一种是基于句子形式。基于词组形式的状态量,本实施例采用语法修饰规则来匹配状态量及其修饰属性,基于句子形式的状态量,本实施例采用机器学习的方法来进行分类。

具体地,非数字型状态量描述提取方法步骤如下:

A1、提取基于词组形式的状态量。基于词组形式的状态量实质上是命名实体,例如设备名称,生产厂家名称等等。通过前文所述的条件随机场模型,可以识别出每条案例文本语句中的命名实体。

A2、基于语法修饰关系提取词组状态量所修饰的属性。利用Stanford Parser工具,可以提取命名实体所修饰的词语。在这里本实施例制定一个语法修饰规则来约束匹配条件,命名实体必须沿着句法树,找到最近的修饰名词,该名词和命名实体组成一个二元组,此规则对于设备类别属性例外,因为设备类别通常不会在文本中显示指出,而是直接给出实体。

表17词组状态量描述提取示例

从上表示例可以看出,“淄博泰光电力器材厂”作为厂家实体,其直接修饰的词语是动词“生产”,而“生产”修饰的名词是”绝缘子”,因此提取二元组(绝缘子,淄博泰光电力器材厂)。而对于设备类别,可以看到“堂庞线”作为设备实体,并不会在语句中显示指出其是设备类别,因此直接提取二元组(设备类别,堂庞线)。

A3、对句子形式的状态量,采用基于Bi-LSTM(双向长短时记忆)的分类算法匹配其描述的属性。在文本结构化的过程中发现故障案例文本中,故障描述、故障分析过程、分析结论、故障处理方法、现场情况、建议及对策这7种状态量的描述都是句子级,因此将状态描述的句子抽取问题,转化为针对句子的7分类问题,完成句子文本状态量和描述属性的匹配。

基于机器学习的中文句子自动分类的构建主要由训练阶段和测试阶段组成,在训练阶段,首先需要对句子进行分词、去停用词等预处理;然后进行文本表示,即将文本转化为计算机可以识别的形式;接着选择合适的分类器对句子分类,并输出预测的结果,若结果未达到一定标准则调整参数重新训练。在测试阶段,句子预处理和文本表示的处理流程与训练阶段相同,然后使用训练阶段得到的分类器进行分类,并与给定的分类结果比较,对分类模型性能进行评估,为后续提供参考。具体步骤如下:

B1、通过文本分词工具对故障案例文本进行分词。分词采用python的结巴分词工具。结巴分词工具是一个开源库,简单易用,准确度高,因而在分词领域被广泛使用。因为电网故障案例文档都是以连续的自然语言序列组织而成,词与词之间没有明显的分割符,文本分词的目的就是将连续的词序列划分为若干个词语,这也是文本挖掘中最常用的预处理方法之一。下表给出了一个文本分词的示例:

表18文本分词示例

B2、将已经分好的词采用一种较好的word Embedding(词嵌入)方法,得到基于word2vec工具的分布式文本表示。

具体地,文本表示既是通过某种形式将文本字符串表示成计算机所能处理的数值向量。那么为什么要进行文本表示,根本原因是计算机不能直接对文本字符串进行处理,因此需要进行数值化或者向量化。不仅传统的机器学习算法需要这个过程,深度学习也需要这个过程,只不过这个过程可能直接包含在了深度学习网络中;同时,良好的文本表示形式也可以极大的提升算法效果。

传统的分类模型采用向量空间模型(VSM)对文本进行向量化,它的基本思想是用向量实现对句子的表示,向量的每一列代表句子的一个特征。根据特征选取方式的不同,可以有多种表示方法,如词频-逆文档频率(TF-IDF)表示、布尔表示、潜在狄利克雷(LDA)表示等。这些方法的特征选择基于句中各个词的频率而不考虑词的顺序,如“某热点温度大于110℃”和“某热点温度小于110℃”两条文本,在句义上明显不同,但经过分词和VSM表示后,会转化为相同的句向量。同时VSM也不能表示词与词之间的语义相关性,例如,对于“油枕”和“储油柜”,会将其作为两个不同的词进行处理,从而的丢失了很多语义信息。而且字符串本身无法储存语义信息,这给NLP任务带来了挑战。

神经概率语言模型(Neural Probabilistic Language Model)中词的表示是向量形式、面向语义的。两个语义相似的词对应的向量也是相似的,具体反映在夹角或距离上。甚至一些语义相似的二元词组中的词语对应的向量做线性减法之后得到的向量依然是相似的。

从向量的角度来看,字符串形式的词语其实是更高维、更稀疏的向量。若词汇表大小为N,每个字符串形式的词语字典序为i,则其被表示为一个N维向量,该向量的第i维为1,其他维都为0。汉语的词汇量大约在十万这个量级,十万维的向量对计算来讲绝对是个维度灾难。而word2vec得到的词的向量形式(则可以自由控制维度,一般是100左右)。

本实施例中,使用的word2vec工具的原理是采用Distributed representation的词向量表示方式。Distributed representation最早由Hinton在1986年提出。其基本思想是通过训练将每个词映射成K维实数向量(K一般为模型中的超参数),通过词之间的距离(比如cosine相似度、欧氏距离等)来判断它们之间的语义相似度。其采用一个三层的神经网络,输入层-隐层-输出层。有个核心的技术是根据词频用Huffman编码,使得所有词频相似的词隐藏层激活的内容基本一致,出现频率越高的词语,他们激活的隐藏层数目越少,这样有效的降低了计算的复杂度。这个三层神经网络本身是对语言模型进行建模,但也同时获得一种单词在向量空间上的表示,而这个副作用才是word2vec的真正目标。与潜在语义分析(Latent Semantic Index,LSI)、潜在狄立克雷分配(Latent Dirichlet Allocation,LDA)的经典过程相比,word2vec利用了词的上下文,语义信息更加地丰富。Word2vec采用的是层次化Log-Bilinear语言模型,支持CBOW(Continuous Bag-of-Words Model)和Skip-gram两种模型。

本实施例获取文本表示的具体步骤包括:

C1、将故障案例文本进行分句、分词处理和停用词过滤预处理,结果按句子存放,得到句子集合。

本实施例中,分词和停用词过滤是成熟的词处理技术,此处不再赘述。分句即将文本按句号分割,得到预处理后的句子集合。

C2、计算词的词向量表示。

基于gensim(一个python的自然语言处理库)的word2vec模块进行训练词向量模型,得到语料中每个词的词向量表示,设定为100维,词向量的各个维度代表通过连续skip-gram模型学习到的词的语义特征。

C3、由词向量得到句子的文本表示

本实施例中,将一个句子表示为n*m的矩阵,n表示句子中词的个数,m表示词向量的维度,这种表示方法不仅考虑了词出现的顺序,也考虑了词之间语义的相关性,作为分类算法的输入,提高了分类器的性能。

通过上述步骤后,即可得到句子的分布式文本向量。

B3、基于Bi-LSTM算法对句子向量进行分类。

文本分类器的性能决定了文本的分类效果。文本分类器一般可分为2大类:基于机器学习的分类器和非机器学习的分类器。其中,非机器学习的分类器又分为基于概率论的分类器和基于TF-IDF权值的分类器。常见的非机器学习的分类器有朴素贝叶斯算法和K近邻算法。基于机器学习的分类器有支持向量机(SVM),神经网络,决策树等等。这些分类器的优点是模型复杂度较低,训练速度快;但由于模型层次较浅,不能实现特征的自动提取,因此分类效果受到人工特征选取影响较大。

文本分类领域常见的深度学习模型有RNN模型,LSTM模型,Bi-LSTM模型。

RNN(循环神经网络)模型是在传统的神经网络里面加入循环结构,因此引入了时间概念,每一个时间t都会执行一个循环的结构,下一时间的隐藏层节点的状态会根据当前的输入和上一时间的隐藏层的节点的状态来计算更新。RNN模型每个时间的隐藏层的状态都用到了之前节点的信息,最后节点的隐藏层的状态保存了前面所有输入的历史信息。展开的RNN网络如图6所示。

可以看出RNN模型的输入是一个序列,并且用之前的输入预测当前节点的是信息,也就是当前节点的输出依赖于上下文信息,随着输入序列的不断变长,距离当前距离较远的历史节点对于当前节点的影响力下降,因为隐藏层的激活状态被更新覆盖,所以RNN模型对历史信息的学习能力下降,也就是RNN模型对之前较远距离的输入的感知能力下降,这就是RNN模型的长期依赖问题。理论上,RNN模型是能够解决这种长期依赖的问题,但是由于长序列的输入也会带来反向求导的时候的梯度爆炸的问题,使得RNN的参数变得很难训练。

Long Short Term网络——一般就叫做LSTM——是一种RNN特殊的类型,可以学习长期依赖信息。LSTM由Hochreiter&Schmidhuber(1997)提出,并在近期被Alex Graves进行了改良和推广。在很多问题,LSTM都取得相当巨大的成功,并得到了广泛的使用。LSTM通过刻意的设计来避免长期依赖问题。记住长期的信息在实践中是LSTM的默认行为,而非需要付出很大代价才能获得的能力。

所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个tanh层,如图7所示。

LSTM同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。

LSTM通过设计一种特殊的结构cell,可以使得RNN模型记住长期信息,并且通过设计3种“门”结构,控制信息通过cell,可以选择性增加和去除通过cell结构的信息。这三种“门”作用于cell上构成LSTM模型的隐藏层,也被称为block。这三种门的结构为:遗忘门(Forget Gate),输入门(input Gate),输出门(Output Gate),具体作用如下:

遗忘门:用来控制上一时刻的隐藏层节点存储的历史信息。遗忘门会根据上一时间隐藏层的状态和当前时刻节点的输入计算得到0到1之间的值,作用于上一时刻的cell的状态,来确定需要保留和舍弃哪些信息。其中1表示保留,0表示舍弃。通过遗忘口的处理我们可以对隐藏层cell的输出(即历史信息)进行选择性的处理。兙俥

输入门:用来控制当前隐藏节层cell状态的输入。可对输入的信息通过一些运算,判断是否将输入信息更新到当前时刻的cell状态,也就是判断需要更新哪些信息,保留存储哪些信息。输入口的输出是sigmoid输出的0到1之间的值,然后作用于输入的信息来确定是否更新cell状态对应的值,其中1表示允许信息通过,对应的值需要更新,0表示不允许通过,对应的值不需要更新。可以看出输入口能够去除一些不需要的信息。

输出门:用来控制当前隐藏层节点的输出。确定是否输出给下一隐藏层或者输出层。通过输出口的控制,我们可以确定哪些信息需要输出。他的状态值也是0和1。其中1表示需要输出,0表示不需要输出。输出口的控制信息作用于当前的cell状态作某种处理之后的值可寻到最终的输出值。

如图9所示,LSTM它解决了标准RNN的梯度消失和梯度爆炸问题,特性是使当前单元得到本单元之前的信息。但是,LSTM的缺点是无法获得本单元之后的单元信息,因此BiLSTM神经网络便应运而生,其模型示意图如图所示。BiLSTM神经网络是对普通LSTM的进一步改进,在序列标注任务中有着出色的效果。它的基本思想是分别用前向和后向的LSTM来抓取过去和将来所包含的隐藏的信息,这两部分的信息组成最终的输出,使得最终的语义编码既依赖于上文的信息,也依赖于下文的信息。

接下来将通过实验来详细描述本实施例所使用的基于Bi-LSTM的分类算法的步骤和实验结果。

D1、构建Bi-LSTM句子分类器。

上述了Bi-LSTM在文本处理中的优越性,因此本实施例中使用Bi-LSTM分类器对句子分类。首先实验构建了一个五层的双向LSTM神经网络,其中前向LSTM(Forward LSTM)和后向LSTM(Backward LSTM)的层次结构完全一样,网络结构如图10所示。

其中各层的设计如下:

E1、网络第一层的输入维度(input shape)为(600,50,100),600表示输入的样例数,50表示每个样例即每个句子最大包含的词数,100表示每个词的词向量维度;第一层的输出维度为(100,50,64),100和50所代表的含义不变,64表示该层的神经元个数。

E2、第二层LSTM的输入即为第一层的输出;第二层的输出表明在新的一层也使用64个神经元。

E3、第三层的的输出为(600,32),因为后面接merge层,所以不需要返回整个序列,仅需返回输出序列的最后一个输出,因此输出为2D的张量。

E4、第四层为merge层,需要将Forward LSTM和Backward LSTM的输出进行融合,融合方式为“concat”,即将两张量进行拼接。

E5、第五层为输出层,输出层与merge层全连接,以merge层向量P为输入,采用softmax分类]对向量P进行分类,并输出7种分类的预测结果。

通过以上五层架构,即可完成对Bi-LSTM模型的搭建。

D2、采用半监督的方式获取标注数据。

首先对故障描述,故障分析过程,分析结论,故障处理方法,现场情况,建议及对策,故障原因这七个类别,分别标注10条句子,共70条;然后将所有分好的句子用doc2vector训练句向量,doc2vector的原理和上述Word2vector的原理相似,得到每个句子的向量化表示,并进行存储;对已标注好的70条句子分别通过句向量计算出相似度最高的前10条句子,去重后每个类别的句子能扩充到60条,再对这60条进行人工筛选,得到扩充后的标注句子共400条,数量分别为:

表19句子类别标注数量

标注结果表格如下:

表20句子分类结果实例

D3、选取评价指标。

本实施例中解决的是多分类的问题,因此采用的评价指标为F1-Score来反映模型的好坏,它是调和precision(精确度)和recall(召回率)的一个综合指标,用这个当指标比较客观公正。这个参数的计算公式为:

D4、评估迭代次数和Dropout率对句子分类的影响。

迭代的次数不仅仅决定了模型的性能好坏,还决定了训练的时间长短,而Dropout率可能会对模型的泛化能力产生影响。因此本文首先考虑模型最优的迭代次数和模型中是否需增加Dropout层。同时训练两个模型BiLSTM_drop和BLSTM_nodrop,这两个模型唯一的不同之处就是BLSTM_nodrop的三层LSTM层后没有添加Dropout层。

图11分别描述了随着迭代次数的增加BLSTM_drop和BLSTM_nodrop在训练集和验证集上Loss(损失值)和F1_score值的变化。

从图11可以看出当迭代次数超过15之后,Loss的值趋于稳定,意味着继续增加迭代次数对模型的优化影响不大,此结果从图12中亦可以得出。因此本文模型的最优迭代次数为15。从图11可以看出BLSTM_drop模型在验证集上的Loss值均大于BLSTM_nodrop模型在验证集上的Loss值,且图12中BLSTM_drop模型在验证集上的F1_score值均小于BLSTM_nodrop模型在验证集上的F1_score值,因此本文模型不加Dropout层效果最好。这是因为Dropout层在数据规模较大的模型中效果较好,然而本文的数据集相对少,若增加该层会导致信息丢失。

D5、BiLSTM与LSTM性能对比。

为了对比BiLSTM与LSTM的性能,将已有的最优的Bi-LSTM与去掉后向传播的LSTM模型作比较。试验结果如图13所示,为了确保对比实验结果的有效性,实验结果均在两个模型各自最优参数下获得。

可知,BiLSTM的F值比LSTM的F值高。BiLSTM的性能优于LSTM,这是因为LSTM的序列信息从前向后一次传播,并不包含从后向前的传播信息,这种单向机制仅能体现句子词汇序列当前词的前文信息,而对后文信息并未涉及。而BiLSTM在正向LSTM的基础上增加了一个反向LSTM,正向的用于捕获上文特征信息,反向的用于捕获下文特征信息,然后通过融合捕获的上下文特征信息最终获得全局的上下文特征信息。因为BiLSTM能使典型故障案例句子更好的分类。

通过以上实验,可以证实本实施例提出的针对句子状态量的分类算法是有效的,通过分类结果,可以直接得到对应的(属性,状态量)二元组匹配。

以上所述就是本实施例针对电网故障案例文本进行结构化的具体实施方式,通过CRF++来进行命名实体识别,再基于规则提取数字型状态量及其描述属性;对于词组形式的非数字型状态量和描述属性,本实施例采用的是基于语法规则的修饰匹配,而针对句子形式的状态量,本实施例提出了基于双向LSTM的分类算法来提取其修饰属性。最终通过实验证实本实施例对电网故障案例的文本结构化是有效的。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号