BLEU綜述:
BLEU實質是對兩個句子的共現詞頻率計算,但計算過程中使用好些技巧,追求計算的數值可以衡量這兩句話的一緻程度。
BLEU容易陷入常用詞和短譯句的陷阱中,而給出較高的評分值。本文主要是對解決BLEU的這兩個弊端的優化方法介紹。
參考文獻有二:
- 《BLEU: a Method for Automatic Evaluation of Machine Translation 》
- WIKIPEDIA中對BLEU的講解
一.BLEU是什麼?
首先要看清楚我們本篇文章的主人公是怎麼拼寫的——{B-L-E-U},而不是{B-L-U-E},簡直了…..我叫了它兩天的blue(藍色)才發現原來e在u之前~~如果真要念出它的名字,音标是這樣的: [blε:] (波勒)。
BLEU的全名為:bilingual evaluation understudy,即:雙語互譯品質評估輔助工具。它是用來評估機器翻譯品質的工具。當然評估翻譯品質這種事本應該由人來做,機器現在是無論如何也做不到像人類一樣思考判斷的(我想這就是自然語言處理現在遇到的瓶頸吧,随便某個方面都有牽扯上人類思維的地方,真難),但是人工處理過于耗時費力,是以才有了BLEU算法。
BLEU的設計思想與評判機器翻譯好壞的思想是一緻的:機器翻譯結果越接近專業人工翻譯的結果,則越好。BLEU算法實際上在做的事:判斷兩個句子的相似程度。我想知道一個句子翻譯前後的表示是否意思一緻,顯然沒法直接比較,那我就拿這個句子的标準人工翻譯與我的機器翻譯的結果作比較,如果它們是很相似的,說明我的翻譯很成功。是以,BLUE去做判斷:一句機器翻譯的話與其相對應的幾個參考翻譯作比較,算出一個綜合分數。這個分數越高說明機器翻譯得越好。(注:BLEU算法是句子之間的比較,不是詞組,也不是段落)
BLEU是做不到百分百的準确的,它隻能做到個大概判斷,它的目标也隻是給出一個快且不差自動評估解決方案。
二.BLEU的優缺點有哪些?
優點很明顯:友善、快速、結果有參考價值
缺點也不少,主要有:
-
-
1. 不考慮語言表達(文法)上的準确性;
2. 測評精度會受常用詞的幹擾;
3. 短譯句的測評精度有時會較高;
4. 沒有考慮同義詞或相似表達的情況,可能會導緻合理翻譯被否定;
-
三.如何去實作BLEU算法?
首先,“機器翻譯結果越接近專業人工翻譯的結果,則越好”——要想讓機器去評判一句話機器翻譯好壞,得有兩件工具:
-
1. 衡量機器翻譯結果越接近人工翻譯結果的數值名額;
2. 一套人工翻譯的高品質參考譯文;
其次,規範一下說法——
-
1. 對一個句子我們會得到好幾種翻譯結果(詞彙、詞序等的不同),我們将這些翻譯結果叫做 候選翻譯集(candidate1, candidate2, ……);
2. 一個句子也會有好幾個 參考翻譯(reference1, reference2, ……);
3. 我們下面計算的比值,說白了就是精度,記做 pn , n代表n-gram, 又叫做n-gram precision scoring—— 多元精度得分(具體解釋見3.2);
4. 需要被翻譯的語言,叫做源語言(source),翻譯後的語言,叫做目智語言(target);
3.1 最開始的BLEU算法
其實最原始的BLEU算法很簡單,我們每個人都有意無意做過這種事:兩個句子,S1和S2,S1裡頭的詞出現在S2裡頭越多,就說明這兩個句子越一緻。就像這樣子:similarity(‘i like apple’, ‘i like english’)=2/3。
分子是一個候選翻譯的單詞有多少出現在參考翻譯中(出現過就記一次,不管是不是在同一句參考翻譯裡頭),分母是這個候選翻譯的詞彙數。
請看下面這個錯誤案例:
Candidate | the | the | the | the | the | the | the |
Reference1 | the | cat | is | on | the | mat | |
Reference2 | there | is | a | cat | on | the | mat |
計算過程:
-
1. 候選翻譯的每個詞——the,都在參考譯文中出現,分子為7;
2. 候選翻譯一共就7個詞,分母為7;
3. 這個翻譯的得分: 7/7 = 1!
很明顯,這樣算是錯的,需要改進一下。
3.2 改進的多元精度(n-gram precision)
專業一點,上面出現的錯誤可以了解為常用詞幹擾(over-generate “reasonable”words),比如the, on這樣的詞,是以極易造成翻譯結果低劣評分結果卻賊高的情況。
另外,上面我們一個詞一個詞的去統計,以一個單詞為機關的集合,我們統稱uni-grams(一進制組集)。如果是這樣{“the cat”, “cat is”, “is on”, “on the”, “the mat”},類似”the cat”兩個相鄰詞一組就叫做bi-gram(二進制組),以此類推:三元組、四元組、…、多元組(n-gram),集合變複數:n-grams。
OK,上述算法問題其實處在分子的計算上,我們換成這個:
Countclipwi,j=min(Countwi,Refj_Countwi)
Countclip=max(Countclipwi,j),i=1,2,3......
名詞解釋: 對于一條候選翻譯——
-
1. Countwi : 單詞 wi 的個數,如上表就是對“the”的計數為7;
2. Refj_Countwi : 詞 wi 在第個 j 參考翻譯裡出現的次數;
3. Countclipwi,j:被稱之為對于第 j 個參考翻譯,wi的截斷計數;
4. Countclip : wi 在所有參考翻譯裡的綜合截斷計數;
仍然看上表的舉例, Ref1_Count′the′=2 ,是以 Countclip′the′,1=min(7,2)=2 ,同理 Countclip′the′,2=1 ,是以綜合計數 Countclip=max(1,2)=2 。
分母不變,仍是候選句子的n-gram個數。這裡分母為7。
注:這個地方的 分子截斷計數 方法也不唯一,還有這樣的:
Ref_Countwi=max(Refj_Countwi),i,j=1,2,3...
Countclip=min(Countwi,RefCountwi)
它是先對統計了在各個參考翻譯裡的最多出現次數 Ref_Count′the′=max(2,1)=2 ,然後 Countclip=min(7,2)=1 。
其實 改進的n-gram精度得分可以用了衡量翻譯評估的充分性和流暢性兩個名額:一進制組屬于字元級别,關注的是翻譯的充分性,就是衡量你的逐字逐字翻譯能力; 多元組上升到了詞彙級别的,關注點是翻譯的流暢性,詞組準了,說話自然相對流暢了。是以我們可以用多組多元精度得分來衡量翻譯結果的。
3.3 改進的多元精度(modified n-gram precision)在文本段落翻譯品質評估中的使用
BLEU的處理辦法其實還是一樣,把多個句子當成一個句子罷了:
pn=∑c∈candidates∑n−gram∈cCountclip(n−gram)∑c′∈candidates∑n−gram′∈c′Countclip(n−gram′)
不要被這裡的連加公式給欺騙了,它将候選段落的所有n-gram進行了截斷統計作為分子,分母是候選段落的n-gram的個數。
3.4 将多個改進的多元精度(modified n-gram precision)進行組合
在3.2提到,uni-gram下的名額可以衡量翻譯的充分性,n-gram下的可以衡量翻譯的流暢性,建議将它們組合使用。那麼,應該如何正确的組合它們呢?
沒疑問,加總求和取平均。專業點的做法要根據所處的境況選擇權重平均,甚至是對原式做一些變形。
首先請看一下不同n-gram下的對某次翻譯結果的精度計算:
事實是這樣,随着n-gram的增大,精度得分總體上成指數下降的,而且可以粗略的看成随着n而指數級的下降。我們這裡采取幾何權重平均,并且将各n-gram的作用視為等重要的,即取權重服從均勻分布。
pave=∏n=1Npwnn−−−−−−⎷∑Nn=1wn=1∑Nn=1wnexp(∑i=1Nwn∗logpn)=exp(1N∗∑i=1Nlogpn)
pn 為改進的多元精度, wn 為賦予的權重。
對應到上圖,公式簡單表示為:
pave=exp(14∗(logp1+logp2+logp3+logp4))
3.5 譯句較短懲罰(Sentence brevity penalty )
再仔細看改進n-gram精度測量,當譯句比參考翻譯都要長時,分母增大了,這就相對懲罰了譯句較長的情況。譯句較短就更嚴重了!比如說下面這樣:
Candidate | the | cat | |||||
Reference1 | the | cat | is | on | the | mat | |
Reference2 | there | is | a | cat | on | the | mat |
顯然,這時候選翻譯的精度得分又是1( 12+12 )!短譯句就是這樣,很容易得高分…是以必須要設計一個有效的懲罰措施去控制。
首先,定一個名詞叫“最佳比對長度”(best match length),就是,如果譯句長度和任意一個參考翻譯的長度相同,就認為它滿足最佳比對長度。這種情況下,就不要懲罰了,懲罰因子要設為1。
BP={1…………if…c>re1−rc……if…c≤r
見上式, r 是一個參考翻譯的詞數,c是一個候選翻譯的詞數,BP代表譯句較短懲罰值。由此,最終 BLEU 值得計算公式為:
BLEU=BP∗exp(∑n=1Nwn∗logpn)
通過一次次的改進、糾正,這樣的 BLEU算法已經基本可以快捷地給出相對有參考價值的評估分數了。做不到也不需要很精确,它隻是給出了一個評判的參考線而已。