1. Perplexity (PPL)
假設長度為 $n$ 的句子 $s=(w_1,w_2,...,w_n)$,它的 perplexity 定義為:
先取對數再取指數,則變換為下式:
由公式可知,句子概率越大,語言模型越好,迷惑度越小。
下面是一些 ngram 的概率計算:
2. BLEU
在自然語言處理中的機器翻譯任務中, BLEU非常常見, 它是用於評估模型生成的句子(candidate)和實際句子(reference)的差異的指標.
它的取值范圍在0.0到1.0之間, 如果兩個句子完美匹配(perfect match), 那么BLEU是1.0, 反之, 如果兩個句子完美不匹配(perfect mismatch), 那么BLEU為0.0.
首先給出兩個句子計算 n-gram 精確度的公式:
神經網絡生成的句子是 candidate,給定的標准譯文是 reference。
對於分子:
1)第一個求和符號統計的是所有的 candidate,因為計算時可能有多個句子,
2)第二個求和符號統計的是一條 candidate 中所有的 n−gram,而 表示某一個 n−gram 在 reference 中的個數。
所以整個分子就是在給定的 candidate 中有多少個 n-gram 詞語出現在 reference 中。
對於分母:
前兩個求和符號和分子中的含義一樣,Count(n-gram') 表示 n−gram′在 candidate 中的個數,綜上可知,分母是獲得所有的 candidate 中 n-gram 的個數。
累積 N-Gram
得分指的是為各個 gram 對應的權重加權, 來計算得到一個加權幾何平均(weighted geometric mean). 默認情況下, sentence_bleu()
和corpus_bleu()
都是計算累積的 4-gram BLEU 分數的, 也稱之為BLEU-4.
- BLEU 需要計算譯文 1-gram,2-gram,...,N-gram 的精確率,一般 N 設置為 4 即可,公式中的 Pn 指 n-gram 的精確率。
- Wn 指 n-gram 的權重,一般設為均勻權重,即對於任意 n 都有 Wn = 1/N。
- BP 是懲罰因子,如果譯文的長度小於最短的參考譯文,則 BP 小於 1。
- BLEU 的 1-gram 精確率表示譯文忠於原文的程度,而其他 n-gram 表示翻譯的流暢程度。
一個 nltk 的參考代碼:
from nltk.translate.bleu_score import sentence_bleu reference = [['this', 'is', 'small', 'test']] candidate = ['this', 'is', 'a', 'test'] score = sentence_bleu(reference, candidate) print(score) score = sentence_bleu(reference, candidate, weights=(0.25, 0.25, 0.25, 0.25)) print(score)
3. distinct
在某些生成場景中(對話,廣告文案)等,還需要追求文本的多樣性。李紀為的《A diversity-promoting objective function for neural conversation models》
提出了Distinct指標,后續也被許多人采用。