基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法
【專利摘要】本發(fā)明公開了一種基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法,包括以下步驟:首先采取Spark分布式地調(diào)用單機多線程詞對齊訓(xùn)練工具MGIZA++的模式,在大規(guī)模平行語料庫中使用期望最大化算法進行詞對齊模型的迭代訓(xùn)練,生成帶有詞對齊信息的平行語料庫;接著使用上一步生成的帶有詞對齊信息的雙語語料數(shù)據(jù),在Spark平臺上實現(xiàn)了短語翻譯模型的并行化訓(xùn)練,最終得到短語表。本發(fā)明提出了一種基于Spark的大規(guī)模翻譯模型的訓(xùn)練方法,解決了現(xiàn)有翻譯系統(tǒng)在翻譯模型訓(xùn)練中耗時較長、數(shù)據(jù)擴展性不佳的問題。
【專利說明】
基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于計算機統(tǒng)計機器翻譯和并行計算領(lǐng)域,具體是一種基于Spark的大規(guī) 模短語翻譯模型的訓(xùn)練方法。
【背景技術(shù)】
[0002] 統(tǒng)計機器翻譯自上世紀90年代以來發(fā)展十分迅速,取得了很大的進步,逐漸成為 機器翻譯領(lǐng)域中的研究熱點。相對于基于規(guī)則的機器翻譯系統(tǒng),統(tǒng)計方法的最大優(yōu)點在于 無需人工編寫規(guī)則,可以利用語料庫直接通過訓(xùn)練得到機器翻譯系統(tǒng)。而基于短語或?qū)哟?短語的統(tǒng)計機器翻譯系統(tǒng)可以更好地把握局部上下文的依賴關(guān)系,在性能上優(yōu)于基于詞的 統(tǒng)計機器翻譯方法;相對于基于句法的統(tǒng)計機器翻譯,又具有很好的通用性,且搜索空間比 較小。
[0003] 基于短語的統(tǒng)計機器翻譯系統(tǒng)的工作過程如下:輸入待翻譯的句子S,將之切分為 n個短語,即S = S1,s2,……sn,接著將每個源短語Sl翻譯成目標語言短語h,生成目標語言句 子Tit^ts,……t n,最后在所有可能的候選翻譯中找出概率最高的句子。與很多其他自然 語言處理應(yīng)用一樣,統(tǒng)計翻譯系統(tǒng)的翻譯質(zhì)量通常與語料庫的大小成正比,即語料庫越大, 翻譯質(zhì)量越好。然而隨著語料庫規(guī)模的日益增長,傳統(tǒng)的基于單機的機器翻譯系統(tǒng)越來越 難以應(yīng)對大數(shù)據(jù)量所導(dǎo)致的計算和存儲壓力。經(jīng)典的機器翻譯單機訓(xùn)練工具Moses采取了 一系列優(yōu)化措施,如使用諸如前綴樹等高效的數(shù)據(jù)結(jié)構(gòu)減小內(nèi)存開銷,使用外部排序技術(shù) 來處理計算短語翻譯概率是數(shù)據(jù)規(guī)模超出內(nèi)存上界的情況,使用MGIZA++代替GIZA++進行 詞對齊訓(xùn)練(MGIZA++在GIZA++的基礎(chǔ)上運行多線程技術(shù)來加速詞對齊模型的訓(xùn)練)。然而, 在一臺多核的商業(yè)機器上,使用Moses在一個百萬級別的大規(guī)模雙語庫上訓(xùn)練詞對齊模型 和翻譯模型,仍然需要一周以上的時間。因此,傳統(tǒng)的基于單機的方法受限于軟硬件資源的 不足,已經(jīng)難以有效應(yīng)對大規(guī)模翻譯模型的訓(xùn)練需要。
【發(fā)明內(nèi)容】
[0004] 發(fā)明目的:針對統(tǒng)計機器翻譯中單機的方法受限于軟硬件資源的不足,已經(jīng)難以 有效應(yīng)對大規(guī)模翻譯模型的訓(xùn)練需要。本發(fā)明基于現(xiàn)有的Spark分布式計算框架,該方法使 用戶可以在交互式或者批處理環(huán)境中進行高效的大規(guī)模的分布式并行計算,而無需了解底 層的并行計算的具體實現(xiàn)細節(jié),解決了現(xiàn)有的大數(shù)據(jù)處理平臺對分布式矩陣運算的性能 低,擴展性不好,接口不豐富的問題。
[0005] 為了實現(xiàn)上述發(fā)明目的,本發(fā)明的技術(shù)方案是:一種基于Spark的大規(guī)模短語翻譯 模型的訓(xùn)練方法,在Spark平臺上給定平行語料庫,采用分布式調(diào)用單機多線程工具MGIZA+ +的模式進行詞對齊訓(xùn)練,進而得到詞對齊信息,進行分布式短語翻譯模型的訓(xùn)練,包括以 下步驟:
[0006] (1)利用Spark作為分布式計算執(zhí)行引擎,使用期望最大化算法總體框架構(gòu)建大規(guī) 模詞對齊模型,在每個計算節(jié)點維護一個Spark的Java虛擬機進程運行時,同時安裝單機詞 對齊訓(xùn)練工具MGIZA++,以便在進行詞對齊模型訓(xùn)練時調(diào)用;
[0007] (2)設(shè)置詞對齊訓(xùn)練參數(shù),對平行語料庫進行分區(qū),使用期望最大化算法對詞對齊 模型進行迭代訓(xùn)練直到達到指定次數(shù),一般為每個模型迭代3到5次,然后根據(jù)訓(xùn)練結(jié)果得 到語料庫的詞對齊信息;
[0008] (3)使用步驟(2)中輸出的帶詞對齊信息的平行語料庫作為輸入,進行短語翻譯模 型的分布式訓(xùn)練,得到短語表。
[0009] 進一步地,所述步驟(2)的過程具體如下:
[0010] 1)首先對語料庫中的對源語言和目標語言構(gòu)建詞典并編號;使用broadcast將詞 典分發(fā)到每個計算節(jié)點,完成語料庫編碼;對編碼后的平行語料庫進行分區(qū),采用均勻分割 的方式,分成N塊數(shù)據(jù)分區(qū),其中N設(shè)為集群中計算節(jié)點的數(shù)量。
[0011] 2)設(shè)置詞對齊模型的訓(xùn)練序列,分別指定IBM模型一、HMM模型、IBM模型三、IBM模 型四的迭代次數(shù),例如"1*1*1*H*H*H*3*3*3*4*4*4*"( "1"表示模型一訓(xùn)練,"H"表示HMM模 型訓(xùn)練,"3"表示模型三訓(xùn)練,"4"表示模型四訓(xùn)練,表示歸一化更新參數(shù));分析詞對齊 模型的訓(xùn)練序列,為每一次的模型迭代執(zhí)行一次步驟3)和4),得到最終的模型參數(shù)。
[0012] 3)為每個節(jié)點上的數(shù)據(jù)分區(qū)分別調(diào)用MGIZA++進行期望最大化算法中E-Step的訓(xùn) 練,在每個計算節(jié)點維護一個Spark的Java虛擬機進程運行時,每個分區(qū)通過Java虛擬機進 程直接調(diào)用MGIZA++進行詞對齊訓(xùn)練,并將訓(xùn)練得到的部分計數(shù)寫入到HDFS(Had〇〇p Distributed File System,Hadoop分布式文件系統(tǒng))中。具體過程包括:為每個數(shù)據(jù)分區(qū)構(gòu) 建執(zhí)行說明書;依次使用parallelize操作、mapPartitionsWithlndex操作以及 partitionBy操作,得到一個存儲執(zhí)行說明書的RDD(Resilient Distributed Dataset,彈 性分布式數(shù)據(jù)集),其中各個分區(qū)的執(zhí)行說明書均勻分配給各個計算節(jié)點;使用 ;^^3〇11?31'1:;[1:;[011操作分別為每個數(shù)據(jù)分區(qū)調(diào)用1?}124++進行£-3丨6口的訓(xùn)練,訓(xùn)練前首先 將執(zhí)行說明書反序列化,接著根據(jù)執(zhí)行說明書從HDFS中讀取輸入文件、運行MGIZA++、將輸 出文件寫入HDFS中。
[0013] 4)從HDFS中讀取訓(xùn)練得到的部分計數(shù)文件,進行期望最大化算法中的M-Step,對 為不同類型的部分計數(shù)文件進行最大似然估計,得到新一輪的模型參數(shù),然后將模型參數(shù) 寫入到HDFS中。
[0014] 5)以步驟2)作為輸入,根據(jù)最終的模型參數(shù)為平行語料庫中的每個句對生成最優(yōu) 詞對齊,得到帶有詞對齊信息的平行語料庫。
[0015] 進一步地,所述步驟(3)的過程具體如下:
[0016] 1)讀取步驟(2)中得到的帶有詞對齊信息的平行語料庫,對語料庫中每個句對進 行詞對統(tǒng)計,然后使用最大似然估計方法估計正向和方向的詞翻譯概率,最終分別得到正 向的和反向的詞翻譯概率表。
[0017] 2)對平行語料庫每個句對進行短語抽取,得到未聚合的短語數(shù)據(jù)集,數(shù)據(jù)格式形 如(src| | |trg| | |align,l),其中"src"指源語言短語,"trg"指對應(yīng)的目標語言短語, "align"為源語言短語和目標語言短語的詞對齊關(guān)系,"1"表示該短語出現(xiàn)1次,"| | |"是間 隔符。對每個句對進行抽取短語時首先根據(jù)詞對齊的句對構(gòu)建詞對齊矩陣,然后根據(jù)選定 的短語長度,按照特定的匹配策略(一個短語對要滿足至少由一個詞對齊存在于兩個短語 之間,并且兩個短語之間的所有詞對齊不能超過兩個短語的范圍)搜索符合條件的短語。
[0018] 3)以步驟2)為輸入,使用兩階段聚合操作完成短語聚合操作。具體過程如下:第一 步進行第一階段聚合,使用Spark中的reduceByKey操作將所有具有相同源語言短語、目標 語言短語且詞對齊關(guān)系一致的短語對進行合并,并統(tǒng)計出現(xiàn)次數(shù),得到如下鍵值對(src| | trg| | |align,count),其中count為短語集中詞對齊為align的短語對src| | |trg出現(xiàn)的總 次數(shù);第二步對前面得到的每個鍵值對進行一次map操作,將上一步得到的鍵值對映射成 (src| | |trg,align| | |count| | |count);第四步使用reduceByKey操作中將具有不同詞對齊 關(guān)系的相同短語對進行兩兩合并,得到新的鍵值對(src| | |trg,align| | |maxCount| | totalCount),用totalCount記錄兩個詞對齊關(guān)系出現(xiàn)次數(shù)的和,用maxCount記錄兩者中詞 對齊關(guān)系出現(xiàn)次數(shù)多的一方的次數(shù),用align記錄出現(xiàn)次數(shù)多的詞對齊關(guān)系,依次比較最終 得到出現(xiàn)次數(shù)最多的詞對齊關(guān)系align,并同時得到該短語對出現(xiàn)次數(shù)的總和totalCount。
[0019] 4)估計短語翻譯概率,通過最大似然估計方法進行估計,正向和反向概率的計算 公式分別如下:
[0022] 其中f指源語言短語4是目標語言短語,count(/_,e_)表示整個語料庫抽取的短語 集中f與5對齊的次數(shù)。
[0023] 5)詞匯化翻譯概率計算。給定一個雙語短語對廠3以及短語間的詞對齊關(guān)系表 示源語言短語的詞位置i = l,2,3,…,I到目標語言短語的詞位置j = l,2,3,…,J之間的詞 對齊關(guān)系,心表示短語f中第i個位置的單詞,幻表示6_中第j個位置的單詞,《(心|幻)和w( ej h)分別表示匕和幻的正向的詞翻譯概率和反向的詞翻譯概率。plv(/|e_,a)和pvv_(e-|/ _,a)分別 表示正向詞匯化翻譯概率和反向詞匯化翻譯概率,雙方向的詞匯化翻譯概率分別由如下公 式計算:
[0026]為每個數(shù)據(jù)中的短語進行上述兩個公式的計算,每個分區(qū)在計算前,先從HDFS中 加載雙方向的詞翻譯概率表(每個節(jié)點上只會加載一次參數(shù),節(jié)點上的所有分區(qū)計算時共 享訪問參數(shù)),然后根據(jù)詞匯化翻譯概率的計算公式計算概率值并返回包括翻譯單元、翻譯 概率以及詞匯化翻譯概率所有的信息,作為最終訓(xùn)練結(jié)果,最后將生成的參數(shù)翻譯表寫入 到HDFS。
[0027]本發(fā)明的有益效果是:(1)通過分布式計算框架Spark對期望最大化算法框架進行 并行化,從而方便進行詞對齊訓(xùn)練任務(wù)。(2)在期望最大化算法E-Step時在每個計算節(jié)點調(diào) 用MGIZA++進行當前節(jié)點上數(shù)據(jù)分區(qū)的訓(xùn)練,既可以利用Spark在數(shù)據(jù)并行化上的優(yōu)勢,提 高計算并發(fā)度,又可以利用MGIZA++在單機節(jié)點上的多線程處理來提高并發(fā)度,加快訓(xùn)練過 程,很好地解決了在傳統(tǒng)的詞對齊訓(xùn)練任務(wù)中僅使用MGIZA++在計算性能較差的情況,并且 可以很好的進行擴展和容錯。(3)在期望最大化算法M-Step通過把MGIZA++在每個節(jié)點上輸 出的部分計數(shù)文件寫到HDFS中,通過分布式最大似然估計算法估計新一輪的模型參數(shù),大 大加快了M-Step的訓(xùn)練過程。(4)在得到包含詞對齊信息的雙語語料文件之后,進行分布式 的短語模型的訓(xùn)練,在訓(xùn)練速度相比其他傳統(tǒng)的單機短語翻譯模型訓(xùn)練方法和現(xiàn)有的分布 式短語翻譯模型方法均有很大提升。(5)本發(fā)明在易用性優(yōu)于其他的分布式短語翻譯模型, 傳統(tǒng)的機器翻譯人員只需要進行簡單的陪置,減輕了用戶在使用本發(fā)明時的學(xué)習成本。
【附圖說明】
[0028]圖1是本發(fā)明的整體框架圖。
[0029] 圖2是本發(fā)明的整體流程圖。
[0030] 圖3是詞對齊模型的訓(xùn)練流程。
[0031]圖4是Spark在每個計算節(jié)點調(diào)用MGIZA++的框架圖。
[0032]圖5是詞翻譯概率計算的RDD轉(zhuǎn)換圖。
[0033]圖6是短語對抽取的流程。
[0034]圖7短語對抽取和短語對聚合的RDD轉(zhuǎn)換圖。
[0035]圖8是短語對聚合的應(yīng)用示例。
[0036]圖9是短語翻譯概率計算過程中的RDD轉(zhuǎn)換圖。
[0037]圖10是詞匯化翻譯概率計算過程中的RDD轉(zhuǎn)換圖。
【具體實施方式】:
[0038] 下面結(jié)合附圖和具體實施例,進一步闡明本發(fā)明,應(yīng)理解這些實施例僅用于說明 本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對本發(fā)明的各 種等價形式的修改均落于本申請所附權(quán)利要求所限定的范圍。
[0039] Spark是由是由UC Berkeley AMPLab實驗室于2009年發(fā)布的分布式內(nèi)存計算框 架,隨后在2013年貢獻給Apache軟件基金會,并與2014年2月份成為Apache頂級項目。RDD (Resilient Distributed Dataset)是Spark中的核心數(shù)據(jù)結(jié)構(gòu),它本質(zhì)上是一種可以基于 內(nèi)存的彈性分布式數(shù)據(jù)集,允許用戶將數(shù)據(jù)加載至內(nèi)存后重復(fù)地使用,這樣的設(shè)計適合計 算密集型的機器學(xué)習算法和交互式查詢算法。基于內(nèi)存計算特點,與Hadoop MapReduce相 比,Spark在迭代計算和交互式應(yīng)用上的性能快10-100倍。用戶可以在不了解分布式底層細 節(jié)的情況下開發(fā)分布式程序,充分利用集群進行高速運算和存儲。
[0040] Spark和HDFS為大數(shù)據(jù)處理工作提供了優(yōu)秀的數(shù)據(jù)存儲與運算平臺,對于大規(guī)模 訓(xùn)練語料下的詞對齊模型的訓(xùn)練和翻譯模型的訓(xùn)練,可以通過編寫Spark分布式程序,充分 利用多臺計算結(jié)點來完成該項工作,從而縮短算法訓(xùn)練時間,極大地提高工作效率。
[0041] 本發(fā)明的技術(shù)方案主要由兩個軟件模塊和兩個模型組成:兩個軟件中一個是分布 式大數(shù)據(jù)處理系統(tǒng)Spark,另一是單機的詞對齊訓(xùn)練工具MGIZA++;兩個模型指的是詞對齊 模型和短語翻譯模型。分布式大數(shù)據(jù)處理系統(tǒng)Spark是Apache基金會的一個開源系統(tǒng)(項目 主頁http : //spark. apache . org/ ),這個軟件不屬于本
【發(fā)明內(nèi)容】
。單機詞對齊訓(xùn)練工具 MGIZA++是一個經(jīng)典的多線程詞對齊訓(xùn)練工具,MGIZA++軟件本身不屬于本
【發(fā)明內(nèi)容】
。整個 系統(tǒng)框架如圖1所示,系統(tǒng)架構(gòu)圖中最上面兩層關(guān)于詞對齊訓(xùn)練和短語翻譯模型的訓(xùn)練方 法屬于該
【發(fā)明內(nèi)容】
。
[0042]用戶在本發(fā)明執(zhí)行大規(guī)模短語翻譯模型的訓(xùn)練流程如圖2所示:用戶通過交互式 的方式或批處理的方式,指定輸入的平行語料庫數(shù)據(jù);從HDFS中讀入語料數(shù)據(jù)后,進行詞對 齊模型訓(xùn)練,得到帶詞對齊的平行語料庫;然后以帶詞對齊的平行語料庫作為輸入,進行分 布式短語翻譯模型訓(xùn)練。進一步地,整個技術(shù)方案包括以下步驟:
[0043] (1)利用Spark作為分布式計算執(zhí)行引擎,使用期望最大化算法總體框架構(gòu)建大規(guī) 模詞對齊模型,在每個計算節(jié)點維護一個Spark的Java虛擬機進程運行時,同時安裝單機詞 對齊訓(xùn)練工具MGIZA++,以便在進行詞對齊模型訓(xùn)練時可以調(diào)用。
[0044] (2)設(shè)置詞對齊訓(xùn)練參數(shù),對平行語料庫進行分區(qū),使用期望最大化算法對詞對齊 模型進行迭代訓(xùn)練直到達到指定次數(shù),然后根據(jù)訓(xùn)練結(jié)果得到語料庫的詞對齊信息,具體 流程如圖3所示。
[0045] (3)使用步驟(2)作為輸入,進行短語翻譯模型的分布式訓(xùn)練,得到短語表。
[0046] 進一步地,所述步驟(2)的過程具體如下:
[0047] 1)首先對語料庫中的對源語言和目標語言構(gòu)建詞典并編號;使用broadcast將詞 典分發(fā)到每個計算節(jié)點,完成語料庫編碼;對編碼后的平行語料庫進行分區(qū),采用均勻分割 的方式,分成N塊數(shù)據(jù)分區(qū),其中N設(shè)為集群中計算節(jié)點的數(shù)量。
[0048] 2)設(shè)置詞對齊模型的訓(xùn)練序列,分別指定IBM模型一、HMM模型、IBM模型三、IBM模 型四的迭代次數(shù),例如"1*1*1*H*H*H*3*3*3*4*4*4*"( "1"表示模型一訓(xùn)練,"H"表示HMM模 型訓(xùn)練,"3"表示模型三訓(xùn)練,"4"表示模型四訓(xùn)練,表示歸一化更新參數(shù));分析詞對齊 模型的訓(xùn)練序列,為每一次的模型迭代執(zhí)行一次步驟3)和4),得到最終的模型參數(shù)。
[0049] 3)為每個節(jié)點上的數(shù)據(jù)分區(qū)分別調(diào)用MGIZA++進行期望最大化算法中E-Step的訓(xùn) 練,在每個計算節(jié)點維護一個Spark的Java虛擬機進程運行時,每個分區(qū)通過Java虛擬機進 程直接調(diào)用MGIZA++進行詞對齊訓(xùn)練,并將訓(xùn)練得到的部分計數(shù)寫入到HDFS中。具體過程包 括:為每個數(shù)據(jù)分區(qū)構(gòu)建執(zhí)行說明書;依次使用P a r a 1 1 e 1 i z e操作、 mapPartitionsWithlndex操作以及partitionBy操作,得到一個存儲執(zhí)行說明書的RDD,其 中各個分區(qū)的執(zhí)行說明書均勾分配給各個計算節(jié)點;使用for eachPart i t i on操作分別為每 個數(shù)據(jù)分區(qū)調(diào)用MGIZA++進行E-Step的訓(xùn)練,訓(xùn)練前首先將執(zhí)行說明書反序列化,接著根據(jù) 執(zhí)行說明書從HDFS中讀取輸入文件、運行MGIZA++、將輸出文件寫入HDFS中。具體流程如圖4 所示。
[0050] 4)從HDFS中讀取訓(xùn)練得到的部分計數(shù)文件,進行期望最大化算法中的M-Step,對 為不同類型的部分計數(shù)文件進行最大似然估計,得到新一輪的模型參數(shù),然后將模型參數(shù) 寫入到HDFS中。
[0051] 5)以步驟2)作為輸入,根據(jù)最終的模型參數(shù)為平行語料庫中的每個句對生成最優(yōu) 詞對齊,得到帶有詞對齊信息的平行語料庫。
[0052] 進一步地,所述步驟(3)的過程具體如下:
[0053] 1)詞翻譯概率計算需要首先從平行語料庫中獲取詞對計數(shù),然后采用最大似然估 計方法估計雙方向的概率。整個詞翻譯概率的計算RDD轉(zhuǎn)換的流程如圖5所示。
[0054] 2)短語抽取與聚合。如圖6所示,對單個句對進行短語抽取的整個流程包括如下步 驟:首先根據(jù)詞對齊的句對構(gòu)建詞對齊矩陣,然后根據(jù)選定的短語長度,按照特定的匹配策 略(一個短語對要滿足至少由一個詞對齊存在于兩個短語之間,并且兩個短語之間的所有 詞對齊不能超過兩個短語的范圍)搜索符合條件的短語。本發(fā)明使用flatMap算子對語料庫 中每個句對進行并行訓(xùn)練,得到未聚合的短語組成的RDD。在短語翻譯模型中,短語對是由 互為翻譯的m個連續(xù)的源語言單詞和n個連續(xù)的目標語言單詞組成的結(jié)構(gòu),與語言學(xué)范疇的 短語定義無關(guān)。例如,"生活水平I I |livelihood| | |〇-〇1-〇"是從上文的示例句對中抽取出 來的由2個連續(xù)的中文詞和1個英文詞構(gòu)成的短語對。
[0055] 短語抽取結(jié)束后,需要對相同的短語進行聚合。圖7中給出了從短語對抽取到短語 聚合的整個過程的RDD轉(zhuǎn)換圖,短語對聚合的具體步驟為在第1步抽取短語并為抽取出來的 每個短語對生成一條key/value結(jié)構(gòu)的記錄形如(src| | |trg| | |align,l),其中src指源語 言短語,trg指對應(yīng)的目標語言短語,align為源語言短語和目標語言短語的詞對齊關(guān)系;然 后第2步進行第一階段聚合,使用Spark中的reduceByKey操作將所有具有相同源語言短語、 目標語言短語且詞對齊關(guān)系一致的短語對進行合并,并統(tǒng)計出現(xiàn)次數(shù),得到如下鍵值對 (src| | |trg| | |align,count);第三步對前面得到的每個鍵值對進行一次map操作,將上一 步得到的鍵值對映射成(src| | |trg,align| | |count| | |count);第四步使用reduceByKey操 作中將具有不同詞對齊關(guān)系的相同短語對進行兩兩合并,得到新的鍵值對(src| | | trg, align| | |maxCount| | |totalCount),用totalCount記錄兩個詞對齊關(guān)系出現(xiàn)次數(shù)的和,用 maxCount記錄兩者中詞對齊關(guān)系出現(xiàn)次數(shù)多的一方的次數(shù),用al i gn記錄出現(xiàn)次數(shù)多的詞 對齊關(guān)系,依次比較最終得到出現(xiàn)次數(shù)最多的詞對齊關(guān)系align,并同時得到該短語對出現(xiàn) 次數(shù)的總和to ta 1 Count。圖8是本發(fā)明中采用短語對聚合方法的應(yīng)用示例。
[0056] 3)翻譯概率估計。短語抽取和聚合完成后,短語翻譯概率可以通過最大似然估計 進行參數(shù)估計。圖9中所示短語翻譯概率計算的RDD轉(zhuǎn)換圖,短語翻譯中分從源語言到目標 語言和從目標語言到源語言兩種,因此計算過程中需要用到兩次最大似然估計。
[0057] 4)詞匯化翻譯概率計算。圖10詞匯化翻譯概率計算過程中的RDD轉(zhuǎn)換圖,使用 11^口?31'1:;[1:;[011操作為每個分區(qū)的短語計算詞匯化翻譯概率,每個分區(qū)在計算前,先從110?3 中加載詞翻譯概率表(通過靜態(tài)變量和加鎖機制實現(xiàn)一個計算節(jié)點上只加載一次參數(shù),供 所有分區(qū)計算任務(wù)共享訪問),然后使用map根據(jù)詞匯化翻譯概率的計算公式計算概率值并 返回包括翻譯單元、翻譯概率以及詞匯化翻譯概率所有的信息,作為最終訓(xùn)練結(jié)果,最后將 生成的參數(shù)翻譯表寫入到HDFS中。
[0058] 至此我們便完成了短語翻譯模型的訓(xùn)練,為了具體衡量本發(fā)明的優(yōu)勢,我們選擇 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框 架構(gòu)造的翻譯模型訓(xùn)練工具,實驗中采用相同的物理環(huán)境和實驗數(shù)據(jù),首先指定訓(xùn)練序列 為"1*1*1*1*1*H*H*H*H*H*3*3*3*4*4*4",得到詞對齊訓(xùn)練時間的對比結(jié)果如表1所示:
[0059] 表1Chaski與本發(fā)明中詞對齊訓(xùn)練時間的比較
[0061 ]接著,為測量本法短語翻譯模型訓(xùn)練算法的性能,我們與Chaski中的短語翻譯模 型訓(xùn)練算法進行對比,設(shè)置源語言短語和目標語言短語的最大長度都為5,執(zhí)行時間如下表 2所示:
[0062]表2Chaski與本發(fā)明中短語翻譯模型訓(xùn)練時間的比較
【主權(quán)項】
1. 一種基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法,其特征在于在Spark平臺上給定 平行語料庫,采用分布式調(diào)用單機多線程工具MGIZA++的模式進行詞對齊訓(xùn)練,進而得到詞 對齊信息,進行分布式短語翻譯模型的訓(xùn)練,包括以下步驟: (1) 利用Spark作為分布式計算執(zhí)行引擎,使用期望最大化算法總體框架構(gòu)建大規(guī)模詞 對齊模型,在每個計算節(jié)點維護一個Spark的Java虛擬機進程運行時,同時安裝單機詞對齊 訓(xùn)練工具MGIZA++,以便在進行詞對齊模型訓(xùn)練時調(diào)用; (2) 設(shè)置詞對齊訓(xùn)練參數(shù),對平行語料庫進行分區(qū),使用期望最大化算法對詞對齊模型 進行迭代訓(xùn)練直到達到指定次數(shù),然后根據(jù)訓(xùn)練結(jié)果得到語料庫的詞對齊信息; (3) 使用帶有詞對齊信息的平行語料庫作為輸入,進行短語翻譯模型的分布式訓(xùn)練,得 到短語表。2. 根據(jù)權(quán)利要求1所述的基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法,其特征是:所 述步驟(2)中包含以下步驟: 1) 首先對語料庫中的對源語言和目標語言構(gòu)建詞典并編號;使用broadcast將詞典分 發(fā)到每個計算節(jié)點,完成語料庫編碼;對編碼后的平行語料庫進行分區(qū),采用均勻分割的方 式,分成N塊數(shù)據(jù)分區(qū),其中N設(shè)為集群中計算節(jié)點的數(shù)量; 2) 設(shè)置詞對齊模型的訓(xùn)練序列,指定模型訓(xùn)練的順序和相應(yīng)的迭代次數(shù);分析詞對齊 模型的訓(xùn)練序列,為每一次的模型迭代執(zhí)行一次步驟3)和4),得到最終的模型參數(shù); 3) 為每個節(jié)點上的數(shù)據(jù)分區(qū)分別調(diào)用MGIZA++進行期望最大化算法中E-Step的訓(xùn)練, 在每個計算節(jié)點維護一個Spark的Java虛擬機進程運行時,每個分區(qū)通過Java虛擬機進程 直接調(diào)用MGIZA++進行詞對齊訓(xùn)練,并將訓(xùn)練得到的部分計數(shù)文件寫入到HDFS中; 4) 從HDFS中讀取訓(xùn)練得到的部分計數(shù)文件,進行期望最大化算法中的M-Step,對為不 同類型的部分計數(shù)文件進行最大似然估計,得到新一輪的模型參數(shù),然后將模型參數(shù)寫入 到HDFS中; 5) 以步驟2)中訓(xùn)練得到的最終的模型參數(shù)作為輸入,為平行語料庫中的每個句對生成 最優(yōu)詞對齊,得到帶有詞對齊信息的平行語料庫。3. 根據(jù)權(quán)利要求2所述的基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法,其特征是:所 述步驟3)中包含以下步驟: ① 為每個數(shù)據(jù)分區(qū)構(gòu)建執(zhí)行說明書,包括設(shè)置調(diào)用特定模型的可執(zhí)行文件、設(shè)置調(diào)用 MGIZA++執(zhí)行時配置文件、設(shè)置本輪輸入文件以及本輪輸出文件,最后生成一個序列化的執(zhí) 行說明書; ② 使用所述序列化的執(zhí)行說明書作為輸入,指定分區(qū)數(shù),得到一個存儲執(zhí)行說明書的 彈性分布式數(shù)據(jù)集,所述彈性分布式數(shù)據(jù)集以HashPartitioner分區(qū),其中各個分區(qū)的執(zhí)行 說明書均勻分配給各個計算節(jié)點; ③ 以執(zhí)行說明書作為輸入,分別為每個數(shù)據(jù)分區(qū)調(diào)用MGIZA++進行E-Step的訓(xùn)練,訓(xùn)練 前首先將執(zhí)行說明書反序列化,接著根據(jù)執(zhí)行說明書從HDFS中讀取輸入文件、運行MGIZA+ +、將輸出文件寫入HDFS中。4. 根據(jù)權(quán)利要求1所述的基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法,其特征是:所 述步驟(3)中包含以下步驟: a)以帶詞對齊信息的平行語料庫作為輸入,使用最大似然估計方法計算雙方向的詞翻 譯概率表; b)以帶詞對齊信息的平行語料庫作為輸入,對語料庫中的每個句對并行地進行短語抽 取,首先根據(jù)詞對齊的句對構(gòu)建詞對齊矩陣,接著根據(jù)選定的短語長度,按照特定的匹配策 搜索符合條件的短語; C)以所述步驟b)抽取出的短語集作為輸入,采用兩步聚合操作,第一步聚合操作將詞 對齊相同的短語進行聚合,第二步聚合操作聚合詞對齊不同但是短語相同的短語,并保留 出現(xiàn)次數(shù)最多的詞對齊; d) 以聚合后的短語集作為輸入,采用最大似然估計方法計算短語翻譯概率; e) 以步驟d)中計算了短語翻譯概率的短語集作為輸入,計算短語的詞匯化翻譯概率, 得到短語表。5. 根據(jù)權(quán)利要求4所述的基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法,其特征是:所 述特定的匹配策略為:一個短語對要滿足至少有一個詞對齊存在于兩個短語之間,并且兩 個短語之間的所有詞對齊不能超過兩個短語的范圍。6. 根據(jù)權(quán)利要求4所述的基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法,其特征是:所 述步驟e)中包含以下步驟:為每個數(shù)據(jù)分區(qū)內(nèi)的短語計算詞匯化翻譯概率,每個分區(qū)在計 算前,使用基于HDFS的參數(shù)加載策略加載詞翻譯概率表,然后訪問詞翻譯概率表并計算概 率值,最后返回短語表并將所述短語表寫入HDFS中,所述短語表中包括短語對、短語翻譯概 率以及詞匯化翻譯概率信息。7. 根據(jù)權(quán)利要求6所述的基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法,其特征是:所 述基于HDFS的參數(shù)加載策略為:每個計算節(jié)點上的計算任務(wù)在為數(shù)據(jù)分區(qū)計算詞匯化翻譯 前,從HDFS中載入詞翻譯概率表,通過使用靜態(tài)變量和加鎖機制保證一個計算節(jié)點上只加 載一次詞翻譯概率表,供多個計算任務(wù)共享訪問。8. 根據(jù)權(quán)利要求1所述的基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法,其特征是:所 述指定次數(shù)為3至5次。9. 根據(jù)權(quán)利要求3所述的基于Spark的大規(guī)模短語翻譯模型的訓(xùn)練方法,其特征是:所 述分區(qū)數(shù)為計算節(jié)點的數(shù)目。
【文檔編號】G06F17/30GK106055543SQ201610346396
【公開日】2016年10月26日
【申請日】2016年5月23日
【發(fā)明人】黃宜華, 周娟, 顧榮, 楊文家, 黃書劍
【申請人】南京大學(xué)