BLEU (Bilingual Evaluation Understudy)

什麼是BLEU?

BLEU (Bilingual Evaluation Understudy) is an algorithm for evaluating the quality of text which has been machine-translated from one natural language to another. Quality is considered to be the correspondence between a machine's output and that of a human: "the closer a machine translation is to a professional human translation, the better it is" – this is the central idea behind BLEU. BLEU was one of the first metrics to achieve a high correlation with human judgements of quality, and remains one of the most popular automated and inexpensive metric. -- 維基百科html

解釋一下,首先bleu是一種文本評估算法,它是用來評估機器翻譯專業人工翻譯之間的對應關係,核心思想就是機器翻譯越接近專業人工翻譯,質量就越好,通過bleu算法得出的分數能夠做爲機器翻譯質量的其中一個指標。python

爲何要用BLEU?

現實中不少時候咱們須要用人工來評價翻譯結果的,但這種方式很是慢,而且成本很是高,由於你須要請足夠專業的翻譯人員才能給出相對靠譜的翻譯評估結果,通常這種人工評價都偏主觀,而且很是依賴專業水平和經驗。算法

爲了解決這一問題,機器翻譯領域的研究人員就發明了一些自動評價指標好比BLEU,METEOR和NIST等,在這些自動評價指標當中,BLEU是目前最接近人類評分的。ide

METEOR和NIST評價指標,筆者還未作深刻研究,有機會會針對這幾個指標作個對比。工具

BLEU的原理是什麼?

爲何BLEU能做爲機器翻譯的一個評估指標,仍是得看看它的原理是什麼。學習

接下來咱們逐個這幾個概念:優化

  • N-gram
  • 懲罰因子
  • Bleu算法

N-gramthis

N-gram是一種統計語言模型,該模型能夠將一句話表示n個連續的單詞序列,利用上下文中相鄰詞間的搭配信息,計算出句子的機率,從而判斷一句話是否通順。lua

BLEU也是採用了N-gram的匹配規則,經過它可以算出比較譯文和參考譯文之間n組詞的類似的一個佔比。idea

例子:

原文: 貓坐在墊子上
機器翻譯:The cat sat on the mat.
人工翻譯:The cat is on the mat.

咱們分別看下1-4 gram的匹配狀況:

1-gram

 
1-gram

能夠看到機器翻譯6個詞,有5個詞命中參考覺得,那麼它的匹配度爲 5/6。

2-gram

 
2-gram

2元詞組的匹配度則是 3/5。

3-gram

 
3-gram

3元詞組的匹配度是1/4。

4-gram

4元詞組的匹配狀況就沒有了。

通過上面的舉例你應該很清楚n-gram是怎麼計算了吧。通常狀況1-gram能夠表明原文有多少詞被單獨翻譯出來,能夠反映譯文的充分性,2-gram以上能夠反映譯文的流暢性,它的值越高說明可讀性越好。這兩個指標是可以跟人工評價對標的。

可是它存在一些特殊狀況,經過n-gram是沒辦法反映譯文的正確性的,例如:

原文:貓坐在墊子上
機器譯文: the the the the the the the.
參考譯文:The cat is on the mat.

 
1-gram錯誤狀況

若是計算1-gram的話,你會發現全部the都匹配上了,匹配度是7/7,這個確定不能反映充分性的,怎麼辦?

BLEU修正了這個算法,提出取機器翻譯譯文N-gram的出現次數和參考譯文中N-gram最大出現次數中的最小值的算法,具體以下:

 
這裏寫圖片描述

因此上面修正後的結果應該是count = 7,Max_ref_Count = 2,取它們之間的最小值爲2,那麼修正後的1-gram的匹配度應該爲2/7

是時候拿出論文中的計算各階N-gram的精度計算公式:

 
Pn

一眼看過去是否是以爲很高大上,看不懂了有木有,解釋一下吧:

 
這裏寫圖片描述

