首页> 中国专利> 基于Spark的大规模短语翻译模型的训练方法

基于Spark的大规模短语翻译模型的训练方法

摘要

本发明公开了一种基于Spark的大规模短语翻译模型的训练方法,包括以下步骤:首先采取Spark分布式地调用单机多线程词对齐训练工具MGIZA++的模式,在大规模平行语料库中使用期望最大化算法进行词对齐模型的迭代训练,生成带有词对齐信息的平行语料库;接着使用上一步生成的带有词对齐信息的双语语料数据,在Spark平台上实现了短语翻译模型的并行化训练,最终得到短语表。本发明提出了一种基于Spark的大规模翻译模型的训练方法,解决了现有翻译系统在翻译模型训练中耗时较长、数据扩展性不佳的问题。

著录项

  • 公开/公告号CN106055543A

    专利类型发明专利

  • 公开/公告日2016-10-26

    原文格式PDF

  • 申请/专利权人 南京大学;

    申请/专利号CN201610346396.4

  • 申请日2016-05-23

  • 分类号G06F17/28;G06F17/30;G06K9/62;

  • 代理机构苏州威世朋知识产权代理事务所(普通合伙);

  • 代理人杨林洁

  • 地址 210093 江苏省南京市汉口路22号

  • 入库时间 2023-06-19 00:43:59

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-04-09

    授权

    授权

  • 2016-11-23

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

    实质审查的生效

  • 2016-10-26

    公开

    公开

说明书

技术领域

本发明属于计算机统计机器翻译和并行计算领域,具体是一种基于Spark的大规模短语翻译模型的训练方法。

背景技术

统计机器翻译自上世纪90年代以来发展十分迅速,取得了很大的进步,逐渐成为机器翻译领域中的研究热点。相对于基于规则的机器翻译系统,统计方法的最大优点在于无需人工编写规则,可以利用语料库直接通过训练得到机器翻译系统。而基于短语或层次短语的统计机器翻译系统可以更好地把握局部上下文的依赖关系,在性能上优于基于词的统计机器翻译方法;相对于基于句法的统计机器翻译,又具有很好的通用性,且搜索空间比较小。

基于短语的统计机器翻译系统的工作过程如下:输入待翻译的句子S,将之切分为n个短语,即S=s1,s2,……sn,接着将每个源短语si翻译成目标语言短语ti,生成目标语言句子T=t1,t2,……tn,最后在所有可能的候选翻译中找出概率最高的句子。与很多其他自然语言处理应用一样,统计翻译系统的翻译质量通常与语料库的大小成正比,即语料库越大,翻译质量越好。然而随着语料库规模的日益增长,传统的基于单机的机器翻译系统越来越难以应对大数据量所导致的计算和存储压力。经典的机器翻译单机训练工具Moses采取了一系列优化措施,如使用诸如前缀树等高效的数据结构减小内存开销,使用外部排序技术来处理计算短语翻译概率是数据规模超出内存上界的情况,使用MGIZA++代替GIZA++进行词对齐训练(MGIZA++在GIZA++的基础上运行多线程技术来加速词对齐模型的训练)。然而,在一台多核的商业机器上,使用Moses在一个百万级别的大规模双语库上训练词对齐模型和翻译模型,仍然需要一周以上的时间。因此,传统的基于单机的方法受限于软硬件资源的不足,已经难以有效应对大规模翻译模型的训练需要。

发明内容

发明目的:针对统计机器翻译中单机的方法受限于软硬件资源的不足,已经难以有效应对大规模翻译模型的训练需要。本发明基于现有的Spark分布式计算框架,该方法使用户可以在交互式或者批处理环境中进行高效的大规模的分布式并行计算,而无需了解底层的并行计算的具体实现细节,解决了现有的大数据处理平台对分布式矩阵运算的性能低,扩展性不好,接口不丰富的问题。

为了实现上述发明目的,本发明的技术方案是:一种基于Spark的大规模短语翻译模型的训练方法,在Spark平台上给定平行语料库,采用分布式调用单机多线程工具MGIZA++的模式进行词对齐训练,进而得到词对齐信息,进行分布式短语翻译模型的训练,包括以下步骤:

