機器翻譯領域常使用BLEU對翻譯質量進行測試評測。咱們能夠先看wiki上對BLEU的定義。算法
爲何要用BLEU?ide
現實中不少時候咱們須要用人工來評價翻譯結果的,但這種方式很是慢,而且成本很是高,由於你須要請足夠專業的翻譯人員才能給出相對靠譜的翻譯評估結果,通常這種人工評價都偏主觀,而且很是依賴專業水平和經驗。爲了解決這一問題,機器翻譯領域的研究人員就發明了一些自動評價指標好比BLEU,METEOR和NIST等,在這些自動評價指標當中,BLEU是目前最接近人類評分的。工具
BLEU的原理是什麼?測試
BLEU做爲評價翻譯的質量的指標,包含下面幾個概念:優化
N-gramthis
N-gram是一種統計語言模型,該模型能夠將一句話表示n個連續的單詞序列,利用上下文中相鄰詞間的搭配信息,計算出句子的機率,從而判斷一句話是否通順。BLEU也是採用了N-gram的匹配規則,經過它可以算出比較譯文和參考譯文之間n組詞的類似的一個佔比。lua
這裏舉一個例子:idea
原文: 貓坐在墊子上
機器翻譯:The cat sat on the mat.
人工翻譯:The cat is on the mat.spa
1-gram翻譯
能夠看到機器翻譯6個詞,有5個詞命中參考覺得,那麼它的匹配度爲 5/6。
2-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的話,你會發現全部the都匹配上了,匹配度是7/7
,這個確定不能反映充分性的,怎麼辦?
BLEU修正了這個算法,提出取機器翻譯譯文N-gram的出現次數和參考譯文中N-gram最大出現次數中的最小值的算法,具體以下:
因此上面修正後的結果應該是count = 7,Max_ref_Count = 2,取它們之間的最小值爲2,那麼修正後的1-gram的匹配度應該爲2/7
。
其中,上面部分表示取n-gram在翻譯譯文和參考譯文中出現的最小次數,好比上面的1-gram出現的最小次數是2.
下面部分表示取n-gram在翻譯譯文中出現次數,好比上面的1-gram出現的次數是7.
機器譯文:The cat
參考譯文:The cat is on the mat.
若是出現這種短句子,你會發現計算n-gram的精度會得很高分,很顯然此次的得分爲1,但實際上它的得分應該是比較低的。針對翻譯譯文長度比參考譯文要短的狀況,就須要一個懲罰的機制去控制。
懲罰因子:
這裏的c是機器譯文的詞數,r是參考譯文的詞數,
這樣的話咱們從新算精度就應該是:
BP = e^(1- 6 / 2) = 7.38905609893065
Bleu算法
通過上面的各類改進,BLEU最終的計算公式以下:
其實,括號裏面的部分,就是一些數學運算,它的做用就是讓各階n-gram取權重服從均勻分佈,就是說不論是1-gram、2-gram、3-gram仍是4-gram它們的做用都是同等重要的。因爲隨着n-gram的增大,整體的精度得分是呈指數降低的,因此通常N-gram最多取到4-gram。
這裏給一個例子,如何具體計算
機器翻譯: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
寫程序的時候,不用費那麼大的勁去實現上面的算法,現成的工具就能夠用:
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自己就不追求百分之百的準確性,也不可能作到百分之百,它的目標只是給出一個快且不差的自動評估解決方案。
BLEU原理其實並非很複雜,更可能是基於n-gram基礎上的優化,寫這篇文章的目的也是想梳理清楚BLEU可以解決的問題,還有不能解決的問題,這對本身後續思考如何經過其餘手段去更好地提升翻譯評估的能力有必定的啓發做用。翻譯質量評估自己就是MT領域的熱門課題,若是咱們可以找到一個比BLEU更好的,這將會產生很大的價值。