一种并行化的电力设备缺陷文本分类方法与流程

文档序号:14403158阅读:164来源:国知局
一种并行化的电力设备缺陷文本分类方法与流程

本发明涉及一种并行化的电力设备缺陷文本分类方法。



背景技术:

文本分类算法主要包含预处理、文本特征抽取、文本表示、分类计算这四个步骤。其中中文文本的预处理步骤主要包含分词、去停用词;文本特征抽取主要有tfidf、textrank为代表的基于词频统计的方法和lda为代表的基于主题模型的方法;文本表示主要有不考虑上下文语境的one-hot方式和基于word2vec的方式;最后的分类步骤对于一般的分类挖掘算法均可纳入考虑。在特定领域的文本分类任务中,主要需考虑的问题就是结合领域的语言和专业的特点,在预处理、特征抽取等步骤进行相应的算法调整。文本分类过程中还需要根据分类对象的规模特点进行相应的算法改进,通常情况下,对于长文本可以直接使用上述流程进行分类,且分类效果一般会好于短文本,主要是因为长文本的信息含量较为充足,相比而言,短文本在分类过程中直接使用上述流程,会导致短文本本就贫乏的特征有所损失,因此通常会考虑只进行停用词的过滤,而不再通过tfidf等算法进一步的进行关键词的筛选。

在电力缺陷文本中,对于缺陷的严重程度的分类,在以往都是人工根据经验对缺陷描述进行判断,手动分类为“严重”、“一般”、“危急”三个类别,这样不仅会造成大量的人工劳动成本,还会因为不同人的主观认知差异造成判断结果的不同。因此,借助于文本分类算法进行自动的文本分类计算是十分有意义的,但是在电力领域缺陷案例分类方面目前还鲜有研究。

一般的分词步骤都是基于一个默认词库进行的,这对于通用的公共领域文本可以做到较为准确的分词,但是对于该情景的文本对象,仅仅利用默认词库难以得到理想的结果,需要将领域性考虑进去,在ansj的默认词典中加入电力行业的专业词库,精准的分词是准确训练出word2vec的重要前提。

同样,一般的word2vec都是根据通用语料库进行训练的,而该发明针对的文本对象有很强的专业性,因此需要对于该领域首先收集大量的文本,进行word2vec词向量表示的训练。之后在用此训练结果基础上,考虑对于后续的文本进行表示。

由于该流程是建立在spark并行框架上的,以期达到对于大数据输入形式的高效计算,而该平台mllib中的svm分类算法包是一个二分类器,难以对于该情景遇到的多分类场景进行处理。



技术实现要素:

本发明为了解决上述问题,提出了一种并行化的电力设备缺陷文本分类方法,本发明解决对于具有很强专业性的电力缺陷案例文本进行缺陷紧急程度的分类,直接使用传统的分析流程难以得到满意的分类结果,且当数据量大时,能够通过spark并行框架高效的完成分析流程,做到大数据规模的分类分析。

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

一种并行化的电力设备缺陷文本分类方法,包括以下步骤:

(1)将领域词库加入到用户词典中,对缺陷案例进行预处理,进行分词和去停用词;

(2)利用爬虫算法,收集电网故障案例的文本语料,利用spark的word2vec进行训练,获取该领域的词向量表示;

(3)将步骤(1)得到的原始缺陷案例中的词语转化为步骤(2)对应的词向量,并将案例数据进行文本表示,构成矩阵的形式;

(4)将矩阵输入到svm多分类器中,进行训练与分类,得到分类结果。

进一步的,所述步骤(1)和步骤(2)的顺序互换。

进一步的,所述步骤(1)中,进行分词的处理方法为:将文本数据从hdfs上读取到程序的数据结构中,每一行为一条文本数据,存储的数据结构为rdd[string]形式;将领域词库导入到ansj的用户词库中,调用ansj中的library.makeforest接口将领域词典导入,将分词词库进行补全,得到完整词库,作为分词的依据;利用spark的map操作对于每一个语料进行分词处理,采用精准分词,即调用ansj中的toanalysis.parse接口,利用map算子对于每一条语句同时并行地进行分词处理。

