CN108921188A - 一种基于Spark大数据平台的并行CRF算法 - Google Patents

一种基于Spark大数据平台的并行CRF算法 Download PDF

Info

Publication number
CN108921188A
CN108921188A CN201810500016.7A CN201810500016A CN108921188A CN 108921188 A CN108921188 A CN 108921188A CN 201810500016 A CN201810500016 A CN 201810500016A CN 108921188 A CN108921188 A CN 108921188A
Authority
CN
China
Prior art keywords
feature
rdd
data
training
parallel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810500016.7A
Other languages
English (en)
Other versions
CN108921188B (zh
Inventor
胡峰
万志超
王国胤
于洪
张清华
刘柯
郭英杰
周雷
王驰龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing University of Post and Telecommunications
Original Assignee
Chongqing University of Post and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chongqing University of Post and Telecommunications filed Critical Chongqing University of Post and Telecommunications
Priority to CN201810500016.7A priority Critical patent/CN108921188B/zh
Publication of CN108921188A publication Critical patent/CN108921188A/zh
Application granted granted Critical
Publication of CN108921188B publication Critical patent/CN108921188B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting

Landscapes

  • Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明请求保护一种基于Spark大数据平台的并行CRF算法,涉及数据挖掘技术和自然语言处理技术。首先,读取大规模数据集,进行数据初始化处理,将数据集划分为训练集和测试集。其次,获取特征模板,创建分布式训练数据集RDD和分布式特征模型RDD。再次,利用flatMap特征模型将训练数据转换成特征,通过整合相同的特征得到特征RDD,从而生成并行特征。然后,通过梯度计算更新特征权值,直到所有训练数据RDD更新完成,得到特征权值向量。最后,从HDFS上读取训练好的模型数据和测试数据,将测试数据执行特征抽取操作,利用特征权值向量计算得到最优预测标记序列,将输出存在HDFS中。本发明提高了CRF算法的高迭代效率。

Description

一种基于Spark大数据平台的并行CRF算法
技术领域
本发明属于云计算、数据挖掘、自然语言处理等领域,提供了一种基于Spark大数据平台的并行CRF算法。
背景技术
随着信息社会的快速发展,互联网产生的数据随着指标等级的快速增长,通常具有数量多,维数高,结构复杂,噪声大等特点,具有广泛的应用前景。传统的时序数据处理算法不足以分析这种大量的数据,特别是对于高迭代计算的机器学习模型。
条件随机场(CRF)恰恰是这种模型:具有大量计算参数评估的条件概率模型。它在图像分类,生物医学和文本内容等诸多领域得到了广泛的应用,取得了令人满意的结果。CRFs模型的优势在于表现了长距离相关性和重叠性,与生成性统计模型相比,具有显着的优越性。作为另一个概率图模型,隐马尔可夫模型(HMMs)不能使用复杂的特征来进行严格的独立假设。此外,CRFs可以克服其他判别模型中存在的标签偏差问题,如最大熵马尔可夫模型(MEMMs)等。
但是对于参数较多的模型,CRF的训练时间通常是比其他机型更长。当面对大规模数据时,传统的独立处理算法的CRF模型的时间效率往往不尽人意。例如,传统的CRF模型需要大约45小时不到400个训练样例(3.0GHz CPU,1.0G内存和400次迭代)。它是由模型参数估计周期长的问题引起的,因为它需要计算所有特征的全局梯度。随着训练数据的增长,标签种类数和特征数的增加,算法的时间复杂度呈现非线性增长。昂贵的训练成本是非常重要的问题之一,使CRF不能有效地应用到大数据量的应用中。为了克服这个瓶颈,在并行计算平台中更快的处理和优化算法已经成为一个非常活跃的研究领域。
Spark是一个基于内存的分布式计算系统,是由UC Berkeley AMPLab实验室于2009年开发的开源数据分析集群计算框架。拥有MapReduce的所有优点,与MapReduce不同的是.Spark将计算的中间结果数据持久地存储在内存中,通过减少磁盘I/O。使后续的数据运算效率更高。Spark的这种架构设计尤其适合于机器学习、交互式数据分析等应用.这些应用都需要重复地利用计算的中间数据。在Spark和Hadoop的性能基准测试对比中,运行基于内存的logistic regression,在迭代次数相同的情况下,Spark的性能超出HadoopMapReduce 100倍以上。两者之间在计算过程中也存在一些不同之处,比如MapReduce输出的中间结果需要读写HDFS,而Spark框架会把中间结果保存在内存中。这些不同之处使Spark在某些工作负载方面表现得更加优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。而弹性分布式数据集(RDD,ResilientDistributed Datasets)是Spark框架的核心数据结构,它具备像MapReduce等数据流模型的容错特性,并且允许开发人员在大型集群上执行基于内存的计算。Spark将数据集运行的中间结果保存在内存中能够极大地提高性能,资源开销也极低,非常适合多次迭代的机器学习算法。
Spark的核心概念是RDD(resilient distributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。传统的MapReduce虽然具有自动容错、平衡负载和可拓展性的优点,但是其最大缺点是采用非循环式的数据流模型,使得在迭代计算式要进行大量的磁盘IO操作。RDD正是解决这一缺点的抽象方法。RDD的具体描述RDD(弹性数据集)是Spark提供的最重要的抽象的概念,它是一种有容错机制的特殊集合,可以分布在集群的节点上,以函数式编操作集合的方式,进行各种并行操作,可以将RDD理解为一个具有容错机制的特殊集合它提供了一种只读、只能有已存在的RDD变换而来的共享内存,然后将所有数据都加载到内存中,方便进行多次重用。RDD是分布式的,可以分布在多台机器上,进行计算,并且RDD是弹性的,计算过程中内存不够时它会和磁盘进行数据交换。
对于大多数机器学习算法,高迭代需要对存储在磁盘中的中间数据进行频繁的I/O操作。在当前流行的数据处理框架中,与Hadoop相比,Spark平台支持基于内存计算框架的弹性分布式数据集(RDD)模型。它允许用户将数据缓存存储在内存中,并直接从内存中对同一数据进行计算和迭代。基于内存模式的计算,Spark平台可以节省大量的磁盘I/O操作时间。因此,与传统的计算方法相比,它更适合迭代计算的机器学习算法。现有技术海量的数据集进行高迭代机器学习算法时容易内存溢出、时间过长和无法运行宕机。
发明内容
本发明旨在解决以上现有技术的问题。通过降低模型的低频特征,Spark CRF可以避免模型的过拟合,从而提高模型预测的F1值。而且,Spark CRF可以缓存经常用于存储器的中间数据,提高整个算法的运行效率的基于Spark大数据平台的并行CRF算法。本发明的技术方案如下:
一种基于Spark大数据平台的并行CRF算法,其包括以下步骤:
首先,读取大规模数据集,进行数据初始化处理,将数据集划分为训练集和测试集;其次,将训练集转换为Spark大数据平台的分布式数据集RDD,获取特征模型,将特征模型广播到全节点;再次,利用flatMap特征模型将训练数据转换成特征,过滤无效特征,然后通过整合相同的特征得到未使用的特征,实现生成并行特征;然后,将全节点每一个训练实例转换成特征向量FI和特征索引标量EI,实现训练数据的并行转换和中间数据缓存;通过梯度计算更新特征权值,每次迭代过程判断是否满足终止条件;根据HDFS上存储好的特征模型和测试数据RDD,利用特征权值计算测试数据转换Map,通过最大和置信算法得到预测标记序列。
进一步的,所述对训练集创建弹性分布式训练数据集RDD,获取特征模板,创建分布式特征模型RDD具体包括;首先创建一个SparkContext对象,SparkContext是Spark的入口,负责连接Spark集群,创建RDD,累积量和广播量;然后调用它的parallelize(DataSet)或textFile(DataSetURL)函数创建分布式数据集RDD,一旦创建完成,这个分布式数据集就可以被并行操作;即,RDD(TrainData)=SparkContext.textFile(TrainData)。
进一步的,所述特征模板和训练数据以Block形式存储在HDFS系统中,由SparkContext对象通过textFile方法将数据转化以Partition形式存储的RDD并加载到内存中,对于特征模板RDD调用filter并传入规则,将无效数据过滤。
进一步的,所述通过flatMap将特征模型映射到训练数据,训练集RDD通过一系列转换操作进行处理,将原始数据以句子为单位根据自定义的类型转化为句子封装类,每个Partition中包含若干个封装类单元存储在集群节点的内存中;然后用相同的key整合相同的特征,并收集它们的values,得到未使用的特征,并存储特征的RDD,从而生成并行特征。
进一步的,所述得到并行特征的RDD后,对所有节点训练数据根据并行特征转换为特征向量FI和特征索引标量EI,然后调用RDD().cache函数将中间数据缓存到内存中,在后面的迭代过程中可以直接调用。
进一步的,所述通过梯度计算更新特征权值,判断是否满足终止训练条件的方法是:在训练过程中将训练集RDD、SparkContext对象、训练过迭代最大次数及收敛值作为过程的输入;根据缓存在内存中的特征向量FI和特征索引标量EI计算特征权值的期望,判断特征权值是否大于收敛值,实现并行训练阶段,输出特征的权值向量,特征集合和模型的元数据信息。
进一步的,所述将全节点每一个训练实例转换成特征向量FI和特征索引标量EI,具体包括:对于每一个训练实例中的被转换为一个标量,这代表着在RDD(feature)的特征索引将这个标量标准化为
进一步的,所述通过最大和置信算法得到预测标记序列具体包括:
预测阶段首先从HDFS上读取训练好的模型数据和测试集并转化为RDD存储在内存中,将模型RDD广播到各个工作节点的Executor进程,Executor进程执行特征抽取操作,重置图中节点对象和边对象的cost值,通过算法完成路径代价的计算,最终找出最优的预测标记序列。
进一步的,所述CRF应用于中文分词时,训练和测试文件必须包含多个tokens,每个token包含多个列,每个token必须写在一行,且各列之间用空格或制表格间隔,一个token的序列可构成一个sentence,sentence之间用一个空行间隔,最后一列是CRF用于训练的正确的标注形式。
本发明的优点及有益效果如下:
本发明针对现有CRF算法在处理海量数据时容易出现内存溢出、时间过长和无法运行宕机等缺点,本发明提出了基于Spark大数据平台的并行CRF算法。首先,利用大数据平台Spark的弹性分布式数据集RDD将海量数据进行分区,实现对数据的并行化操作;其次,利用flatMap将生成的并行特征进行整合,通过降低模型的低频来避免模型的过拟合;再次,将整个SparkCRF迭代过程中的中间数据缓存到内存中,从而较大程度的提高算法的迭代效率。本发明优点在于:本发明可以有效的解决现有CRF算法对海量数据处理时出现的内存溢出、时间过长和无法运行宕机等缺点;其次,本发明可以通过降低模型的低频特征,达到避免模型过拟合的效果,从而提高模型预测的F1值;再次,本发明能有效提高大规模数据的高迭代计算效率,更加符合数据量快速增长的实际商用场景,具有较好的实际应用价值且成本较低。
附图说明
图1是本发明提供优选实施例基于Spark大数据平台的并行CRF算法的流程框图;
图2基于Spark大数据平台的数据分块加载的流程框图;
图3基于Spark大数据平台生成并行特征的流程框图;
图4基于Spark大数据平台并行训练阶段的流程框图;
图5基于Spark大数据平台并行预测阶段的流程框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。
本发明解决上述技术问题的技术方案是:
本发明解决上述技术问题的技术方案是,提出一种基于Spark大数据平台的并行CRF算法。从分布式文件系统HDFS上读取需要处理的数据,转化成Spark平台的分布式数据集RDD。利用Spark分布式并行技术,由特征模板RDD生成并行特征,然后对训练数据RDD并行训练和迭代,将中间结果存储在内存中。将训练迭代产生的特征权值和模型数据转化为RDD存储在内存中,然后广播到全节点进行并行测试,最终得到最优测试标记序列。具体包括以下步骤:
从分布式文件系统获取数据集,并创建一个SparkContext对象,然后用它的parallelize(DataSet)或textFile(DataSet URL)函数创建分布式数据集RDD,一旦创建完成,这个分布式数据集就可以被并行操作。其中特征模板和训练数据以Block形式存储在HDFS系统中,对于特征模板RDD调用filter并传入规则,将无效数据过滤,通过flatMap将特征模型映射到训练数据,训练集RDD通过一系列转换操作进行处理,将原始数据以句子为单位根据自定义的类型转化为句子封装类,每个Partition中包含若干个封装类单元存储在集群节点的内存中。然后用相同的key整合相同的特征,并收集它们的values,得到未使用的特征,并存储特征的RDD,从而生成并行特征RDD(feature)。方法如下:
(1)首先,收集的训练数据应该以一种RDD的格式加载到Spark大数据平台。
RDD(TrainData)=SparkContext.textFile(TrainData)
(2)每一个初始RDD应该包含输入序列X={x1,x2,…,xi,…xn}和相应的输出序列Y={y1,y2,…,yi,…yn},然后特征模板依赖xt产生所有特征。
(3)在Map阶段,在每一个训练实体中的被转换为相同的键值对,key包含所有由依据特征模板产生的所有特征,相对应的value在Map中只能具有1或0值。
(4)在Reduce阶段,相同的特征将被合并,并且它们的value将被累积。结果将被用来初始化参数向量,这是一个稀疏向量,以降低计算成本。总计数等于零的特征将被设置为未使用特征,而其他特征将被设置为使用特征。未使用的特征自然不会被添加到模型中,但是它们的参数可以在训练过程中被更新。
在训练过程中,训练数据需要多次转换为相应的特征,我们需要将每一个训练实体转换成特征向量和经验特征要素,然后将中间结果存储在内存中,支持在下一个过程频繁使用。方法如下:
(1)在每一个训练实体中的将被转换成一个向量,这个向量包含RDD(feature)中由产生的所有特征的索引
(2)假设RDD(feature)一共有K个特征,代表着的特征向量索引:
(3)对于每一个训练实例中的被转换为一个标量,这代表着在RDD(feature)的特征索引将这个标量标准化为
(4)将这些中间数据EI和FI存储在Spark的内存中而不是HDFS上,这样可以在下个阶段的迭代中直接使用。
在模型的训练过程中得到特征函数λ={λ1,λ2,...,λn}的相应权重。较高的λk权重意味着相应的特征更频繁出现,这更可能发生在模型中。是训练数据的例子,其中每个表示输入序列,并且是已知的输出序列。在CRF中,参数估计就是找到一组合适的参数{λk},使得从模型中获得的条件概率P(y|x,λ)尽可能地符合训练数据。方法如下:
(1)输入前面生成并行特征得到的未使用特征unf,并行训练数据转换和缓存过程中得到的RDD(EI,featureFactor)和RDD(FI)
(2)将参数向量λ和未使用特征unf广播到所有节点,然后通过公式计算得到在经验分布下的特征权值fk
EiD[fk]可以由RDD(EI)直接得到。
(3)然后通过公式计算得到特征权值fk的期望
E[fk]需要推理算法去计算边界,RDD(FI)被用来建立集团树,未使用的特征将被过滤以减小计算消耗。
(4)当迭代未结束时,同一次迭代过程中,未使用的特征可以用来修正模型的错误,计算边缘分布时,当一个未使用的特征的概率比某一个确定的值大时,意味着整个模型会因缺少这个特征而出现错误,这个时候未使用的特征就可以被转换成使用的特征,并可以在后面的迭代过程中被训练。
预测阶段首先从HDFS上读取训练好的模型数据和测试集并转化为RDD存储在内存中,将模型RDD广播到各个工作节点的Executor进程,Executor进程执行特征抽取操作,重置图中节点对象和边对象的cost值,通过算法完成路径代价的计算,最终找出最优的预测标记序列。
图1为本发明采用Spark大数据平台进行并行CRF算法流程图,包括如下步骤:
(1)数据预处理阶段
获取实验所需要的数据集,在数据初始化阶段需要将数据转换为特定的格式。这里以CRF在中文分词上的应用为例,训练和测试文件必须包含多个tokens,每个token包含多个列。token的定义可根据具体的任务,如词、词性等。每个token必须写在一行,且各列之间用空格或制表格间隔。一个token的序列可构成一个sentence,sentence之间用一个空行间隔。最后一列是CRF用于训练的正确的标注形式。例如:
CRF ASCII S
是CN S
一CN S>>当前token
个CN S
很CN B
好CN E
的CN S
算CN B
法CN E
。PUCN S
这个例子每个token包含3列,分别是字本身、字类型(英文数字ASCII,汉子CN,标点PUCN等)和词位标记(S单字构成单词,B词首,M词中,E词尾)。
这里需要注意每个token的列数要保持一致,否则整个CRF算法将不能实现。
将数据集划分为训练集和数据集,将这两个分好的数据集转换成Spark平台的分布式数据集RDD,并且完成初始化操作。首先创建一个SparkContext对象,SparkContext是Spark的入口,负责连接Spark集群,创建RDD,累积量和广播量等。然后调用它的parallelize(DataSet)或textFile(DataSetURL)函数创建分布式数据集RDD,一旦创建完成,这个分布式数据集就可以被并行操作;即,RDD(TrainData)=SparkContext.textFile(TrainData)。
(2)生成并行特征
在生成并行特征之前,这个阶段首先要做的是获取特征模板,注意在CRF中的特征模板是用户自己定义的,然后由模板自动生成大量的特征函数。
模板文件中的每一行代表一个template。每一个template中,专门的宏%x[row,col]用于确定输入数据中的一个token。row用于确定与当前的token的相对行数。col用于确定绝对行数。
假设输入数据为下面的示例:
CRF ASCII S
是CN S
一CN S>>当前token
个CN S
很CN B
好CN E
的CN S
算CN B
法CN E
特征模板形式为:
#Unigram
U00:%x[-2,0]
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[2,0]
U05:%x[-1,0]/%x[0,0]
U06:%x[0,0]/%x[1,0]
U07:%x[-1,0]/%x[1,0]
U08:%x[0,1]
U09:%x[-1,1]/%x[0,1]
#Bigram
B
对于CRF算法中的特征模板一共有两种类型:Unigram template和Bigramtemplate。上例中U00-U04的模板产生的是状态特征函数,U05-U09的模板产生的是转移特征函数。
1)Unigram template:第一个字符是U这是用于描述unigram feature的模板。例如上面给出的一个模板"U02:%x[0,0]",CRF会自动的生成一个特征函数集合(func1...funcN),例如:
func1=if(output=B and feature="U02:一")return 1else return0
func2=if(output=M and feature="U02:一")return 1else return0
func3=if(output=E and feature="U02:一")return 1else return0
func4=if(output=S and feature="U02:一")return 1else return0
...
funcX=if(output=B and feature="U02:的")return 1else return0
funcY=if(output=S and feature="U02:的")return 1else return0
...
一个特征模型生成的特征函数的个数总数为L*N,其中L是输出的类别数,这个是用户定义的标注label数,N是根据给定的template扩展出的unique string的数目。
2)Bigram template:第一个字符是B。这个模板用于描述bigram features。使用这个模板,系统将自动产生当前输出token与前一个输出token(bigram)的组合。产生的可区分的特征的总数是L*L*N,其中L是输出的类别数,N是这个模板产生的unique features数。注意,当类别数很大的时候,这种类型会产生许多可区分的特征,这将会导致训练和测试的效率都很低下。
利用Spark分布式的特性,将已经创建好的特征模板以Block的形式存储在HDFS中,由SparkContext对象通过textFile方法将数据转化为以Partition形式存储的RDD并加载到内存中。在使用CRF处理海量级数据时,单一特征的数量将达到数百万,这时就需要过滤掉无效特征。
每一个初始RDD应该包含输入序列X={x1,x2,…,xi,…xn}和相应的输出序列Y={y1,y2,…,yi,…yn},然后特征模板依赖xt产生所有特征。在Map阶段,在每一个训练实体中的被转换为相同的键值对,key包含所有由依据特征模板产生的所有特征,相对应的value在Map中只能具有1或0值。在Reduce阶段,相同的特征将被合并,并且它们的value将被累积。结果将被用来初始化参数向量,这是一个稀疏向量,以降低计算成本。总计数等于零的特征将被设置为未使用特征,而其他特征将被设置为使用特征。未使用的特征自然不会被添加到模型中,但是它们的参数可以在训练过程中被更新。这样对每一个训练集RDD传入特征模板,可以得到每个训练集RDD的特征函数,以达到生成并行特征的目的。
(3)训练数据并行转换和缓存
在训练过程中,训练数据需要多次转换为相应的特征,我们需要将每一个训练实体转换成特征向量和特征索引标量,然后将中间结果存储在内存中,支持在下一个过程频繁使用。方法如下:
首先,对每一个训练实体中的将被转换成一个向量,这个向量包含RDD(feature)中由产生的所有特征的索引;其次,假设RDD(feature)一共有K个特征,利用如下公式创建代表着的特征向量索引
然后对于每一个训练实例中的被转换为一个标量,这代表着在RDD(feature)的特征索引将这个标量标准化为
最后,将这些中间数据EI和FI存储在Spark的内存中而不是HDFS上,这样可以在下个阶段的迭代中直接使用。
(4)并行训练阶段
在模型的训练过程中得到特征函数λ={λ1,λ2,...,λn}的相应权重。较高的λk权重意味着相应的特征更频繁出现,这更可能发生在模型中。是训练数据的例子,其中每个表示输入序列,并且是已知的输出序列。在CRF的训练阶段就是要找到一组合适的参数{λk},使得从模型中获得的条件概率P(y|x,λ)尽可能地符合训练数据。方法如下:
Step1:输入未使用特征unf,RDD(EI,featureFactor)和RDD(FI)
Step2:初始化参数向量{λk}=(0,…,0)
Step3:将参数向量{λk}和unf广播到训练数据RDD所有Partition
Step4:重置图中节点对象和边对象的cost值
Step5:调用ForwardBackward函数计算图中每个节点的α和β值。
Step6:计算每个特征权值的期望和期望变化量
Step7:判断是否计算完训练数据RDD中所有Partition,若满足,则输出特征权值数组{λk};否则转到下一个Partition,并更新unf和{λk}。
(5)并行预测阶段
预测阶段首先从HDFS上读取训练好的模型数据和测试集并转化为RDD存储在内存中,将模型RDD广播到各个工作节点的Executor进程,Executor进程执行特征抽取操作,重置图中节点对象和边对象的cost值,通过算法完成路径代价的计算,最终找出最优的预测标记序列。方法如下:
Step1:将训练好的模型数据和测试数据集广播到所有节点
Step2:对RDD(TestData)执行Map操作,进行特征抽取
Step3:重置图中节点对象和边对象的cost值
Step4:通过ForwardBackward算法完成路径代价的计算
Step5:使用Viterbi算法解码找出最优的输出标记序列
最后输出的预测标记序列就是对测试集调用CRF算法的结果,调用Viterbi和ForwardBackward算法后,会得到N-best的结果,这个结果根据CRF计算出的条件概率P(y|x,λ)排序得到。例如:
# 0 0.478113
他 CN S S
是 CN S S
研 CN B B
究 CN E E
生 CN B B
物 CN E E
的 CN S S
# 1 0.194335
他 CN S S
是 CN S S
研 CN B B
究 CN E M
生 CN B E
物 CN E S
的 CN S S
其中第一行的"#0.478113"即是输出的条件概率P(y|x,λ),最后一列是模型预测的tag,第三列是标准的tag,则可以通过简单的比较第三列和第四列之间的差别计算出准确率。
最后调用saveAsTextFile(“outpath”)函数将预测标记序列的RDD做持久化存储,把每个分区的预测标记序列保存到HDFS上。
以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。

