1. 程式人生 > >自然語言處理——BLEU詳解以及簡單的程式碼實現

自然語言處理——BLEU詳解以及簡單的程式碼實現

引子

最近在做一個深度學習的小專案: Caption generation model 其中在快速評估模型的時候使用到了Bleu這一個指標, 於是花了一點時間來研究了這個指標代表的意義以及如何計算這個指標, 附帶原始碼.

何為BLEU

在機器翻譯領域, 我們需要一個指標來衡量機器翻譯的結果與專業人工翻譯結果的差異, 一般情況下,如果需要比較好的結果都需要專業的翻譯人員介入評估模型翻譯的好壞, 但是這樣需要大量的人力參與. 因此是否有一種機器的評估方法用於判斷翻譯的好壞而不需要人工介入, 這種評估方法雖然準確度並不高, 但是可以粗略的反應出當前模型的好壞. 於是Bleu就是這樣的情況下作為一個比較好的用於衡量翻譯文字質量的指標.

維基百科BLEU
BLEU(bilingual evaluation understudy) 中文名稱為雙語互譯質量輔助工具, 計算這個指標, 需要使用機器翻譯好的文字(稱作candidate docs)以及一些專業翻譯人員翻譯的文字(稱作reference docs). 本質上講BLEU 就是用來衡量機器翻譯文字與參考文字之間的相似程度的指標,取值範圍在0-1, 取值越靠近1表示機器翻譯結果越好. 然而這個指標也是經過多次的更新升級.

最初的BLEU

最初的BLEU計算特別簡單, 通常的講, 當我們自己計算兩個文字之間的相似程度的時候, 我們會考慮單詞的頻率, 最早的BLEU就是採用了這種思想, 計算方法是: 使用一個累加器表示candidate中的詞在reference doc中出現的次數, 從candidate doc 中的第一個詞開始比較, 如果在參考文字中出現過, 那麼計數加1. 最後使用這個累加值除以candidate doc 中的單詞數目即可計算得到文字的BLEU取值, 我們稱之為Precision, for example:

example1

根據這個例子和上述的演算法, 可以很容易的計算當前文字的precision. 整個candidate doc 的單詞長度為7, 而且每一個單詞都在reference doc裡面出現過, 所以此時累加值為7, 因此準去度為:
P = 7 7 =
1

但是實際上這個翻譯非常不理想, 這也是最初的BLEU評估指標不完善的地方, 當遇到出現較多常見詞彙時, 翻譯質量不高的譯文還能夠得到較高的precision, 因此也誕生了後續的改良型BLEU計算指標的演算法.

改良型BLEU(n-gram)

改良型BLEU. 上面提到的計算BLEU的方法是以單個詞為基準進行計算. 改良型的BLEU引入將多個詞組合在一起形成一個gram的思想, 比如最初版的Bleu的計算可以看做一個單詞構成的gram(這是一種特殊情況), 這種特殊組合被叫做uni-gram, 兩個單詞的組合叫做bi-gram 以此類推. 因此就可以構成1個單詞長度到n個單詞長度的多種單詞組合(每一種單詞長度可能存在不同的組合). 每一種長度的gram都可以計算出一個相應的precision P n . 對於該種長度gram 的precision我們還需要把它們整合起來, 一般使用加權集合平均的方法將 n 個計算出的precision整合成一個precision. 因此BLEU指標. 公式的推導過程如下:
假設參考文獻的數量為 M , 假設長度為n的gram中的一個組合為 W n i (某一個長度的gram具有多種可能的組合), 將當前組合 W n i 在candicate doc中出現的次數記做 C o u n t w n i , 同時可以計算出這個單詞在第 j 個參考文件中出現的次數, 用符號 R e f w n i j 表示其中 j = 0 , 1 , 2... M , 由於參考文獻有 M 個, 選擇這 M 個參考文獻取值中的最大值進行下一步計算. 記這個最大值為 R e f w n i m a x . 即是

R e f w n i m a x = M a x ( R e f w n i j ) j = 0 , 1 , 2... M 1
現在已經獲取到了某一個長度中一種gram的 C o u n t w n i R e f w n i m a x 選擇兩個計算值中的最小值進行下一步計算, 這個值記做 C o u n t w n i r e s
C o u n t w n i r e s = M i n ( C o u n t w n i , R e f w n i m a x )

長度為 n 的gram 型別有多種, 定義型別數為 K . 那麼長度為 n 的gram的最終precision計算公式如下:

P n = i = 0 K 1 C o u n t w n i r e s i = 0 K 1 C o u n t w n i

以上公式是長度為 n 的所有gram的precision計算公式,由於這個 n 的取值可以1到candidate doc長度, 假設candidate doc總的單詞長度為 N 需要將最終得到的這 N 個precision進行整合. 此處可以使用求加權幾何平均數的方法對這 N 個precision求出平均精度. 在做加權集合平均之前, 可以對公式進行一定的變形.假設權值序列為