天天看點

機器翻譯自動評估-BLEU算法詳解

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. 1.  不考慮語言表達(文法)上的準确性;

      2.  測評精度會受常用詞的幹擾;

      3.  短譯句的測評精度有時會較高;

      4.  沒有考慮同義詞或相似表達的情況,可能會導緻合理翻譯被否定;

三.如何去實作BLEU算法?

  首先,“機器翻譯結果越接近專業人工翻譯的結果,則越好”——要想讓機器去評判一句話機器翻譯好壞,得有兩件工具:

  1. 1. 衡量機器翻譯結果越接近人工翻譯結果的數值名額;

    2. 一套人工翻譯的高品質參考譯文;

  其次,規範一下說法——

  1. 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. 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. 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下的對某次翻譯結果的精度計算:

  

機器翻譯自動評估-BLEU算法詳解

  事實是這樣,随着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算法已經基本可以快捷地給出相對有參考價值的評估分數了。做不到也不需要很精确,它隻是給出了一個評判的參考線而已。

  

以上就是BLEU知識點的主要内容。歡迎指正、補充。

繼續閱讀