Claims (9)

1.一种基于Spark大数据平台的并行CRF算法,其特征在于,包括以下步骤:
首先,读取大规模数据集,进行数据初始化处理,将数据集划分为训练集和测试集;其次,将训练集转换为Spark大数据平台的分布式数据集RDD,获取特征模型,将特征模型广播到全节点;再次,利用flatMap特征模型将训练数据转换成特征,过滤无效特征,然后通过整合相同的特征得到未使用的特征,实现生成并行特征;然后,将全节点每一个训练实例转换成特征向量FI和特征索引标量EI,实现训练数据的并行转换和中间数据缓存;通过梯度计算更新特征权值,每次迭代过程判断是否满足终止条件;根据HDFS上存储好的特征模型和测试数据RDD,利用特征权值计算测试数据转换Map,通过最大和置信算法得到预测标记序列。
2.根据权利要求1所述的一种基于Spark大数据平台的并行CRF算法,其特征在于,所述对训练集创建弹性分布式训练数据集RDD,获取特征模板,创建分布式特征模型RDD具体包括;首先创建一个SparkContext对象,SparkContext是Spark的入口,负责连接Spark集群,创建RDD,累积量和广播量;然后调用它的parallelize(DataSet)或textFile(DataSetURL)函数创建分布式数据集RDD,一旦创建完成,这个分布式数据集就可以被并行操作;即,RDD(TrainData)=SparkContext.textFile(TrainData)。
3.根据权利要求2所述的一种基于Spark大数据平台的并行CRF算法,其特征在于,所述特征模板和训练数据以Block形式存储在HDFS系统中,由SparkContext对象通过textFile方法将数据转化以Partition形式存储的RDD并加载到内存中,对于特征模板RDD调用filter并传入规则,将无效数据过滤。
4.根据权利要求2所述的一种基于Spark大数据平台的并行CRF算法,其特征在于,所述通过flatMap将特征模型映射到训练数据,训练集RDD通过一系列转换操作进行处理,将原始数据以句子为单位根据自定义的类型转化为句子封装类,每个Partition中包含若干个封装类单元存储在集群节点的内存中;然后用相同的key整合相同的特征,并收集它们的values,得到未使用的特征,并存储特征的RDD,从而生成并行特征。
5.根据权利要求4所述的一种基于Spark大数据平台的并行CRF算法,其特征在于,所述得到并行特征的RDD后,对所有节点训练数据根据并行特征转换为特征向量FI和特征索引标量EI,然后调用RDD().cache函数将中间数据缓存到内存中,在后面的迭代过程中可以直接调用。
6.根据权利要求4所述的一种基于Spark大数据平台的并行CRF算法,其特征在于,所述通过梯度计算更新特征权值,判断是否满足终止训练条件的方法是:在训练过程中将训练集RDD、SparkContext对象、训练过迭代最大次数及收敛值作为过程的输入;根据缓存在内存中的特征向量FI和特征索引标量EI计算特征权值的期望,判断特征权值是否大于收敛值,实现并行训练阶段,输出特征的权值向量,特征集合和模型的元数据信息。
7.根据权利要求4所述的一种基于Spark大数据平台的并行CRF算法,其特征在于,所述将全节点每一个训练实例转换成特征向量FI和特征索引标量EI,具体包括:对于每一个训练实例中的被转换为一个标量,这代表着在RDD(feature)的特征索引将这个标量标准化为
8.根据权利要求4所述的一种基于Spark大数据平台的并行CRF算法,其特征在于,所述通过最大和置信算法得到预测标记序列具体包括:
预测阶段首先从HDFS上读取训练好的模型数据和测试集并转化为RDD存储在内存中,将模型RDD广播到各个工作节点的Executor进程,Executor进程执行特征抽取操作,重置图中节点对象和边对象的cost值,通过算法完成路径代价的计算,最终找出最优的预测标记序列。
9.根据权利要求4所述的一种基于Spark大数据平台的并行CRF算法,其特征在于,所述CRF应用于中文分词时,训练和测试文件必须包含多个tokens,每个token包含多个列,每个token必须写在一行,且各列之间用空格或制表格间隔,一个token的序列可构成一个sentence,sentence之间用一个空行间隔,最后一列是CRF用于训练的正确的标注形式。
CN201810500016.7A 2018-05-23 2018-05-23 一种基于Spark大数据平台的并行CRF方法 Active CN108921188B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810500016.7A CN108921188B (zh) 2018-05-23 2018-05-23 一种基于Spark大数据平台的并行CRF方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810500016.7A CN108921188B (zh) 2018-05-23 2018-05-23 一种基于Spark大数据平台的并行CRF方法

