NLP1:BLEU演算法和N-Gram
今天我來講一下BLEU演算法,因為最近在用這個,所以就任性的寫寫了,我才不會說我是把我的學習筆記直接改改發在公眾號了呢。
1.我叫BLEU,不叫BLUE
我叫BLEU,發音類似於「不勒」,我的全名叫BilingualEvaluationUnderstudy,我的中文名叫「雙語互譯質量評估輔助工具」,我的本質是一種演算法,用來評估一個機器翻譯模型的翻譯質量,即機器與人的翻譯結果(參考答案)的近似程度。
我們一般會有原始句子(source)、翻譯模型翻譯出來的句子(candidate)和參考翻譯(reference)。評估一個翻譯是否準確的過程,就是對比candidate和reference的過程。Reference是事先準備好的準確的翻譯結果,基本是人工翻譯的結果,相當於參考答案。若candidate越接近reference,這個翻譯結果就越準確。所以,在模型訓練中,隨著訓練的進行,我們要不斷進行翻譯結果的評估,希望其能越來越準確。
有人會很無聊的問了,評估質量這種事不是應該讓人去做么?畢竟人可以結合語境獨立思考與判斷啊,你讓一個演算法去代替人做這個事情,豈不是難以考慮的很實際很精確嗎?問題來了,現在一個語料庫提取下來的一部分組成的目錄,裡面起碼有幾萬個文件,每個文件10k行句子,同時還有同樣數目與大小的翻譯結果文件。我給你工資你來幫我人工校驗翻譯結果吧,嘻嘻。只需要一個句子一個句子的看,左邊是原始語言英語,右邊是翻譯的結果漢語,或者倒過來。一個句子要判斷10- 15秒,每小時能有效工作45分鐘,每天工作8小時,中午一小時午休,9點到6點(這種人工校驗,時間長了會死人的)。所以,你每天能評估的數量大約在這個區間:
[(45 x 60 / 15) x 8 = 1440, (45 x60 / 10) x 8 = 2160]
好了,你一天能評估1440到2160個句子。哎呀,一個文本文件都搞不完。
所以我們在人工評估的準確性和評估過程的效率上產生了迷茫,漸漸的,我們開始懷疑人工了,因為它耗時耗力。於是,聰明的我們想:有沒有一個演算法能夠根據參考答案,從而大致評估一個翻譯結果的好壞呢?所以,聰明的我們開始設計演算法了。
2.我叫BLEU,沒有我會是什麼樣子
我們從零開始想像。如果你要評估兩個句子的相似度或接近程度,你會怎麼做?聰明的你可能會想到一個愚蠢的方法(我們假設翻譯過程是中文-英語):
「我們有一個機器譯文的句子C,有兩個個參考答案的句子R1和R2,Wc是C的句子長度(單詞數)。我們對C的每一個單詞,都去尋找它是否在R1和R2中同時出現。於是,你用m表示能夠同時在R1和R2中找到的C中的單詞數目。最後你決定,用P= m/Wc的比值來描述C和參考答案的接近程度,即翻譯的準確性。這個比值P如果很大,說明機器翻譯的結果中,賊多的單詞都能在標準答案裡面找到,美滋滋啊。」
讓聰明的我來指出這個方法的漏洞吧。假設我們的中文句子是「萌萌的小屁股」,參考譯文是「cutesmall hip」和「kawayi small hip」,我們的翻譯模型得到了這個結果:
「hip hip hip」
我們來計算一下P把。先統計Wc,翻譯結果的句子有三個單詞,長度是3,所以Wc= 3。再來看m,對於翻譯結果,它的每一個單詞都能在標準答案里找到,所以m就是等於翻譯結果的長度,m= 3。所以P= 3/3 = 1 = 100%。哇!演算法表明這個翻譯結果很完美,沒有錯誤,完全一致。於是我們得到了一個結論:
萌萌的小屁股=三個屁股
顯然這個方法不能正確評估翻譯質量,聰明的你又會想到一個不那麼愚蠢的想法了:
「我們取一個最小值吧,我們去尋找一個值m,它的描述是翻譯結果中有幾個詞同時出現在了所有的參考翻譯中。同時我們記錄每個參考翻譯裡面含有的機器翻譯結果的詞的數目,尋找最大值,記為N。我們取m和N的最小值,然後算比值:P= Min(m, N) / Wc。
對於上面小屁股的例子,m的值還是3。對於N呢,兩個參考譯文都有hip這個詞,即都包含了一個翻譯結果的詞,所以取最大值就是1,即N是1。所以P= Min(3, 1) / 3 = 1/3。這個結果好多了,說明「hip hip hip」同「cutesmall hip」與「kawayi small hip」的相似度是1/3.」
用單詞衡量相似度感覺總會差點什麼,因為語言的多樣性太大,會有很多特殊情況。所以,聰明我的來推薦一個更好的方法吧,它就是N-Gram。
3.我叫BLEU,這是我媳婦@N-Gram
假設我們有一個句子:
Nightgathers and now my watch begins.
我們完全可以記錄它的單詞頻率,或者,我們可以一次記錄幾個單詞。例如,我們每次取兩個單詞(bigram)記錄(空格分隔),即:
Nightgathers | gathers and | and now | now my | my watches | watch begins
所以我們可以對於這個句子記錄6個單片語合。
寫累了,休息休息,先這樣吧。


TAG:Vin在英國 |