1. 程式人生 > >關於機器翻譯評價指標BLEU(bilingual evaluation understudy)的直覺以及個人理解

關於機器翻譯評價指標BLEU(bilingual evaluation understudy)的直覺以及個人理解

最近我在做Natural Language Generating的專案,接觸到了BLEU這個指標,雖然知道它衡量的是機器翻譯的效果,也在一些文獻的experiment的部分看到過該指標,但我實際上經常會略去閱讀實驗效果的部分(純粹感覺不如理論部分激動人心哈哈哈),現在輪到自己做專案了,下定決心要搞懂這個指標到底在幹嘛。不足之處還是希望大家能夠指正。同時也歡迎大家轉載我的這篇blog 原創不易還請註明出處~ 首先是原始論文地址: https://www.aclweb.org/anthology/P02-1040.pdf 其次我在閱讀原始論文的時候也參考了這篇部落格:https://www.cnblogs.com/by-dream/p/7679284.html 對我的幫助也很大 接下來純粹是按照我的個人理解對原論文進行的一個提煉 故未必代表論文的本意。 # 1 BLEU指標的提出和假設 BLEU用於衡量機器翻譯結果(candidate)和參考譯文(reference)之間的相似程度。 BLEU可以衡量任意語種之間的翻譯效果。它的前提假設是:翻譯效果的好壞可以由n-gram在candidate和reference中出現的頻率來體現。直覺上來說,如果candidate中的每一個單詞(或者bi-gram, tri-gram)出現的頻率和reference中的每一個單詞(或者bi-gram, tri-gram)的出現頻率差不多,那麼我們就可以認為機器翻譯的效果很好。但是這種直覺理解存在一定的問題,需要正式化(formalization)。 # 2 BLEU指標的formalization 假定翻譯效果的好壞可以n-gram的頻率來體現,那麼依然存在以下的問題: 1. 如何正式化所謂的頻率相近? 2. 給定一句機器翻譯結果,可以存在多句參考譯文 3. 如何衡量一篇文章(包含多個句子)的翻譯效果好壞? 4. 基於1,2,3給出的metric是否存在讓某些低質量的candidate反而獲得好評的可能性? 下面針對上述問題給出解答。 ## 2.1 “頻率相近”的正式化 直覺上,一句句子中包含多個單詞(uni-gram), 如果大部分單詞都出現在了reference中,則認為這是一句好的翻譯句子。很自然的,會想到用 precision=number of unigram in candidate which appears in reference /number of unigram in candidate 但在正式化之前,這個直覺存在一個錯誤,考慮如下例子: ``` Candidate: the the the the the the the Reference : The cat is on the mat ``` Candidate一共有7個單詞,每一個單詞都出現在了Reference當中,所以precision=7/7,很野路子。 這個直覺的本質問題是reference中只有2個the(忽略大小寫),而Candidate中有7個the,所以合理的度量應該是2/7,也就是相似度受到Reference中the的出現頻率的制約。 下面結合問題2一起給出BLEU的初步正式化。 ## 2.2 單個candidate+多個reference的BLEU初步正式化 宣告:之後如果是reference則指代一句參考譯文,references指代多句參考譯文 ``` Candidate: the the the the the the the cat cat Reference1: There is a cat on the mat Reference2: The cat is on the mat ``` 計算BLEU的步驟以及直覺如下,先以unigram為例 ``` 1. 計算Candidate中所有單詞的出現頻率, 此處為 {the: 7, cat: 1} 2. 計算所有unigram在每一句referece中出現的頻率, 此處應為: {the in Ref1: 1, the in Ref2: 2, cat in Ref1: 1, cat in Ref2: 1} 3. 保留每一個unigram在references中最大的頻數,得到: {the in Ref2: 2, cat in Ref1: 1} 之所以保留最大頻數,我認為體現了“寬容”的思想, 不同的reference由不同的翻譯人員給出,體現了翻譯人員不同的風格,在這種多風格中選取和candidate最相似的 即可,不必吹毛求疵 4. 'Clipped' Step 這一步就是抑制第一個例子中的“野路子” the = min(the in Ref2, the) = (2,7) = 2 cat = min(the in Ref1, cat) = (1,1) = 1 5 計算precision p = (2+1)/(7+1)=3/8 ``` 計算bigram, trigram的思路也和unigram一樣,在原來的論文中,作者提到: ``` A translation using the same words (1-grams) as in the references tends to satisfy adequacy. The longer n-gram matches account for fluency. ``` unigram用來衡量adequacy, 有兩種情況需要考慮: 1. 如果candidate的翻譯結果多出了許多不曾出現在references中的單詞,則我們的p會很小,BLEU做出了懲罰。 2. 如果candidate的翻譯結果少了很多單詞,我們的p可能會是1!考慮如下例子: ``` Candidate: the Reference1: The cat is on the mat ``` p = min(1,2)/1 = 1 因此到目前為止的BLEU需要繼續調整。 而bigram,trigram等等則是衡量文章的通順性,並且unigram中存在的問題在multi gram的情況下依然存在 ## 2.3 多個candidate+多個reference的BLEU初步正式化 論文中把多個candidate所組成的document成為corpus.儘管是多個candidate,但是每個candidate本身對應了多個reference,因此2.3只是2.2的簡單擴充而已。 **對於n-gram的BLEU的初步計算公式如下:** $$ p_n = \frac{\sum_{C\in{Candidates}}\sum_{n-gram\in{C}}Count_{clip}(n-gram)}{\sum_{C'\in{Candidates}}\sum_{n-gram'\in{C'}}Count(n-gram')} $$ 其中: $$ Count_{clip}(n-gram) = min(freq_{C}(n-gram),max_{R\in references}freq_{R}(n-gram)) $$ $ freq_{C}(n-gram)$ 是給定n-gram在C中出現的頻率 $freq_{R}(n-gram)$是給定n-gram在R中出現的頻率 $Count(n-gram')$是指給定n-gram'在C'中出現的頻率 **結合多個n-gram:** 如2.1中提到的,不同的n-gram具有不同的作用,因此需要綜合考慮 $$ exp(\sum_{n=1}^N\omega_{n}log(p_{n})) $$ $log(p_n)$的原因是:在論文實證的過程中發現隨著n-gram中n的增加,$p_n$的下降呈現指數型,因此簡單的平均$p_n$會讓指標過度傾向於1-gram,所以需要對數化的調整。 $w_n$在論文中為1/N。並且論文中的經驗結果表明N=3-5已經足夠反應句子的翻譯質量了。 ## 2.4 對翻譯句子長度的調整 我們在2.2中提到了一個極端的例子,candidate長度極短卻獲得了$p_1$=1的效果,因此需要對翻譯句子的長度做出懲罰。懲罰分為兩種:過長和過短。過長的句子實際上已經通過$p_n$被懲罰了,過長的句子會導致$p_n$中的分母很大,從而使得BLEU整體較小。故僅考慮句子過短的情況,原文中對句子過短卻依然取得很高$p_n$的情況成為**The trouble with recall**,實際上就是references(實際為正例)中僅有很小一部分出現在candidate(預測為正例)中。 依然假設我們的corpus中有多個candidate,每個candidate有多個reference, 論文中把references 中最接近candidate長度的那個reference的長度稱為**“best match length ”** 直覺上,可以計算corpus中每一個candidate的對應懲罰,求和後取平均。但是論文認為這樣做對短句子的懲罰過大。這裡也體現了BLEU的寬容思想,我們可以容忍corpus中存在一些短句子,但是如果每一句句子都過短,則無法容忍。 首先計算effective referecne length(r), 即把每一個candidate對應的best match length相加求和 再次計算corpus中所有candidate的長度之和c 懲罰項: $$ BP=\left\{ \begin{array}{rcl} 1 &