(1)利用Spark作为分布式计算执行引擎,使用期望最大化算法总体框架构建大规模词对齐模型,在每个计算节点维护一个Spark的Java虚拟机进程运行时,同时安装单机词对齐训练工具MGIZA++,以便在进行词对齐模型训练时调用;

(2)设置词对齐训练参数,对平行语料库进行分区,使用期望最大化算法对词对齐模型进行迭代训练直到达到指定次数,一般为每个模型迭代3到5次,然后根据训练结果得到语料库的词对齐信息;

(3)使用步骤(2)中输出的带词对齐信息的平行语料库作为输入,进行短语翻译模型的分布式训练,得到短语表。

进一步地,所述步骤(2)的过程具体如下:

1)首先对语料库中的对源语言和目标语言构建词典并编号;使用broadcast将词典分发到每个计算节点,完成语料库编码;对编码后的平行语料库进行分区,采用均匀分割的方式,分成N块数据分区,其中N设为集群中计算节点的数量。

2)设置词对齐模型的训练序列,分别指定IBM模型一、HMM模型、IBM模型三、IBM模型四的迭代次数,例如“1*1*1*H*H*H*3*3*3*4*4*4*”(“1”表示模型一训练,“H”表示HMM模型训练,“3”表示模型三训练,“4”表示模型四训练,“*”表示归一化更新参数);分析词对齐模型的训练序列,为每一次的模型迭代执行一次步骤3)和4),得到最终的模型参数。

3)为每个节点上的数据分区分别调用MGIZA++进行期望最大化算法中E-Step的训练,在每个计算节点维护一个Spark的Java虚拟机进程运行时,每个分区通过Java虚拟机进程直接调用MGIZA++进行词对齐训练,并将训练得到的部分计数写入到HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)中。具体过程包括:为每个数据分区构建执行说明书;依次使用parallelize操作、mapPartitionsWithIndex操作以及partitionBy操作,得到一个存储执行说明书的RDD(Resilient Distributed Dataset,弹性分布式数据集),其中各个分区的执行说明书均匀分配给各个计算节点;使用foreachPartition操作分别为每个数据分区调用MGIZA++进行E-Step的训练,训练前首先将执行说明书反序列化,接着根据执行说明书从HDFS中读取输入文件、运行MGIZA++、将输出文件写入HDFS中。

4)从HDFS中读取训练得到的部分计数文件,进行期望最大化算法中的M-Step,对为不同类型的部分计数文件进行最大似然估计,得到新一轮的模型参数,然后将模型参数写入到HDFS中。

5)以步骤2)作为输入,根据最终的模型参数为平行语料库中的每个句对生成最优词对齐,得到带有词对齐信息的平行语料库。

进一步地,所述步骤(3)的过程具体如下:

1)读取步骤(2)中得到的带有词对齐信息的平行语料库,对语料库中每个句对进行词对统计,然后使用最大似然估计方法估计正向和方向的词翻译概率,最终分别得到正向的和反向的词翻译概率表。

2)对平行语料库每个句对进行短语抽取,得到未聚合的短语数据集,数据格式形如(src|||trg|||align,1),其中“src”指源语言短语,“trg”指对应的目标语言短语,“align”为源语言短语和目标语言短语的词对齐关系,“1”表示该短语出现1次,“|||”是间隔符。对每个句对进行抽取短语时首先根据词对齐的句对构建词对齐矩阵,然后根据选定的短语长度,按照特定的匹配策略(一个短语对要满足至少由一个词对齐存在于两个短语之间,并且两个短语之间的所有词对齐不能超过两个短语的范围)搜索符合条件的短语。

3)以步骤2)为输入,使用两阶段聚合操作完成短语聚合操作。具体过程如下:第一步进行第一阶段聚合,使用Spark中的reduceByKey操作将所有具有相同源语言短语、目标语言短语且词对齐关系一致的短语对进行合并,并统计出现次数,得到如下键值对(src|||trg|||align,count),其中count为短语集中词对齐为align的短语对src|||trg出现的总次数;第二步对前面得到的每个键值对进行一次map操作,将上一步得到的键值对映射成(src|||trg,align|||count|||count);第四步使用reduceByKey操作中将具有不同词对齐关系的相同短语对进行两两合并,得到新的键值对(src|||trg,align|||maxCount|||totalCount),用totalCount记录两个词对齐关系出现次数的和,用maxCount记录两者中词对齐关系出现次数多的一方的次数,用align记录出现次数多的词对齐关系,依次比较最终得到出现次数最多的词对齐关系align,并同时得到该短语对出现次数的总和totalCount。

