梁建飛,王軍元,劉 敏
(61243部隊(duì),新疆 830006)
音譯通常用于命名實(shí)體的翻譯,如地名、人名等,是指利用源語(yǔ)言及目標(biāo)語(yǔ)言發(fā)音規(guī)則的異同將源語(yǔ)言形式翻譯成目標(biāo)語(yǔ)言形式[1].由于音譯從讀音角度處理翻譯問(wèn)題,在處理未登錄詞翻譯問(wèn)題上有著良好的效果[2],因此在很多跨語(yǔ)言任務(wù)如機(jī)器翻譯[3]、雙語(yǔ)地圖[4]中有著廣泛的應(yīng)用,其中雙語(yǔ)地圖對(duì)音譯的要求非常高,必須遵循嚴(yán)格的音譯規(guī)則才能得到可供使用的雙語(yǔ)注記[4].
目前有大量音譯規(guī)則可供使用,如聯(lián)合國(guó)地名標(biāo)準(zhǔn)化會(huì)議要求:世界各國(guó)的地名,要實(shí)行單一羅馬化拼寫,即以羅馬語(yǔ)為官方語(yǔ)言的國(guó)家,應(yīng)提供標(biāo)準(zhǔn)的地名拼寫形式;使用非羅馬語(yǔ)的國(guó)家,要制定出非羅馬字母轉(zhuǎn)寫為羅馬字母的轉(zhuǎn)寫規(guī)則,經(jīng)聯(lián)合國(guó)標(biāo)準(zhǔn)化會(huì)議通過(guò)在國(guó)際上推廣使用.在此基礎(chǔ)上,我國(guó)國(guó)家質(zhì)量技術(shù)監(jiān)督局最新發(fā)布了《外國(guó)地名漢字譯寫導(dǎo)則》,包括英語(yǔ)、法語(yǔ)、德語(yǔ)、俄語(yǔ)、西班牙語(yǔ)、阿拉伯語(yǔ)、葡萄牙語(yǔ)、蒙古語(yǔ)共八種.除此之外,中國(guó)地名委員會(huì)制定了50個(gè)語(yǔ)種的音譯規(guī)則表,這些規(guī)則表依據(jù)原語(yǔ)種字母羅馬化后的不同發(fā)音所對(duì)應(yīng)的國(guó)際音標(biāo),分為元音字母和輔音字母,由元音字母和輔音字母單獨(dú)發(fā)音或組合發(fā)音進(jìn)行譯寫.
針對(duì)音譯的研究一般分為音譯等價(jià)對(duì)挖掘的研究和音譯模型構(gòu)建的研究?jī)纱箢?前者是指從平行或可比較語(yǔ)料庫(kù)中挖掘雙語(yǔ)音譯等價(jià)對(duì),構(gòu)建一個(gè)更大更新的音譯詞典,后者是指使用平行雙語(yǔ)語(yǔ)料庫(kù)進(jìn)行訓(xùn)練,根據(jù)其本身信息及上下文信息自動(dòng)建立一個(gè)音譯模型.
根據(jù)音譯的方式不同,音譯方法可分為基于發(fā)音的方法和基于字形的方法[5].前者如文獻(xiàn)[6],利用源語(yǔ)言發(fā)音規(guī)則將源語(yǔ)言轉(zhuǎn)換為發(fā)音中間體,然后根據(jù)目標(biāo)語(yǔ)言的發(fā)音規(guī)則將中間體轉(zhuǎn)換為目標(biāo)語(yǔ)言;后者如文獻(xiàn)[7],直接由源語(yǔ)言不經(jīng)過(guò)任何中間體轉(zhuǎn)換為目標(biāo)語(yǔ)言,這類方法信息丟失最少,音譯效果最優(yōu).文獻(xiàn)[8]綜合上述兩種方法的優(yōu)點(diǎn),提出將音節(jié)和字形特征相融合的方法.
根據(jù)音節(jié)劃分的粒度,音譯方法可分為以音素為粒度的方法和以字母為粒度的方法.如Knight和Graeh[6]在日英人名音譯中,提出以英文音素為粒度,通過(guò)發(fā)音相似性尋求轉(zhuǎn)換的方法,而Knight[9]和Sherif[10]提出以字母為單位,不考慮發(fā)音過(guò)程,直接進(jìn)行翻譯.
除上述方法外,文獻(xiàn)[11]使用音節(jié)相似度模型進(jìn)行人名翻譯;文獻(xiàn)[12]通過(guò)人工定義規(guī)則的方法進(jìn)行翻譯,將英文字母劃分為元音字母和輔音字母,切分時(shí)則遵循元音字母和輔音字母配對(duì)的原則;文獻(xiàn)[13]將音節(jié)切分問(wèn)題轉(zhuǎn)換為序列標(biāo)注問(wèn)題,把機(jī)器學(xué)習(xí)和統(tǒng)計(jì)機(jī)器翻譯模型用于音譯.
現(xiàn)有的研究音譯效果還不夠理想,主要原因在于音節(jié)劃分規(guī)則不夠完善,音節(jié)劃分錯(cuò)誤較多,因此無(wú)法滿足雙語(yǔ)地圖對(duì)注記的要求.本文提出一種音節(jié)劃分方法,能夠有效避免音節(jié)劃分錯(cuò)誤,從而獲得比較理想的音譯結(jié)果;設(shè)計(jì)了基于規(guī)則的多語(yǔ)種音譯軟件,利用現(xiàn)有的規(guī)則表資源,獲得了大量高質(zhì)量的音譯成果.
音譯的第一步是選擇合適的音譯規(guī)則表(不同的音譯規(guī)則表對(duì)應(yīng)不同的通用名詞庫(kù)、專有名詞庫(kù)和特殊規(guī)則表),然后查詢通用名詞庫(kù)和專有名詞庫(kù),如果輸入的單詞出現(xiàn)在這兩個(gè)庫(kù)中,直接輸出該單詞對(duì)應(yīng)的翻譯結(jié)果,否則進(jìn)入單詞音譯模塊.由于規(guī)則表無(wú)法覆蓋所有音譯規(guī)則,因此需要根據(jù)特殊規(guī)則表對(duì)輸入的單詞進(jìn)行預(yù)處理,然后經(jīng)過(guò)單詞拆分、拆分結(jié)果優(yōu)化、單詞重組和規(guī)則表查詢等環(huán)節(jié)就可得到音譯結(jié)果.詳細(xì)流程如圖1所示.
圖1 音譯流程圖
圖1中通用名詞庫(kù)、專有名詞庫(kù)、規(guī)則表和特殊規(guī)則表應(yīng)按軟件要求的格式對(duì)數(shù)據(jù)進(jìn)行組織.就某個(gè)具體領(lǐng)域而言,通用名詞的數(shù)量是非常有限的,如地圖制圖領(lǐng)域,涉及到的通用名詞如“山”、“河”、“村”、“湖”等.專有名詞庫(kù)的數(shù)據(jù)源可以是相關(guān)語(yǔ)言的雙語(yǔ)資源,如人名資源、地名資源等,也可以是經(jīng)過(guò)審核認(rèn)可的音譯成果.規(guī)則表和特殊規(guī)則表的設(shè)計(jì)應(yīng)以權(quán)威部門發(fā)布的成果為依據(jù),在使用過(guò)程中可適當(dāng)進(jìn)行修改和完善.基于上述的設(shè)計(jì),利用軟件能快速獲得高質(zhì)量的音譯成果,避免了人工查找規(guī)則費(fèi)時(shí)費(fèi)力、容易出錯(cuò)的可能性.
單詞預(yù)處理是依據(jù)特殊規(guī)則表對(duì)源語(yǔ)言單詞進(jìn)行處理,以便新單詞利用規(guī)則表中的規(guī)則獲得可信的音譯結(jié)果.通過(guò)對(duì)大量數(shù)據(jù)進(jìn)行分析總結(jié),制定特殊規(guī)則表(以羅馬語(yǔ)-漢語(yǔ)為例)格式如表1所示.
表1 特殊規(guī)則表
表1中的例子包含羅馬化的普什圖語(yǔ)和印地語(yǔ)的部分特殊規(guī)則,從中可以看出按替換位置劃分,特殊規(guī)則可以分為詞首、詞尾和替換三類,分別表示用新字符串替換單詞中詞首、詞尾和任意位置的原字符串,其中“-”為單詞分隔符,“null”表示空字符串.單詞預(yù)處理的過(guò)程比較簡(jiǎn)單,輸入的單詞與特殊規(guī)則表逐行進(jìn)行匹配,如果相應(yīng)的位置上出現(xiàn)原字符串,則用新字符串替換并記錄對(duì)應(yīng)的說(shuō)明信息,用于在最終成果中輸出.
單詞拆分的第一步是字母識(shí)別,即單詞與所有元音字母和輔音字母進(jìn)行匹配,每個(gè)字母的匹配結(jié)果用四個(gè)參數(shù)表示:字母、位置、長(zhǎng)度、類型.以羅馬語(yǔ)單詞“taisar”為例,字母識(shí)別的結(jié)果為:t 0 1 f;a 1 1 y;i 2 1 y;ai 1 2 y;s 3 1 f;a 4 1 y;r 5 1 f,其中每行的第一列表示單詞中的字母,第二列表示該字母在單詞中的索引位置,第三列表示字母的長(zhǎng)度,第四列表示字母的類型,“f”為輔音字母,“y”為元音字母.根據(jù)字母識(shí)別結(jié)果對(duì)單詞進(jìn)行拆分,就是從位置為0的字母開始,搜索位置等于前一個(gè)字母位置和長(zhǎng)度之和的字母,從而得到一個(gè)連續(xù)的、不重疊的字母序列,詳細(xì)算法用偽碼表示如算法1.
算法1.單詞拆分算法1.Hashtable chash;//存儲(chǔ)單詞拆分結(jié)果的哈希表2.Hashtable thash ←(“”,0);//存儲(chǔ)過(guò)程數(shù)據(jù)的哈希表3.begin while(End(thash,wlen)!=true)//判斷是否結(jié)束循環(huán)4.chash.clear();//清空哈希表5.begin foreach(object obj in thash)//遍歷哈希表6.int s ← obj.value;//搜索位置賦值7.begin for(int r ← 0;r 上述算法中,函數(shù)End(thash,wlen)用于判斷循環(huán)是否結(jié)束,其中參數(shù)wlen表示待翻譯單詞的字符串長(zhǎng)度,循環(huán)結(jié)束的條件是哈希表thash中各項(xiàng)的value值均等于wlen.以單詞“taisar”為例,單詞拆分的結(jié)果包含兩項(xiàng):t|a!i!s|a!r|和t|ai!s|a!r|.接下來(lái)對(duì)這兩個(gè)拆分結(jié)果分別進(jìn)行字母編組并篩選出最優(yōu)拆分方案. 單詞重組的目的是實(shí)現(xiàn)字母編組,方法是用字符“!”對(duì)單詞拆分結(jié)果進(jìn)行分割,對(duì)不同類型的分割結(jié)果分別進(jìn)行處理,原則是盡可能多的出現(xiàn)“輔音字母+元音字母”組合,盡可能少的出現(xiàn)單個(gè)元音字母或單個(gè)輔音字母組合,詳細(xì)算法用偽碼表示如算法2. 算法2.單詞重組算法1.string itext;//單詞重組結(jié)果2.int gps ← 0;//組合數(shù)3.int fys ← 0;//輔音元音組合數(shù)4.string[] strs ← split(ctext,”!”);//用字符“!”分割 ctext 5.begin foreach(string str in strs)6.int c ← count(str);//計(jì)算 str中字符”|”的個(gè)數(shù)7.begin switch(c)8.begin case 0:9.itext ←itext+”|”+str+space;//space 表示空格10.gps ← gps+1;11.break; 12.end case 13.begin case 1:14.itext ←itext+str+space;15.gps ← gps+1;16.begin if(!EndWith(str,”|”))//判斷 str是否以字符”|”結(jié)尾17.fys ← fys+1;18.end if 19.break;20.end case 21.begin default:22.begin if(EndWith(str,”|”))23.string[] ss ← split(str,”|”);24.begin foreach(string s in ss)25.itext ← itext+s+”|”+space;26.gps ← gps+1;27.end foreach 28.end if 29.begin else 30.string[] ss ← split(str,”|”);31.begin for(int i←0;i 上述算法中,針對(duì)不同類型的拆分結(jié)果分別進(jìn)行了處理,結(jié)果包含重組字符串以及對(duì)應(yīng)的組合數(shù)和輔音元音組合數(shù)兩個(gè)參數(shù),用于篩選單詞的最佳音節(jié)劃分.對(duì)字符串t|a!i!s|a!r|和t|ai!s|a!r|進(jìn)行單詞重組,得到的重組字符串分別是“t|a |i s|a r|”和“t|ai s|a r|”,對(duì)應(yīng)的組合數(shù)分別是4和3,輔音元音組合數(shù)均為2. 排除極少數(shù)有歧義的情況,對(duì)于多個(gè)拆分結(jié)果,只有一個(gè)是正確的,即最佳音節(jié)劃分.通過(guò)對(duì)大量音譯成果進(jìn)行分析發(fā)現(xiàn),最佳音節(jié)劃分具備兩個(gè)特點(diǎn):a.組合數(shù)最小;b.輔音元音組合數(shù)最大,這也符合自然語(yǔ)言的發(fā)音規(guī)則.因此,單詞taisar的最優(yōu)拆分方案是t|ai!s|a!r|,對(duì)應(yīng)的重組結(jié)果即音節(jié)劃分結(jié)果是“t|ai s|a r|”.采用這種策略不僅能獲得正確的結(jié)果,還能保證結(jié)果的唯一性. 根據(jù)重組結(jié)果確定音譯結(jié)果,其核心是確定每個(gè)組合中輔音字母和元音字母在規(guī)則表中的列號(hào)和行號(hào),從而定位目標(biāo)語(yǔ)言項(xiàng),詳細(xì)算法用偽碼表示如算法3. 算法3.規(guī)則表定位算法1.int[][] parrs;//規(guī)則表定位結(jié)果2.int pf,py;//輔音、元音字母索引位置3.string[] strs ← split(itext,space);//用空格符分割itext 4.begin foreach(string str in strs)5.begin if(EndWith(str,”|”)||StartWith(str,”|”))6.begin if(EndWith(str,”|”)7.int len ← length(str);8.string subf ← str.substring(0,len–1);//去掉 str中最后一個(gè)字符”|”9.pf ← pos(subf,flist);//在輔音字母列表flist中定位字母subf 10.parrs ←(pf,1);//將定位信息追加到數(shù)組中11.end if 12.begin else 13.string suby← str.substring(1);//去掉 str中第一個(gè)字符”|”14.py ← pos(suby,ylist);//在元音字母列表ylist中定位字母suby 15.parrs ←(1,py);16.end else 17.end if 18.begin else 19.int idx ← index(str,”|”);//返回字符”|”在 str中的索引位置20.string subf ← str.substring(0,idx);21.string suby ← str.substring(idx+1);22.pf ← pos(subf,flist);23.py ← pos(suby,ylist);24.parrs ←(pf,py);25.end else 26.end foreach 上述算法中,輔音字母列表和元音字母列表中前兩位存儲(chǔ)空字符串,輔音字母或元音字母從第三位開始存儲(chǔ),單獨(dú)輔音字母組合或單獨(dú)元音字母組合對(duì)應(yīng)規(guī)則表的行號(hào)或列號(hào)為1.根據(jù)二維數(shù)組parrs中存儲(chǔ)的值,可以很方便地在規(guī)則表中查找到對(duì)應(yīng)的音譯結(jié)果.如字符串“t|ai s|a r|”中各個(gè)組合對(duì)應(yīng)的定位值分別為(4,7)、(5,2)和(13,1),對(duì)應(yīng)的音譯結(jié)果分別為“泰”、“薩”和“爾”,因此羅馬語(yǔ)單詞 taisar的音譯結(jié)果為“泰薩爾”. 本文提出的算法是在Win7操作系統(tǒng)上用C#語(yǔ)言編程實(shí)現(xiàn)的,軟件使用到的通用名詞庫(kù)、專有名詞庫(kù)、特殊規(guī)則表和音譯規(guī)則表均獨(dú)立于軟件本身,使用者可根據(jù)實(shí)際情況單獨(dú)進(jìn)行編輯,以滿足不同語(yǔ)種音譯的需要. 對(duì)英語(yǔ)地名單詞、羅馬化的普什圖語(yǔ)地名單詞、羅馬化的印地語(yǔ)地名單詞和俄語(yǔ)地名單詞進(jìn)行實(shí)驗(yàn),分別隨機(jī)抽取3000個(gè)單詞,分為5組,每組600個(gè)單詞,人工檢查音譯結(jié)果并統(tǒng)計(jì)正確率,實(shí)驗(yàn)結(jié)果如表2所示. 表2 正確率統(tǒng)計(jì)結(jié)果(單位:%) 從實(shí)驗(yàn)結(jié)果可以看出,音譯正確率可達(dá)91%以上,通過(guò)對(duì)音譯結(jié)果錯(cuò)誤的單詞進(jìn)行分析發(fā)現(xiàn),導(dǎo)致錯(cuò)誤的原因是:1)個(gè)別特殊規(guī)則未加入到特殊規(guī)則表中;2)未設(shè)置好特殊規(guī)則的優(yōu)先級(jí);3)少量單詞的最佳音節(jié)劃分結(jié)果不唯一.在接下來(lái)的實(shí)驗(yàn)中,本文將“連續(xù)兩個(gè)輔音字母按一個(gè)輔音字母發(fā)音”這一規(guī)則加入到特殊規(guī)則表中并在單詞預(yù)處理階段優(yōu)先使用,實(shí)驗(yàn)結(jié)果如表3所示. 表3 本文方法的正確率統(tǒng)計(jì)結(jié)果(單位:%) 從實(shí)驗(yàn)結(jié)果可以看出,完善規(guī)則表可有效提高音譯正確率.現(xiàn)有的音譯規(guī)則研究成果是音譯的重要基礎(chǔ),隨著任務(wù)的不斷拓展和深入,需要不斷完善和充實(shí)音譯規(guī)則表,確保音譯成果正確可靠.最佳音節(jié)劃分結(jié)果不唯一的單詞數(shù)量很少,但需人工干預(yù)以確定正確的音譯結(jié)果. 實(shí)驗(yàn)結(jié)果表明,本文提出的算法能有效解決多語(yǔ)種音譯問(wèn)題,在實(shí)際使用中只要設(shè)計(jì)好通用名詞庫(kù)、專有名詞庫(kù)、規(guī)則表和特殊規(guī)則表就能獲得良好的音譯效果.由于本文提出的算法較好地解決了音節(jié)劃分問(wèn)題,有效避免了音節(jié)劃分錯(cuò)誤,因此進(jìn)一步提高了音譯正確率,可以滿足雙語(yǔ)地圖、機(jī)器翻譯對(duì)雙語(yǔ)資源的需要.2.3 單詞重組
2.4 規(guī)則表定位
3 實(shí)驗(yàn)結(jié)果與評(píng)價(jià)
3.1 算法實(shí)現(xiàn)
3.2 實(shí)驗(yàn)結(jié)果與分析
4 結(jié)論與展望