机器翻译指标或者image caption指标BLEU的原理和计算

参考:

《BLEU: a Method for Automatic Evaluation of Machine Translation》

计算方法(The Baseline BLEU Metric):

1、precision measure

为了计算精度,只需计算任何参考翻译中出现的候选翻译词(unigrams)的数量,然后除以候选翻译中的总词数。

2、Modified n-gram precision

先对原理总介绍,然后2.1-2.3分别介绍Modified n-gram precision在三种场景下的应用。

首先计算一个单词在任何单个参考翻译中出现的最大次数。 接下来,将每个候选词的总计数除以其最大参考计数,将这些截断的计数相加,然后除以候选词的总数(未截断)。

注:n-gram指的是将n个词作为一个整体,1-gram指的是一个词,2-gram指的是两个连起来的词。对应的matrix就是BLEU-n。BLEU-1更注重单个词的出现,BLEU-4更注重句子的流畅性。

总结:首先提出一种基本的计算方法,然后对其进行优化。优化的思路很重要(举极限的反例来证明):使用1的方法有一个问题,会导致机器翻译系统可能会过度生成“合理”的单词,导致翻译结果很差但精度很高,例如下面的示例2.1:如果使用1的方法计算:BLEU-1 = 7/7。使用2的方法计算:BLEU-1 = 2/7。显然candidate是很差的,使用2的计算结果更合理。

'''
示例2.1:
Candidate: the the the the the the the.
Reference 1: The cat is on the mat.
Reference 2: There is a cat on the mat.
'''
2.1.1 Modified n-gram precision on blocks of text(解决一个句子翻译生成多个candidate sentence的情况怎么计算)

我们如何在多句子测试集上计算修改后的 n-gram 精度? 尽管通常在整个文档的语料库上评估 MT 系统,但我们的基本评估单位是句子。 一个源句可能会翻译成许多目标句,在这种情况下,我们会滥用术语,将相应的目标句称为“句子”。 我们首先逐句计算 n-gram 匹配。 接下来,我们将所有候选句子的裁剪 n-gram 计数相加,然后除以测试语料库中候选 n-gram 的数量,以计算整个测试语料库的修正精度分数 。

注:BLEU 只需要在对测试语料库进行平均时匹配人类判断; 单个句子的分数通常与人类的判断不同。 例如,如果所有参考文献碰巧读作“东亚经济”,则产生流利短语“东亚经济”的系统会因较长的 n-gram 精度而受到严重惩罚。 BLEU 成功的关键在于所有系统都被同等对待,并且使用了多个风格不同的人工翻译,因此这种效果在系统之间的比较中被抵消了。

2.1.2 Ranking systems using only modified n-gram precision(使用不同水平的翻译系统和人的翻译结果等级,从而证明BLEU的可行性)

为了验证修改后的 n-gram 精度区分非常好的翻译和差的翻译,通过计算一个(好)人工翻译和一个标准(差)机器翻译系统输出的修改后精度数,每个 127 个参考翻译使用 4 个参考翻译源语句。平均精度结果如图 1 所示。 区分人(高精度)和机器(低精度)的区分度很强。随着我们从 unigram 精度到 4-gram 精度,差异变得更大。似乎任何单个 n-gram 精度分数都可以区分好翻译和坏翻译。

然而,该指标还必须可靠地区分质量差异不大的翻译。此外,它必须区分两种不同质量的人工翻译。随着机器翻译接近人工翻译质量,后一项要求确保了指标的持续有效性。为此,我们获得了一个对源语言(中文)和目标语言(英语)都缺乏母语能力的人的人工翻译。为了比较,我们获得了以英语为母语的人对相同文档的人工翻译。我们还获得了三个商业系统的机器翻译。这五个“系统”——两个人和三个机器——根据两个参考专业人工翻译进行评分。平均修改后的 n-gram 精度结果如图 2 所示。 排名:H2(Human-2)优于H1(Human1),H1和S3(Machine/System-3)质量有较大下降。 S3 看起来比 S2 好,而 S2 又比 S1 好。值得注意的是,这与人类法官分配给这些“系统”的等级顺序相同,我们稍后会讨论。虽然在任何单个 n-gram 精度中似乎都有足够的信号,但将所有这些信号组合成单个数字度量会更加稳健。

2.1.3 Combining the modified n-gram precisions(解决到底使用n-gram的n取多少最合适的问题)

我们应该如何结合各种 n-gram 大小的修改精度? 修正后精度的加权线性平均值为 5 个系统带来了令人鼓舞的结果。 然而,如图 2所示,修改后的 n-gram 精度大致随 n 呈指数衰减:修改后的 unigram 精度远大于修改后的 bigram 精度,而修改后的 bigram 精度又远大于修改后的 trigram 精度。 一个合理的平均方案必须考虑到这种指数衰减; 修正精度的对数的加权平均值满足了这一要求。 BLEU 使用具有统一权重的平均对数,这相当于使用修改后的 n-gram 精度的几何平均值。虽然3和5也取得不错的效果大门时,在经验上使用最大 n-gram 阶数 4 获得与单语言(母语)人类判断的最佳相关性