表示取n-gram在翻譯譯文和參考譯文中出現的最小次數,好比上面的1-gram出現的最小次數是2.

 
這裏寫圖片描述

表示取n-gram在翻譯譯文中出現次數,好比上面的1-gram出現的次數是7.

ok,到這裏你基本清楚bleu中n-gram精度究竟是怎麼計算的了。

上面的計算已經足夠好了嗎? No,還得繼續改進,舉個例子:

機器譯文:The cat
參考譯文:The cat is on the mat.

若是出現這種短句子,你會發現計算n-gram的精度會得很高分,很顯然此次的得分爲1,但實際上它的得分應該是比較低的。針對翻譯譯文長度比參考譯文要短的狀況,就須要一個懲罰的機制去控制。

懲罰因子

 
BP

這裏的c是機器譯文的詞數,r是參考譯文的詞數,

這樣的話咱們從新算精度就應該是:

BP = e^(1- 6 / 2) = 7.38905609893065

e是一個常無理數,是一個無限不循環小數,因此用e來表示2.718281828

Bleu算法

通過上面的各類改進,BLEU最終的計算公式以下:

 
BLEU

BP咱們已經知道了,那麼

 
這裏寫圖片描述

又是什麼鬼?先不用想這麼多,其實就是一些數學運算,它的做用就是讓各階n-gram取權重服從均勻分佈,就是說不論是1-gram、2-gram、3-gram仍是4-gram它們的做用都是同等重要的。因爲隨着n-gram的增大,整體的精度得分是呈指數降低的,因此通常N-gram最多取到4-gram

怎麼使用BLEU?

說實話,數學用人話來解釋是很是困難的,咱們仍是來經過例子來學習,仍是以前的:

機器翻譯:The cat sat on the mat.
人工翻譯:The cat is on the mat.

第一步:計算各階n-gram的精度

P1 = 5 / 6 = 0.833333333333333
P2 = 3 / 5 = 0.6
P3 = 1 / 4 = 0.25
P4 = 0 / 3 = 0

第二步:加權求和

取權重:Wn = 1 / 4 = 0.25

加權求和:

 
加權求和

第三步:求BP

機器翻譯長度 = 參考譯文長度,因此:

BP = 1

最後求BLEU

 
BLEU計算

寫程序的時候,不用費那麼大的勁去實現上面的算法,現成的工具就能夠用:

from nltk.translate.bleu_score import sentence_bleu reference = [['The', 'cat', 'is', 'on', 'the', 'mat']] candidate = ['The', 'cat', 'sat', 'on', 'the', 'mat'] score = sentence_bleu(reference, candidate) print(score) # 輸出結果:0.5946035575013605 

BLEU的優缺點?

優勢:方便、快速,結果比較接近人類評分。

缺點

  1. 不考慮語言表達(語法)上的準確性;
  2. 測評精度會受經常使用詞的干擾;
  3. 短譯句的測評精度有時會較高;
  4. 沒有考慮同義詞或類似表達的狀況,可能會致使合理翻譯被否認;

BLEU自己就不追求百分之百的準確性,也不可能作到百分之百,它的目標只是給出一個快且不差的自動評估解決方案。

最後

BLEU原理其實並非很複雜,更可能是基於n-gram基礎上的優化,寫這篇文章的目的也是想梳理清楚BLEU可以解決的問題,還有不能解決的問題,這對本身後續思考如何經過其餘手段去更好地提升翻譯評估的能力有必定的啓發做用。翻譯質量評估自己就是MT領域的熱門課題,若是咱們可以找到一個比BLEU更好的,這將會產生很大的價值。

最後,文中不少內容從其餘參考文章均可以找到,參考文章對BLEU如何計算,原理也有很不錯的講解,你們也能夠參考學習下。

參考文章

做者:IT_xiao小巫 連接:https://www.jianshu.com/p/15c22fadcba5 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
相關文章
相關標籤/搜索