4)估计短语翻译概率,通过最大似然估计方法进行估计,正向和反向概率的计算公式分别如下:

p(f|e)=count(f,e)Σfcount(f,e)

p(e|f)=count(f,e)Σecount(f,e)

其中指源语言短语,是目标语言短语,表示整个语料库抽取的短语集中与对齐的次数。

5)词汇化翻译概率计算。给定一个双语短语对以及短语间的词对齐关系a。a表示源语言短语的词位置i=1,2,3,…,I到目标语言短语的词位置j=1,2,3,…,J之间的词对齐关系,fi表示短语中第i个位置的单词,ej表示中第j个位置的单词,w(fi|ej)和w(ej|fi)分别表示fi和ej的正向的词翻译概率和反向的词翻译概率。和分别表示正向词汇化翻译概率和反向词汇化翻译概率,双方向的词汇化翻译概率分别由如下公式计算:

pw(f|e,a)=Πi=1I1|{j|(i,j)a}|Σ(i,j)aw(fi|ej)

pw(e|f,a)=Πi=1I1|{j|(i,j)a}|Σ(i,j)aw(ej|fi)

为每个数据中的短语进行上述两个公式的计算,每个分区在计算前,先从HDFS中加载双方向的词翻译概率表(每个节点上只会加载一次参数,节点上的所有分区计算时共享访问参数),然后根据词汇化翻译概率的计算公式计算概率值并返回包括翻译单元、翻译概率以及词汇化翻译概率所有的信息,作为最终训练结果,最后将生成的参数翻译表写入到HDFS。

本发明的有益效果是:(1)通过分布式计算框架Spark对期望最大化算法框架进行并行化,从而方便进行词对齐训练任务。(2)在期望最大化算法E-Step时在每个计算节点调用MGIZA++进行当前节点上数据分区的训练,既可以利用Spark在数据并行化上的优势,提高计算并发度,又可以利用MGIZA++在单机节点上的多线程处理来提高并发度,加快训练过程,很好地解决了在传统的词对齐训练任务中仅使用MGIZA++在计算性能较差的情况,并且可以很好的进行扩展和容错。(3)在期望最大化算法M-Step通过把MGIZA++在每个节点上输出的部分计数文件写到HDFS中,通过分布式最大似然估计算法估计新一轮的模型参数,大大加快了M-Step的训练过程。(4)在得到包含词对齐信息的双语语料文件之后,进行分布式的短语模型的训练,在训练速度相比其他传统的单机短语翻译模型训练方法和现有的分布式短语翻译模型方法均有很大提升。(5)本发明在易用性优于其他的分布式短语翻译模型,传统的机器翻译人员只需要进行简单的陪置,减轻了用户在使用本发明时的学习成本。

附图说明

图1是本发明的整体框架图。

图2是本发明的整体流程图。

图3是词对齐模型的训练流程。

图4是Spark在每个计算节点调用MGIZA++的框架图。

图5是词翻译概率计算的RDD转换图。

图6是短语对抽取的流程。

图7短语对抽取和短语对聚合的RDD转换图。

图8是短语对聚合的应用示例。

图9是短语翻译概率计算过程中的RDD转换图。

图10是词汇化翻译概率计算过程中的RDD转换图。

具体实施方式:

下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

Spark是由是由UC Berkeley AMPLab实验室于2009年发布的分布式内存计算框架,随后在2013年贡献给Apache软件基金会,并与2014年2月份成为Apache顶级项目。RDD(Resilient Distributed Dataset)是Spark中的核心数据结构,它本质上是一种可以基于内存的弹性分布式数据集,允许用户将数据加载至内存后重复地使用,这样的设计适合计算密集型的机器学习算法和交互式查询算法。基于内存计算特点,与Hadoop MapReduce相比,Spark在迭代计算和交互式应用上的性能快10-100倍。用户可以在不了解分布式底层细节的情况下开发分布式程序,充分利用集群进行高速运算和存储。