2.2 BLEU指标限制翻译的句子长度

评估指标应该强制候选翻译既不能太长也不能太短。 在某种程度上,n-gram 精度已经做到了这一点。 N-gram 精度会惩罚未出现在任何参考翻译中的候选词中的虚假词(避免过长)。 此外,如果一个词在候选翻译中出现的频率高于其最大引用计数,则修改后的精度会受到惩罚。 这会奖励使用一个词的次数,并惩罚使用一个词的次数超过它在任何参考文献中出现的次数。 但是,仅修改后的 n-gram 精度无法强制执行适当的翻译长度,如下面的简短而荒谬的示例所示。

'''
Reference 1: It is a guide to action that ensures that the military will forever heed Party commands. Reference 2: It is the guiding principle which guarantees the military forces always being under the command of the Party. Reference 3: It is the practical guide for the army always to heed the directions of the party.
'''
2.3计算细节:

我们取测试语料库修正精度分数的几何平均值,然后将结果乘以指数简洁惩罚因子。 目前,大小写折叠是在计算精度之前执行的唯一文本规范化。 我们首先计算修改后的 n-gram 精度的几何平均值 pn,使用长度为 N 的 n-gram 和正权重 wn 总和为 1。 接下来,设 c 为候选翻译的长度,r 为有效参考语料库长度。 我们计算简洁惩罚 BP:

详解BLEU的原理和计算相关推荐

  1. 初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程

    @TOC初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程 [1]什么是windows API Windows API 中文翻译过来就是windows应用程序接口(Applica ...

  2. ArrayList 扩容详解,扩容原理

    ArrayList 扩容详解,扩容原理 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长. ArrayList不是线程安全的,只能用在单线程环境下. 实现了Serializable ...

  3. 【转详解步进电机工作原理】

    详解步进电机工作原理[转自知乎gk-auto] 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响, ...

  4. FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社

    大家好,我的第一本书正式出版了,可以在京东各大店铺抢购哦. <FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社> 京东自营链接:https://item.jd.com/13 ...

  5. 多维度详解redis以及原理实现,结构与应用分析

    6个方面了解redis应用及其实现原理 1.redis数据存储概述 2.string结构以及应用 3.list结构以及应用 4.hash结构以及应用 5.set结构以及应用 6.zset结构以及应用 ...

  6. 详解帧中继工作原理及作用

    详解帧中继工作原理及作用 帧中继特点 帧中继工作原理 帧中继的作用 帧中继习题 帧中继(FrameRelay)是一种用于连接计算机系统的面向分组的通信方法.它主要用在公共或专用网上的局域网互联以及广域 ...

  7. 【OpenCV 4开发详解】边缘检测原理

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  8. 万字详解Docker架构原理、功能及使用

    一.简介 1.了解Docker的前生LXC LXC为Linux Container的简写.可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性.相当于C++中 ...

  9. 详解 OpenCV 透视变换原理 及 实例

    OpenCV提供了两种图片变换的方式:仿射变换和透视变换,两者的区别很容易区分, 前者是将矩形的图片变成平行四边形 后者是将图片变成梯形 这两种变换虽然都有各自的应用场景,但在实际的图片变换中由于透视 ...

最新文章

  1. Swift学习——Swift解释特定的基础(七)
  2. flask urllib上传图片
  3. Linq TO SQL 虽好,但不要滥用
  4. android opencv 水印,关于opencv对图片添加水印
  5. 数据结构——树的存储结构孩子表示法
  6. php study 直接显示代码_《细说PHP》第四版 样章 第18章 数据库抽象层PDO 12
  7. 一文带你了解数仓智能运维框架
  8. 软件需求文档范例_【设计API系列】 一文了解常见的事件驱动APIs范例
  9. 机器学习-吴恩达-笔记-8-支持向量机
  10. davfs挂载与使用缺陷
  11. Java hook qpi_Java中内部类对象的创建以及hook机制
  12. 函数的参数,参数为数组
  13. 类成员指针——偏移量
  14. Spring 揭密——第 1 章 Spring 框架的由来
  15. Java工程师需要掌握哪些知识和专业技能呢?
  16. 泱脏武器库之 CVE 2021-4034 Polkit 提权小结
  17. 一文了解地理数据和三维地理信息系统
  18. html动态背景个人引导页,Web前端动态背景特效合集
  19. C语言回文平方数,C语言实例 回文数
  20. nnet3-compute计算chain前向传播概率矩阵(声学模型输出)

热门文章

  1. linux软连接解决文件目录空间不足的问题
  2. 递归与分形(二)--谢尔斯宾三角形,谢尔斯宾地毯,门格海绵
  3. python绘制有箭头的直线_Python绘图库Matplotlib,如何绘制箭头?
  4. 苹果手机怎么能查看网页源代码
  5. Gitlab CI permission denied(权限无法访问)
  6. js正则验证姓名并中间带点
  7. 2021年烟花爆竹产品涉药免费试题及烟花爆竹产品涉药模拟试题
  8. Web小案例——智能表单
  9. php获取当前网速,关于网络,带宽,网速,延迟的一些知识
  10. 阿里p8耗时一个月整理的面试突击手册助力金三银四