所述步骤(1)中,进行停用词的处理方法为:将停用词表从hdfs上导入到程序的数据结构中,原始输入为每一行为一个停用词的格式,存储的数据结构为rdd[string]形式;利用spark的map算子对于每一个分完词的结果进行去停用词操作,比照划分得到的每一个词语,凡是在停用词集合中的过滤掉,同时利用map算子对于每一条文本同时地进行停用词过滤;将结果整理成rdd[array[string]]格式,每一行为一个案例的处理结果,每条结果的格式为若干词语,中间用空格的形式隔开,将处理好的结果存储在数据结构中,并以txt格式输出到hdfs上。

进一步的,所述步骤(2)中,利用爬虫手段,收集该领域的大量文本,作为领域词向量训练语料的一部分,将收集的外部数据和待分析的缺陷案例进行合并,构成训练语料,进行分词和停用词的预处理,调用spark的word2vec算法包,利用word2vec.fit算子将上一步的结果输入到word2vec模型中进行词向量的训练,并通过model.getvectors算子获取训练得到的词向量结果,将待分析的案例文本从hdfs上读入到数据结构中,对于案例中的词语用训练好的相应的向量进行替换。

更进一步的,将每一篇案例的若干词语的向量结果求均值,作为该案例的整体特征,对计算得到的结果进行整理,每一行对应一个案例的特征,每行的格式为dj紧急程度类别标记,并以txt的格式输出到hdfs上。

进一步的,所述步骤(3)中,将文本特征数据导入到数据结构中,将案例数据进行训练集和测试集的切分,设置迭代次数,采用随机梯度下降法进行模型的构建,利用训练集训练模型,利用准确率或召回率进行训练结果的评估,如果评估结果不符合设定条件,重新调整迭代参数和模型参数,直到输出结果符合设定条件。

进一步的,所述步骤(4)中,对svm算法进行改进,使其能够应对多分类的场景,具体改进方法为:

(4-1)将原始案例数据按照每一类紧急类别进行划分,并将划分得到的子数据集进行两两组合,构成新的组合数据集;

(4-2)将原始数据训练集中的每一个组合数据集输入到spark的svm二分类工具包中,进行模型的训练;

(4-2)将测试集中的数据分别输入到三个训练完毕的svm二分类器中进行类别的判断,每个分类器通过分类结果进行投票,经过三个分类器后,将投票结果相加,得到最终的分类结果。

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

本发明对于电力设备缺陷案例文本紧急程度分类的准确性高于通用算法,结合了领域特点进行算法设计,使得整体算法可靠性得以提升。同时流程基于spark进行并行化设计,相比于串行算法,对于大数据情形能够更好的适应,减少时间消耗。

本发明针对电力设备缺陷案例文本进行缺陷紧急情况分类的任务,在word2vec的词向量表示环节,采用了领域语料进行训练的方式,与通常的基于公开语料的训练结果相比,该结果能够更精准的体现本领域的语言描述模式特点,且可以直接使用在该领域文本聚类、关联分析等其它应用的流程环节。

同时,本发明将spark平台的二分类算法改写成多分类算法,保留了svm复杂分类过程的高度并行的特点,填补了spark框架上的svm多分类方法的空白。整体分析流程完全进行了基于spark的并行化设计与实现,相比于一般的非并行模式,能够更好的适应实际应用中的大数据场景。

附图说明

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

图1为本发明的整体流程图;

图2为本发明预处理过程流程图;

图3为本发明特征表示过程流程图;

图4为本发明分类流程图;

图5为本发明的svm多分类流程图;

图6为本发明的不同规模的执行时间结果对比示意图。

具体实施方式:

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

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

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

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

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

本发明解决对于具有很强专业性的电力缺陷案例文本进行缺陷紧急程度的分类,直接使用传统的分析流程难以得到满意的分类结果,且当数据量大时,能够通过spark并行框架高效的完成分析流程,做到大数据规模的分类分析。

如图1所示,该过程主要由文本预处理、领域word2vec词向量表示训练、文本特征表示、利用svm进行紧急程度分类四个步骤构成。

预处理步骤主要包括分词和去停用词;word2vec词向量表示训练需要引入收集的外部相关的领域文本语料,以确保结果的普适性;文本特征表示主要采用词向量的均值方式;经过修改的svm多分类器首先进行模型训练,之后进行案例分类。四个步骤的具体介绍见下面的部分。

文本预处理与并行化

该步骤主要包含的操作为分词和去停用词,此外就是基于spark进行预处理并行化的设计,流程如图2所示。

该步骤的操作步骤:

