BLEU算法(例子和公式解釋)

1.前言

最近在利用transformer自動化生成彈幕。在transformer的實現中,用到了一個標準BLEU標準。這個標準全稱爲bilingual evaluation understudy。同時參考了一些文章的介紹:

最後根據自己的理解解釋一下這個算法的含義。

2.N-gram

BLEU測評標準,主要是利用了N-gram來對翻譯譯文和標準譯文進行一個一個匹對。比如:

機器譯文:It is a nice day today
人工譯文:Today is a nice day

2.1 1-gram

如果用1-gram進行匹配的話,則可以得到:
1-gram
這時候,機器譯文可以匹配到5個詞語,而它總詞語數爲6,所以匹配度爲:5/65/6

2.2 3-gram

如果使用3-gram進行匹配:
3-gram
可以看到,機器譯文可以組成4個詞組,而匹配上了2個詞組,所以匹配度爲:2/42/4

2.3 N-gram總結

n-gram匹配以此類推,一般使用1-gram,2-gram,3-gram和4-gram來衡量句子與句子之間的匹配度。1-gram的結果代表了文中有多少個詞被單獨翻譯出來了,因此它反映的是這篇譯文的忠實度;而當我們計算2-gram以上時,更多時候結果反映的是譯文的流暢度,值越高文章的可讀性就越好。

3. BLEU算法

3.1 召回率

上面的n-gram方法,只考慮了機器譯文中的詞語數,而沒有同時考慮人工譯文中出現的次數。舉個例子:

機器譯文:the the the the 
人工譯文:The cat is standing on the ground

如果使用1-gram方法進行匹配,則得到100%的匹配度。這是因爲“the”這個詞語在人工譯文中都出現了,但這個100%的匹配度顯然是不準確的。因此BLEU算法修正了這個錯誤,改爲考慮詞語出現在譯文中的最小次數:
countk=min(ck,sk) count_{k} = min(c_k,s_k)
其中kk表示在機器譯文中的第kk個詞語,ckc_k則代表在機器譯文中這個詞語出現的次數,而sks_k則代表在人工譯文中這個詞語出現的次數。最後可以得到修正後的匹配度:1/41/4

3.2 BLEU公式

首先定義幾個數學符號:

  • 人工譯文表示爲sjs_j,其中jMj \in MMM表示共有MM個參考答案。
  • 翻譯譯文表示cic_i,其中iEi \in EEE表示共有EE個翻譯。
  • N-gram表示nn個單詞長度的詞組集合,令kk表示第kk個詞組
  • hk(ci)h_k(c_i) 表示第kk個詞組在翻譯譯文cic_i中出現的次數
  • hk(si,j)h_k(s_{i,j}) 表示第kk個詞組在標準答案si,js_{i,j}中出現的次數

最後可以得到計算每個n-gram的公式:
Pn=iEkKmin(hk(ci),minjMhk(si,j))iEkKmin(hk(ci)) P_n = \frac{\sum_{i}^{E} \sum_{k}^{K} min(h_k(c_i), min_{j \in M} h_k(s_{i,j}))}{\sum_{i}^{E} \sum_{k}^{K} min(h_k(c_i))}

  • 在分子中,minjMhk(si,j)min_{j \in M} h_k(s_{i,j})指的是第k個詞組在si,js_{i,j}中的最小次數,也就是相當於找了最相似的候選句子

3.3 懲罰因子

上面的算法已經足夠可以有效的翻譯評估了,然而N-gram的匹配度可能會隨着句子長度的變短而變好,因此會存在這樣一個問題:一個翻譯引擎只翻譯出了句子中部分句子且翻譯的比較準確,那麼它的匹配度依然會很高。爲了避免這種評分的偏向性,BLEU在最後的評分結果中引入了長度懲罰因子(Brevity Penalty)

BP={1        if  lc>lse1lslc   if  lc<=ls BP=\left\{ \begin{aligned} 1 ~~~~~~~~ if ~~l_c > l_s \\ e^{1-\frac{l_s}{l_c}} ~~~ if ~~l_c <= l_s \\ \end{aligned} \right.

BP的計算公式如上。lcl_c代表表示機器翻譯譯文的長度,lsl_s表示參考答案的有效長度。當存在多個參考譯文時,選取和翻譯譯文最接近的長度。當翻譯譯文長度大於參考譯文的長度時,懲罰係數爲11,意味着不懲罰,只有機器翻譯譯文長度小於參考答案纔會計算懲罰因子。

3.4 BLEU最終公式

由於各N-gram統計量的精度隨着階數的升高而呈指數形式遞減,所以爲了平衡各階統計量的作用,對其採用幾何平均形式求平均值然後加權,再乘以長度懲罰因子,得到最後的評價公式:
BLEU=BP×exp(n=1NWnlog(Pn)) BLEU = BP \times exp(\sum_{n=1}^{N} W_n log(P_n))
BLEU的原型系統採用的是均勻加權,即Wn=1/NW_n=1/N 。N的上限取值爲4,即最多隻統計4-gram的精度。

4.實例

4.1 句子間的BLEU

翻譯譯文:Going to play basketball this afternoon ?
人工譯文:Going to play basketball in the afternoon ?

其中翻譯譯文gram長度爲:7,人工譯文長度爲:8

  • 1-gram計算:P1=6/7P_1 = 6/7
  • 2-gram計算:P2=4/6P_2 = 4/6
  • 3-gram計算:P3=2/5P_3 = 2/5
  • 4-gram計算:P4=1/4P_4 = 1/4
  • BP計算:BP=exp(18/7)BP = exp(1-8/7)

最後根據公式計算BLEU的值:
BLEU=BP×exp((log(P1)+log(P2)+log(P3)+log(P4))/4)=0.4238 BLEU = BP \times exp( (log(P_1) + log(P_2) + log(P_3) + log(P_4))/4) = 0.4238

4.2 多個句子間的BLEU

翻譯譯文:
(1)Going to play basketball this afternoon ?
(2)Going to play basketball afternoon ?
人工譯文:
(1)Going to play basketball in the afternoon ?
(2)Going to play basketball in the afternoon ?

上面的翻譯譯文有兩個,其對應的人工譯文也是有兩個。

第一個翻譯譯文長度:7;第二個翻譯譯文長度:6
第一個人工譯文長度:8;第二個人工譯文長度:8

  • 1-gram計算:P1=6+67+6=1213P_1 = \frac{6+6}{7+6} = \frac{12}{13}
  • 2-gram計算:P2=4+46+5=811P_2 = \frac{4+4}{6+5} = \frac{8}{11}
  • 3-gram計算:P3=2+25+4=49P_3 = \frac{2+2}{5+4} = \frac{4}{9}
  • 4-gram計算:P4=1+14+3=27P_4 = \frac{1+1}{4+3} = \frac{2}{7}
  • BP計算:BP=exp(1(8+8)/(7+6))=0.79392...BP = exp(1-(8+8)/(7+6)) = 0.79392...

最後根據公式計算BLEU的值:
BLEU
BLEU=BP×exp((log(P1)+log(P2)+log(P3)+log(P4))/4)=0.4290 BLEU = BP \times exp( (log(P_1) + log(P_2) + log(P_3) + log(P_4))/4) = 0.4290

總的來說,如果是評價一個語料集的BLEU,需要把所有的句子進行整體考慮,來計算BLEU,而不是把每個句子的BLEU求和平均。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章