NLP笔记:生成问题常用metrics整理

  • NLP笔记:生成问题常用metrics整理
    • 1. 生成问题的评估方法
    • 2. 常用metrics
      • 1. ppl
      • 2. bleu
        • 1. 句长惩罚因子BP
        • 2. n-gram字符匹配精度与权重因子
        • 3. 样例说明
      • 3. rouge
      • 4. bleurt
    • 3. 参考链接

1. 生成问题的评估方法

nlp中的生成问题大致可以涵盖以下一些部分:

  1. 语言模型;
  2. 文本翻译;
  3. 内容概括 & 扩写;
  4. ……

本质而言,他就是要对一段机器生成的文本来评估其生成质量的好坏。

有关这部分内容,他又可以分为有监督的和无监督的,前者已经有了一些参考的生成结果可以比对,后者完全没有任何参考文本,只能通过文本本身来评估生成质量。

其中有监督的部分我们还可以将其进一步细分,传统的评估方式大都是通过纯字符匹配的方式来对生成文本与参考文本进行比对,比如bleu,rouge等,其优点在于速度快,但是缺点在于无法真正理解语意,因此与真实的质量评估上总是存在一个不小的gap。

基于此,后来就衍生出了使用模型本身来对文本质量进行评估的评估模型,比如bleurt,他们在文本评估方面会更为准确,但是需要大量的训练数据,而且运行起来速度会比较慢。

综上所述,我们可以将其概括为如下:

  1. 无监督
    • ppl
  2. 有监督
    1. 纯字符匹配方式
      • bleu
      • rouge
      • ……
    2. 模型指标学习
      • bleurt
      • ……
  3. 人工评判方式

下面,我们来逐次对其进行考察。

2. 常用metrics

1. ppl

ppl的全称为perplexity,他表示一句话中每一个词出现的概率倒数的均方平均,用公式表达如下:

p p l = ∏ w i 1 p ( w i ∣ w 0 , w 1 , . . . , w i − 1 ) n ppl = \sqrt[n]{\prod_{w_i} {\frac{1}{p(w_i|w_0,w_1,...,w_{i-1})}}} ppl=nwip(wiw0,w1,...,wi1)1

因此,由定义我们就可以看到:

  • 通常而言,ppl越小,表示文本的上下连贯度越高,文本越通顺。

但是,由于n-gram的概率计算复杂度太高,通常而言,我们都会使用马尔可夫假设,即当前输出词汇只与上一个词汇相关,这样就可以大大地简化问题。

但是,同样,这样带来的问题就是,ppl指标只能表征词汇的通顺度,但是在语义上是无法做出什么保证的。

例如:

  • New York is human being.

上面这句话的ppl值大概率就会很小,但是语义上确实完全不合理的。

2. bleu

bleu全称bilingual evaluation understudy,它以及后续的rouge指标是最常用的评价有监督生成问题(比如翻译、内容概括、内容生成等)的自动化统计指标。

他们的核心思想都在于比较生成文本与参考文本间的字符串重合度。

下面,我们首先给出bleu指标的计算公式,

B L E U = B P × e x p ( ∑ n = 1 N w n × l o g p n ) BLEU = BP \times exp(\sum_{n=1}^{N}{w_n \times log p_n}) BLEU=BP×exp(n=1Nwn×logpn)

其中, B P BP BP是句长惩罚因子, w n w_n wn是权重因子, p n p_n pn是n-gram字符匹配精度指标,也是bleu指标中最重要的一个指标。

我们来具体考察一下各个指标的计算。

1. 句长惩罚因子BP

句长惩罚因子 B P BP BP的计算相对简单一些,他的核心思想就是:

  • 参考译文越长, p n p_n pn的评估就会越靠近真实文本质量,惩罚因子就越接近1;
  • 而参考译文越短,生成质量往往越差,且 p n p_n pn往往更容易失真,因此需要乘以一个较小的数使之更加可信。

据此,我们给出BLEU指标中句长惩罚因子BP的公式表达如下:

B P = { 1 c > r e 1 − r / c c ≤ r BP = \begin{cases} 1 & \text{c > r} \\ e^{1- r/c} & \text{c ≤ r} \end{cases} BP={1e1r/cc > rc ≤ r

其中 r r r表示参考文本的文本长度, c c c表示生成文本的文本长度。

2. n-gram字符匹配精度与权重因子

现在,我们来考察n-gram的字符匹配精度计算公式。

他的核心思想是:

  • 统计生成文本中的n-gram词汇在参考文本中出现的比例(精度)。

同样的,我们首先给出定义公式,而后结合定义公式进行考察。

p n = ∑ C ∈ c a n d i d a t e s ∑ n − g r a m ∈ C C o u n t c l i p ( n − g r a m ) ∑ C ′ ∈ c a n d i d a t e s ∑ n − g r a m ∈ C ′ C o u n t ( n − g r a m ) 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)} pn=CcandidatesngramCCount(ngram)CcandidatesngramCCountclip(ngram)