1.将文本数据从hdfs上读取到程序的数据结构中,每一行为一条文本数据,存储的数据结构为rdd[string]形式;

2.将领域词库导入到ansj的用户词库中,调用ansj中的library.makeforest接口将领域词典导入,将分词词库进行补全。最终得到(默认词库+领域词库)构成的完整词库,作为分词的依据;

3.利用spark的map操作对于每一个语料进行分词处理,在这里采用精准分词,即调用ansj中的toanalysis.parse接口。这一步操作的并行化体现在map算子对于每一条语句同时并行地进行分词处理,可以节省时间成本;

4.将停用词表从hdfs上导入到程序的数据结构中,原始输入为每一行为一个停用词的格式,存储的数据结构为rdd[string]形式;

5.利用spark的map算子对于每一个分完词的结果进行去停用词操作。即,比照划分得到的每一个词语,凡是在停用词集合中的,过滤掉。这一步操作的并行化体现在map算子,对于每一条文本同时地进行停用词过滤;

6.经过以上处理,将结果整理成rdd[array[string]]格式,每一行为一个案例的处理结果,每条结果的格式为若干词语,中间用空格的形式隔开。将处理好的结果存储在数据结构中,并以txt格式输出到hdfs上。

该步骤主要包含的操作为训练并获取领域词语的向量化表示、将案例词语转化为对应的向量化表示、将每一条案例文本进行向量化表示并作为该文本的特征。之后就是基于spark进行的并行化设计,流程如图3所示。

该步骤的操作步骤:

1.利用爬虫等手段收集该领域的大量文本,作为领域词向量训练语料的一部分。本发明利用python语言和scrapy框架从知网爬取了62643篇相关的论文作为外部数据;

2.将收集的外部数据和待分析的缺陷案例进行合并,构成训练语料。将以上训练语料进行分词操作,也就是预处理部分的strp.1~step.3,将分词之后的结果存储在数据结构中;

3.调用spark的word2vec算法包,利用word2vec.fit算子将上一步的结果输入到word2vec模型中进行词向量的训练,并通过model.getvectors算子获取训练得到的词向量结果,将结果整理成“词语向量”的形式,每行一个,以txt格式输出到hdfs上。这一步的并行化体现在调用了spark框架的word2vec算法包,由于该包就是基于平台的机制进行编写的,因此能够针对spark框架在最大程度上实现复杂训练过程的并行化。在训练的过程中,将向量维度setvectorsize设置为200,setmincount设置为0,其他使用默认参数即可;

4.将待分析的案例文本从hdfs上读入到数据结构中,对于案例中的词语用训练好的相应的向量进行替换;

5.将每一篇案例的若干词语的向量结果求均值,作为该案例的整体特征。即,设每篇文档中词语i向量化表示后的结果为wi=(wi1,wi2,…wi200),案例j的m个词语经过向量化表示后为m_dj=(wj1,wj2,…,wjm),则该案例的对应特征向量为

将上一步计算得到的结果进行整理,每一行对应一个案例的特征,每行的格式为“dj紧急程度类别标记”。其中dj是一个1*200的向量,向量中每一个元素用空格隔开,本发明中将”紧急“、”严重“、”一般“这三类分别标记为3,2,1,类别标记与dj之间用英文逗号”,“隔开。将以上结果按照格式进行整理,并以txt的格式输出到hdfs上。

如图4所示,文本分类与并行化:

该步骤主要包含的操作为将案例数据进行训练集与测试集的切分、svm模型的构建、模型训练、利用评价指标进行效果评估、调参五个步骤。该模块首先将mllib中的二分类svm算法包进行了改写,变成一个多分类算法,之后将其封装并应用到分类流程中。该流程的基于spark的并行化体现在对于原生svm包的调用与改进。

该过程的整体操作步骤:

1.将hdfs上的向量化的文本特征导入到libsvm格式的数据结构中;

2.调用mlutils.loadlibsvmfile的randomsplit接口,将案例数据按照60%和40%的比例划分为训练集和测试集;

3.设置迭代次数numiterations为150,其他参数选择默认值,调用svmwithsgd.train算子选择随机梯度下降法进行模型的构建;

4.利用训练集数据进行模型的训练,并调用model.predict算子对于测试集进行分类的预判;

5.将预判结果与实际结果进行比对,选择准确率、召回率、f1值作为效果的评价指标进行结果的评估;