Spark和HDFS为大数据处理工作提供了优秀的数据存储与运算平台,对于大规模训练语料下的词对齐模型的训练和翻译模型的训练,可以通过编写Spark分布式程序,充分利用多台计算结点来完成该项工作,从而缩短算法训练时间,极大地提高工作效率。

本发明的技术方案主要由两个软件模块和两个模型组成:两个软件中一个是分布式大数据处理系统Spark,另一是单机的词对齐训练工具MGIZA++;两个模型指的是词对齐模型和短语翻译模型。分布式大数据处理系统Spark是Apache基金会的一个开源系统(项目主页http://spark.apache.org/),这个软件不属于本发明内容。单机词对齐训练工具MGIZA++是一个经典的多线程词对齐训练工具,MGIZA++软件本身不属于本发明内容。整个系统框架如图1所示,系统架构图中最上面两层关于词对齐训练和短语翻译模型的训练方法属于该发明内容。

用户在本发明执行大规模短语翻译模型的训练流程如图2所示:用户通过交互式的方式或批处理的方式,指定输入的平行语料库数据;从HDFS中读入语料数据后,进行词对齐模型训练,得到带词对齐的平行语料库;然后以带词对齐的平行语料库作为输入,进行分布式短语翻译模型训练。进一步地,整个技术方案包括以下步骤:

(1)利用Spark作为分布式计算执行引擎,使用期望最大化算法总体框架构建大规模词对齐模型,在每个计算节点维护一个Spark的Java虚拟机进程运行时,同时安装单机词对齐训练工具MGIZA++,以便在进行词对齐模型训练时可以调用。

(2)设置词对齐训练参数,对平行语料库进行分区,使用期望最大化算法对词对齐模型进行迭代训练直到达到指定次数,然后根据训练结果得到语料库的词对齐信息,具体流程如图3所示。

(3)使用步骤(2)作为输入,进行短语翻译模型的分布式训练,得到短语表。

进一步地,所述步骤(2)的过程具体如下:

1)首先对语料库中的对源语言和目标语言构建词典并编号;使用broadcast将词典分发到每个计算节点,完成语料库编码;对编码后的平行语料库进行分区,采用均匀分割的方式,分成N块数据分区,其中N设为集群中计算节点的数量。

2)设置词对齐模型的训练序列,分别指定IBM模型一、HMM模型、IBM模型三、IBM模型四的迭代次数,例如“1*1*1*H*H*H*3*3*3*4*4*4*”(“1”表示模型一训练,“H”表示HMM模型训练,“3”表示模型三训练,“4”表示模型四训练,“*”表示归一化更新参数);分析词对齐模型的训练序列,为每一次的模型迭代执行一次步骤3)和4),得到最终的模型参数。

3)为每个节点上的数据分区分别调用MGIZA++进行期望最大化算法中E-Step的训练,在每个计算节点维护一个Spark的Java虚拟机进程运行时,每个分区通过Java虚拟机进程直接调用MGIZA++进行词对齐训练,并将训练得到的部分计数写入到HDFS中。具体过程包括:为每个数据分区构建执行说明书;依次使用parallelize操作、mapPartitionsWithIndex操作以及partitionBy操作,得到一个存储执行说明书的RDD,其中各个分区的执行说明书均匀分配给各个计算节点;使用foreachPartition操作分别为每个数据分区调用MGIZA++进行E-Step的训练,训练前首先将执行说明书反序列化,接着根据执行说明书从HDFS中读取输入文件、运行MGIZA++、将输出文件写入HDFS中。具体流程如图4所示。

4)从HDFS中读取训练得到的部分计数文件,进行期望最大化算法中的M-Step,对为不同类型的部分计数文件进行最大似然估计,得到新一轮的模型参数,然后将模型参数写入到HDFS中。

5)以步骤2)作为输入,根据最终的模型参数为平行语料库中的每个句对生成最优词对齐,得到带有词对齐信息的平行语料库。