其中, C C C以及 C ′ C' C分别表示生成文本集合中的文本以及参考文本集合中的文本;n-gram表示连续n个词汇, C o u n t Count Count函数就是普通的计数函数, C o u n t c l i p Count_{clip} Countclip函数表示对计数结果进行上截断,只取其在参考译文以及生成译文中的最大值。

3. 样例说明

我们给出一个例子来进行具体的计算说明如下:

  • 生成文本:明天天天气好
  • 参考文本:今天天气真的好

可以计算得到: p 1 = 2 + 1 + 1 6 = 2 3 p_1 = \frac{2 + 1 + 1}{6} = \frac{2}{3} p1=62+1+1=32 p 2 = 2 5 p_2 = \frac{2}{5} p2=52 p 3 = 1 4 p_3 = \frac{1}{4} p3=41 p 4 = 0 3 p_4 = \frac{0}{3} p4=30

另一方面,可以计算 B P = e x p ( 1 − r c ) = e − 1 6 BP = exp(1-\frac{r}{c}) = e^{-\frac{1}{6}} BP=exp(1cr)=e61

总即可以得到:

B L E U = e − 1 6 × 1 4 × ( 2 3 + 2 5 + 1 4 + 0 ) ≃ 0.28 BLEU = e^{-\frac{1}{6}} \times \frac{1}{4}\times (\frac{2}{3} + \frac{2}{5} + \frac{1}{4} + 0) ≃ 0.28 BLEU=e61×41×(32+52+41+0)0.28

3. rouge

rouge指标与bleu指标极其相似,但是,相较于bleu关注于生成的精度,rouge更看重生成的召回。

他的核心思想是:

  • 考察参考文本中的n-gram词汇在模型生成文本中的出现比例。

除此之外,rouge没有句长惩罚因子,他的公式可以直接表达为如下形式:

R o u g e − n = ∑ C ∈ c a n d i d a t e s ∑ n − g r a m ∈ C C o u n t c l i p ( n − g r a m ) ∑ C ′ ∈ r e f e r e n c e s ∑ n − g r a m ∈ C ′ C o u n t ( n − g r a m ) Rouge-n = \frac{\sum_{C \in candidates}\sum_{n-gram \in C}Count_{clip}(n-gram)}{\sum_{C' \in references}\sum_{n-gram \in C'}Count(n-gram)} Rougen=CreferencesngramCCount(ngram)CcandidatesngramCCountclip(ngram)

根据n的取值不同,rouge可以分为rouge-1, rouge-2等等。

另外还有常用的rouge指标还有rouge-l,他是rouge-n的一种变体:

  • 它的分母还是参考文本的长度,他的分子则是生成文本与参考文本的最长公共子序列。

用公式表达如下:

R o u g e − L = L C S ( c a n d i d a t e , r e f e r e n c e ) l e n ( r e f e r e n c e ) Rouge-L = \frac{LCS(candidate, reference)}{len(reference)} RougeL=len(reference)LCS(candidate,reference)

同样的,我们使用上文中的例子来进行计算说明:

  • 生成文本:明天天天气好
  • 参考文本:今天天气真的好

则有:

{ r o u g e − 1 = 4 / 7 ≃ 0.57 r o u g e − 2 = 2 / 6 ≃ 0.33 r o u g e − L = 4 / 7 ≃ 0.57 \left\{ \begin{array}{lr} rouge-1 = 4/7 ≃ 0.57 \\ rouge-2 = 2/6 ≃ 0.33 \\ rouge-L = 4/7 ≃ 0.57 \end{array} \right. rouge1=4/70.57rouge2=2/60.33rougeL=4/70.57

4. bleurt

bleurt来源于文献:BLEURT: Learning Robust Metrics for Text Generation

他的思想事实上也是比较简单的:

  • 经验已经证明大规模的统计机器学习模型具有很强的特征抓取能力,因此,我们就直接基于大量的数据来训练一个生成文本与参考文本间的评估质量模型,用这个模型来进行生成文本质量的评估。

通过这种方式,上述文献中的文本质量评价结果足以碾压bleu以及rouge指标,直逼人类的真实评估水平。

但是,同样的,就如所有的机器学习模型一样,这种方式强烈依赖于训练数据,且评估成本很大,耗时很长,因此目前还没有看到业内有大量的使用迹象。

3. 参考链接

  1. 语言模型评价指标Perplexity
  2. 一种机器翻译的评价准则——Bleu
  3. 机器翻译自动评估-BLEU算法详解
  4. 自动文摘评测方法:Rouge-1、Rouge-2、Rouge-L、Rouge-S
  5. 发布 BLEURT,用于评估自然语言生成模型

你可能感兴趣的:(算法笔记,机器学习,人工智能,自然语言处理)