6.返回step.3,对于各个参数进行重新设置,重复step.3~step.6直到达到满意的结果,最终得到相应的参数与模型。

本发明对于mllib的svm算法包进行了改进,使其能够应对多分类的场景,主要思路基于一对多法。

该过程的具体操作步骤:

1.将“一般”、“严重”,“危急”三个类别的向量形式的文本数据分开。按照(“一般”、“严重”),(“危急”、“严重”),(“一般”、“危急”)的形式进行数据集的两两组合,构成三个新的组合数据集;

2.将原始数据训练集中的每一个组合数据集输入到spark的svm二分类工具包中,进行模型的训练(具体步骤见图4);

3.对于测试集中的每一条数据,设置其初始类别票数为(“一般”,“严重”,“危急”)=(0,0,0)

4.将测试集中的数据分别输入到三个训练完毕的svm二分类器中进行类别的判断。每个分类器通过分类结果进行投票。例如,当(“一般”,“危险”)分类器中,判断的类别为“一般”,则(“一般”,“严重”,“危急”)(一般,危险)=(1,0,0)

5.经过三个分类器后,将投票结果相加,即(“一般”,“严重”,“危急”)=(“一般”,“严重”,“危急”)(一般,危险)+(“一般”,“严重”,“危急”)(紧急,危险)

+(“一般”,“严重”,“危急”)(一般,紧急)。

最终的类别为max(“一般”,“严重”,“危急”)对应的类别。

在文本分类步骤中,由于基于的svm算法包是spark平台中的原有算法工具,已经在开发的过程中最大程度的结合了框架的并行特点进行了算法的并行化,因此本步骤的并行性能也达到了令人满意的程度。

作为一种应用实施例,本发明中的所有试验都在一个包含1个主节点(master),3个从节点(slave)的本地搭建的spark集群上进行。集群的磁盘容量配置为2.88t,总内存为32g。spark版本为1.6.0,hadoop版本为2.7.0。

本实验主要从分类准确性的角度进行评估,对于最终的结果选用准确率p、召回率r和f1值进行衡量,三者的计算公式如下:

选用如下三个方案与本发明的方案进行对比:

对比方案1:tfidf表示+朴素贝叶斯;

对比方案2:tfidf表示+svm;

对比方案3:基于通用预料训练的word2vec+svm;

本发明:基于领域预料训练的word2vec+svm;

表1不同方案的分类结果对比

通过以上的结果对比,可以发现基于word2vec+svm的方案效果普遍好于其他方案。其中,基于领域语料训练的word2vec向量相比于基于通用语料,能够更好的适应该场景的分类任务。

为了验证并行化后的算法在运行速度上的提升,我们将数据集划分成200k,20m,500m,1g的规模。对于基于spark框架的并行,考虑到每个executor都拥有固定的核数目,而core数目直接导致每个executor中task并行的数目。因而在这里设置的总的执行的核数越多,就越能增加程序的并行程度。由于集群总的核数为48个,因此这里设置的num-executors和executor-cores的乘积就要整体上小于48,经过实验调试,在这里进行的并行实验我们进行如下的参数配置:

--deploy-modecluster

--masteryarn-cluster

--num-executors12

--executor-cores3

--executor-memory16g

--driver-memory8g

分别对于单机参数(num-executors=1)和上述并行参数进行设置,对于四种规模的数据执行本发明的算法流程,其执行所用的时间如图6所示。

可以看出,单机运行的时间消耗在四种规模中均高于并行的时间消耗,同时,随着数据集的增长,单机的时间消耗会急剧增长,而并行的算法时间增长相比而言较为平缓。综上可见,并行算法能够在时间消耗上小于单机算法,并且随着数据规模的增长,优势愈发明显。

本发明是针对电力设备缺陷案例文本进行缺陷紧急情况分类的任务。在word2vec的词向量表示环节,采用了领域语料进行训练的方式,与通常的基于公开语料的训练结果相比,该结果能够更精准的体现本领域的语言描述模式特点,且可以直接使用在该领域文本聚类、关联分析等其它应用的流程环节。同时,将spark平台的二分类算法改写成多分类算法,保留了svm复杂分类过程的高度并行的特点,填补了spark框架上的svm多分类方法的空白。整体分析流程完全进行了基于spark的并行化设计与实现,相比于一般的非并行模式,能够更好的适应实际应用中的大数据场景。

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

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1