进一步地,所述步骤(3)的过程具体如下:

1)词翻译概率计算需要首先从平行语料库中获取词对计数,然后采用最大似然估计方法估计双方向的概率。整个词翻译概率的计算RDD转换的流程如图5所示。

2)短语抽取与聚合。如图6所示,对单个句对进行短语抽取的整个流程包括如下步骤:首先根据词对齐的句对构建词对齐矩阵,然后根据选定的短语长度,按照特定的匹配策略(一个短语对要满足至少由一个词对齐存在于两个短语之间,并且两个短语之间的所有词对齐不能超过两个短语的范围)搜索符合条件的短语。本发明使用flatMap算子对语料库中每个句对进行并行训练,得到未聚合的短语组成的RDD。在短语翻译模型中,短语对是由互为翻译的m个连续的源语言单词和n个连续的目标语言单词组成的结构,与语言学范畴的短语定义无关。例如,“生活水平|||livelihood|||0-01-0”是从上文的示例句对中抽取出来的由2个连续的中文词和1个英文词构成的短语对。

短语抽取结束后,需要对相同的短语进行聚合。图7中给出了从短语对抽取到短语聚合的整个过程的RDD转换图,短语对聚合的具体步骤为在第1步抽取短语并为抽取出来的每个短语对生成一条key/value结构的记录形如(src|||trg|||align,1),其中src指源语言短语,trg指对应的目标语言短语,align为源语言短语和目标语言短语的词对齐关系;然后第2步进行第一阶段聚合,使用Spark中的reduceByKey操作将所有具有相同源语言短语、目标语言短语且词对齐关系一致的短语对进行合并,并统计出现次数,得到如下键值对(src|||trg|||align,count);第三步对前面得到的每个键值对进行一次map操作,将上一步得到的键值对映射成(src|||trg,align|||count|||count);第四步使用reduceByKey操作中将具有不同词对齐关系的相同短语对进行两两合并,得到新的键值对(src|||trg,align|||maxCount|||totalCount),用totalCount记录两个词对齐关系出现次数的和,用maxCount记录两者中词对齐关系出现次数多的一方的次数,用align记录出现次数多的词对齐关系,依次比较最终得到出现次数最多的词对齐关系align,并同时得到该短语对出现次数的总和totalCount。图8是本发明中采用短语对聚合方法的应用示例。

3)翻译概率估计。短语抽取和聚合完成后,短语翻译概率可以通过最大似然估计进行参数估计。图9中所示短语翻译概率计算的RDD转换图,短语翻译中分从源语言到目标语言和从目标语言到源语言两种,因此计算过程中需要用到两次最大似然估计。

4)词汇化翻译概率计算。图10词汇化翻译概率计算过程中的RDD转换图,使用mapPartition操作为每个分区的短语计算词汇化翻译概率,每个分区在计算前,先从HDFS中加载词翻译概率表(通过静态变量和加锁机制实现一个计算节点上只加载一次参数,供所有分区计算任务共享访问),然后使用map根据词汇化翻译概率的计算公式计算概率值并返回包括翻译单元、翻译概率以及词汇化翻译概率所有的信息,作为最终训练结果,最后将生成的参数翻译表写入到HDFS中。

至此我们便完成了短语翻译模型的训练,为了具体衡量本发明的优势,我们选择Chaski(参阅Training phrase-based machine translation models on the cloud:Open source machine translation toolkit chaski[J],The Prague Bulletin of Mathematical Linguistics,2010,93:37–46)作为基准进行对比,Chaski是基于Hadoop框架构造的翻译模型训练工具,实验中采用相同的物理环境和实验数据,首先指定训练序列为“1*1*1*1*1*H*H*H*H*H*3*3*3*4*4*4”,得到词对齐训练时间的对比结果如表1所示:

表1Chaski与本发明中词对齐训练时间的比较

接着,为测量本法短语翻译模型训练算法的性能,我们与Chaski中的短语翻译模型训练算法进行对比,设置源语言短语和目标语言短语的最大长度都为5,执行时间如下表2所示:

表2Chaski与本发明中短语翻译模型训练时间的比较

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号