Publications (2)

Publication Number Publication Date
CN108921188A true CN108921188A (zh) 2018-11-30
CN108921188B CN108921188B (zh) 2020-11-17

Family

ID=64403827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810500016.7A Active CN108921188B (zh) 2018-05-23 2018-05-23 一种基于Spark大数据平台的并行CRF方法

Country Status (1)

Country Link
CN (1) CN108921188B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109597857A (zh) * 2018-12-06 2019-04-09 中电工业互联网有限公司 一种基于Spark的物联网大数据计算方法
CN110059004A (zh) * 2019-03-21 2019-07-26 深圳市腾讯信息技术有限公司 一种应用测试的方法、装置、设备和介质
CN110109923A (zh) * 2019-04-04 2019-08-09 北京市天元网络技术股份有限公司 时序数据的存储方法、分析方法及装置
CN110297714A (zh) * 2019-06-19 2019-10-01 上海冰鉴信息科技有限公司 基于大规模图数据集获取PageRank的方法及装置
CN110580203A (zh) * 2019-08-19 2019-12-17 武汉长江通信智联技术有限公司 一种基于弹性分布式数据集的数据处理方法、装置及系统
CN111274796A (zh) * 2018-12-04 2020-06-12 北京嘀嘀无限科技发展有限公司 向量获取方法、装置、电子设备以及计算机可读存储介质
CN112615773A (zh) * 2020-12-02 2021-04-06 海南车智易通信息技术有限公司 一种消息处理方法及系统
CN112667709A (zh) * 2020-12-24 2021-04-16 山东大学 基于Spark的校园卡租借行为检测方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104899561A (zh) * 2015-05-27 2015-09-09 华南理工大学 一种并行化的人体行为识别方法
CN106250461A (zh) * 2016-07-28 2016-12-21 北京北信源软件股份有限公司 一种基于Spark框架利用梯度提升决策树进行数据挖掘的算法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104899561A (zh) * 2015-05-27 2015-09-09 华南理工大学 一种并行化的人体行为识别方法
CN106250461A (zh) * 2016-07-28 2016-12-21 北京北信源软件股份有限公司 一种基于Spark框架利用梯度提升决策树进行数据挖掘的算法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱继召等: "SparkCRF:一种基于Spark的并行CRFs算法实现", 《计算机研究与发展》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111274796A (zh) * 2018-12-04 2020-06-12 北京嘀嘀无限科技发展有限公司 向量获取方法、装置、电子设备以及计算机可读存储介质
CN111274796B (zh) * 2018-12-04 2023-04-07 北京嘀嘀无限科技发展有限公司 向量获取方法、装置、电子设备以及计算机可读存储介质
CN109597857A (zh) * 2018-12-06 2019-04-09 中电工业互联网有限公司 一种基于Spark的物联网大数据计算方法
CN110059004A (zh) * 2019-03-21 2019-07-26 深圳市腾讯信息技术有限公司 一种应用测试的方法、装置、设备和介质
CN110109923A (zh) * 2019-04-04 2019-08-09 北京市天元网络技术股份有限公司 时序数据的存储方法、分析方法及装置
CN110109923B (zh) * 2019-04-04 2021-07-06 北京市天元网络技术股份有限公司 时序数据的存储方法、分析方法及装置
CN110297714A (zh) * 2019-06-19 2019-10-01 上海冰鉴信息科技有限公司 基于大规模图数据集获取PageRank的方法及装置
CN110297714B (zh) * 2019-06-19 2023-05-30 上海冰鉴信息科技有限公司 基于大规模图数据集获取PageRank的方法及装置
CN110580203A (zh) * 2019-08-19 2019-12-17 武汉长江通信智联技术有限公司 一种基于弹性分布式数据集的数据处理方法、装置及系统
CN112615773A (zh) * 2020-12-02 2021-04-06 海南车智易通信息技术有限公司 一种消息处理方法及系统
CN112615773B (zh) * 2020-12-02 2023-02-28 海南车智易通信息技术有限公司 一种消息处理方法及系统
CN112667709A (zh) * 2020-12-24 2021-04-16 山东大学 基于Spark的校园卡租借行为检测方法及系统

