前言 文本生成目前的一大瓶颈是如何客观,准确的评价机器生成文本的质量。一个好的评价指标(或者设置合理的损失函数)不仅能够高效的指导模型拟合数据分布,还能够客观的让人评估文本生成模型的质量,从而进一步推动text generation 商业化能力。
然而由于语言天生的复杂性和目前技术限制,我们目前还没有一个完美的评价指标。
本文就三方面对文本生成的评价指标介绍:
- 介绍了以BLEU为代表的基于统计的文本评价指标
- 就 data to text 和 image caption 进一步介绍了其特有的评价模式
- 基于BERT等预训练模型的文本评价指标 基于词重叠率的方法 机器翻译 & 摘要 常用指标 基于词重叠率的方法是指基于词汇的级别计算模型的生成文本和人工的参考文本之间的相似性,比较经典的代表有BLEU、METEOR和ROUGE,其中BLEU和METEOR常用于机器翻译任务,ROUGE常用于自动文本摘要。
- 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 表示翻译的流畅程度。 不过BLEU对词重复和短句有着非常不好的表现,所以改进的BLEU分别使用 改进的多元精度(n-gram precision) 和短句惩罚因子进行了优化。
- 改进的多元精度(n-gram precision) 假设机器翻译的译文C和一个参考翻译S1如下:
则可以计算出 1-gram,2-gram,... 的精确率(参考文献里写的是准确率(accuracy),我理解是写错了,此处应该是精确率(precision))
p1 计算 a cat is on the table 分别都在参考翻译S1中 所以 p1 = 1
p2 (a, cat)在, (cat is) 没在, (is on) 没在, (on the) 在, (the table)在 所以p2 = 3/5
p3 (a cat is)不在, (cat is on)不在, (is on the)不在, (on the table)在 所以 p3 = 1/4
依次类推(上面的在或者不在, 说的都是当前词组有没有在参考翻译中)。直接这样算, 会存在很大的问题. 例如:
这时候机器翻译的结果明显是不正确的,但是其 1-gram 的 Precision 为1,因此 BLEU 一般会使用修正的方法。给定参考译文S1,S2, ...,Sm,可以计算C里面 n 元组的 Precision,计算公式如下:
2. 惩罚因子 上面介绍了 BLEU 计算 n-gram 精确率的方法, 但是仍然存在一些问题,当机器翻译的长度比较短时,BLEU 得分也会比较高,但是这个翻译是会损失很多信息的,例如:
- 它的易于计算且速度快,特别是与人工翻译模型的输出对比;
- 它应用范围广泛,这可以让你很轻松将模型与相同任务的基准作对比。 4. 缺点
- 它不考虑语义,句子结构
- 不能很好地处理形态丰富的语句(BLEU原文建议大家配备4条翻译参考译文)
- BLEU 指标偏向于较短的翻译结果(brevity penalty 没有想象中那么强) ROUGE 英文全称Recall-Oriented Understudy for Gisting Evaluation,可以看做是BLEU 的改进版,专注于召回率而非精度。换句话说,它会查看有多少个参考译句中的 n 元词组出现在了输出之中。
ROUGE大致分为四种(常用的是前两种):
- ROUGE-N (将BLEU的精确率优化为召回率) *ROUGE-L (将BLEU的n-gram优化为公共子序列) *ROUGE-W (将ROUGE-L的连续匹配给予更高的奖励) *ROUGE-S (允许n-gram出现跳词(skip)) ROUGE 用作机器翻译评价指标的初衷是这样的:在 SMT(统计机器翻译)时代,机器翻译效果稀烂,需要同时评价翻译的准确度和流畅度;等到 NMT (神经网络机器翻译)出来以后,神经网络脑补能力极强,翻译出的结果都是通顺的,但是有时候容易瞎翻译。
ROUGE的出现很大程度上是为了解决NMT的漏翻问题(低召回率)。所以 ROUGE 只适合评价 NMT,而不适用于 SMT,因为它不管候选译文流不流畅
1. ROUGE-N “N”指的是N-gram,其计算方式与BLEU类似,只是BLEU基于精确率,而ROUGE基于召回率。
公式的分母是统计在参考译文中 N-gram 的个数,而分子是统计参考译文与机器译文共有的 N-gram 个数。