Also Published As

Publication number Publication date
CN108921188B (zh) 2020-11-17

Similar Documents

Publication Publication Date Title
CN108921188A (zh) 一种基于Spark大数据平台的并行CRF算法
CN110276367B (zh) 学习分类装置和学习分类方法
CN106874478A (zh) 基于Spark的并行化随机标签子集多标签文本分类方法
CN105550374A (zh) Spark云服务环境下面向大数据的随机森林并行机器学习方法
CN105184368B (zh) 一种分布式极限学习机优化集成框架方法系统及方法
CN103488662A (zh) 基于图形处理单元的自组织映射神经网络聚类方法及系统
JP7087825B2 (ja) 学習装置および学習方法
CN109376261B (zh) 基于中级文本语义增强空间的模态独立检索方法和系统
CN110728313B (zh) 一种用于意图分类识别的分类模型训练方法及装置
CN111695693B (zh) 学习装置及学习方法
CN110188812A (zh) 一种快速处理缺失异构数据的多核聚类方法
CN116644755B (zh) 基于多任务学习的少样本命名实体识别方法、装置及介质
JP2019212243A (ja) 学習識別装置および学習識別方法
US20200143284A1 (en) Learning device and learning method
CN109285589A (zh) 一种基于Spark大数据平台的铝电解过热度预测方法
TW202217597A (zh) 圖像的增量聚類方法、電子設備、電腦儲存介質
CN116502683A (zh) 一种全流程并行加速脑仿真方法及系统
Ren et al. Self-paced multi-task multi-view capped-norm clustering
Zhang et al. Improve generated adversarial imitation learning with reward variance regularization
CN114463596A (zh) 一种超图神经网络的小样本图像识别方法、装置及设备
CN109685103A (zh) 一种基于广义k均值算法的文本多标记学习方法
CN114121296B (zh) 基于数据驱动的临床信息规则提取方法、存储介质及设备
CN106055543B (zh) 基于Spark的大规模短语翻译模型的训练方法
JP2020077070A (ja) 学習装置および学習方法
CN115270921A (zh) 基于组合预测模型的电力负载预测方法、系统及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant