BLEU综述:

  BLEU实质是对两个句子的共现词频率计算,但计算过程中使用好些技巧,追求计算的数值可以衡量这两句话的一致程度。
  BLEU容易陷入常用词短译句的陷阱中,而给出较高的评分值。本文主要是对解决BLEU的这两个弊端的优化方法介绍。
  
  参考文献有二:
  - 《BLEU: a Method for Automatic Evaluation of Machine Translation 》
   - WIKIPEDIA中对BLEU的讲解
  


  

一.BLEU是什么?

  首先要看清楚我们本篇文章的主人公是怎么拼写的——{B-L-E-U},而不是{B-L-U-E},简直了…..我叫了它两天的blue(蓝色)才发现原来e在u之前~~如果真要念出它的名字,音标是这样的:[blε:][blε:](波勒)。
  
  BLEU的全名为:bilingual evaluation understudy,即:双语互译质量评估辅助工具。它是用来评估机器翻译质量的工具。当然评估翻译质量这种事本应该由人来做,机器现在是无论如何也做不到像人类一样思考判断的(我想这就是自然语言处理现在遇到的瓶颈吧,随便某个方面都有牵扯上人类思维的地方,真难),但是人工处理过于耗时费力,所以才有了BLEU算法。

  BLEU的设计思想与评判机器翻译好坏的思想是一致的:机器翻译结果越接近专业人工翻译的结果,则越好。BLEU算法实际上在做的事:判断两个句子的相似程度。我想知道一个句子翻译前后的表示是否意思一致,显然没法直接比较,那我就拿这个句子的标准人工翻译与我的机器翻译的结果作比较,如果它们是很相似的,说明我的翻译很成功。因此,BLUE去做判断:一句机器翻译的话与其相对应的几个参考翻译作比较,算出一个综合分数。这个分数越高说明机器翻译得越好。(注:BLEU算法是句子之间的比较,不是词组,也不是段落)
  
  BLEU是做不到百分百的准确的,它只能做到个大概判断,它的目标也只是给出一个快且不差自动评估解决方案。


二.BLEU的优缺点有哪些?

  优点很明显:方便、快速、结果有参考价值
  
  缺点也不少,主要有:

  1. 1.  不考虑语言表达(语法)上的准确性;
    2.  测评精度会受常用词的干扰;
    3.  短译句的测评精度有时会较高;
    4.  没有考虑同义词或相似表达的情况,可能会导致合理翻译被否定;

三.如何去实现BLEU算法?

  首先,“机器翻译结果越接近专业人工翻译的结果,则越好”——要想让机器去评判一句话机器翻译好坏,得有两件工具:

  1. 1. 衡量机器翻译结果越接近人工翻译结果的数值指标;
    2. 一套人工翻译的高质量参考译文;

  其次,规范一下说法——

  1. 1. 对一个句子我们会得到好几种翻译结果(词汇、词序等的不同),我们将这些翻译结果叫做候选翻译集(candidate1, candidate2, ……);
    2. 一个句子也会有好几个参考翻译(reference1, reference2, ……);
    3. 我们下面计算的比值,说白了就是精度,记做pnp_n, n代表n-gram, 又叫做n-gram precision scoring——多元精度得分(具体解释见3.2);
    4. 需要被翻译的语言,叫做源语言(source),翻译后的语言,叫做目标语言(target);
      

3.1 最开始的BLEU算法

  其实最原始的BLEU算法很简单,我们每个人都有意无意做过这种事:两个句子,S1和S2,S1里头的词出现在S2里头越多,就说明这两个句子越一致。就像这样子:similarity(‘i like apple’, ‘i like english’)=2/3。
  
  分子是一个候选翻译的单词有多少出现在参考翻译中(出现过就记一次,不管是不是在同一句参考翻译里头),分母是这个候选翻译的词汇数。
  请看下面这个错误案例:

Candidate the the the the the the the
Reference1 the cat is on the mat
Reference2 there is a cat on the mat

计算过程:

  1. 1. 候选翻译的每个词——the,都在参考译文中出现,分子为7;
    2. 候选翻译一共就7个词,分母为7;
    3. 这个翻译的得分: 7/7 = 1!

  很明显,这样算是错的,需要改进一下。
  
  

3.2 改进的多元精度(n-gram precision)

  专业一点,上面出现的错误可以理解为常用词干扰(over-generate “reasonable”words),比如the, on这样的词,所以极易造成翻译结果低劣评分结果却贼高的情况。
  
  另外,上面我们一个词一个词的去统计,以一个单词为单位的集合,我们统称uni-grams(一元组集)。如果是这样{“the cat”, “cat is”, “is on”, “on the”, “the mat”},类似”the cat”两个相邻词一组就叫做bi-gram(二元组),以此类推:三元组、四元组、…、多元组(n-gram),集合变复数:n-grams。
  
  OK,上述算法问题其实处在分子的计算上,我们换成这个:

Countclipwi,j=min(Countwi,Refj_Countwi)

Count_{w_i,j}^{clip} = min(Count_{w_i},Ref_{j}\_Count_{w_i})

Countclip=max(Countclipwi,j),i=1,2,3......

Count^{clip} = max(Count_{w_i,j}^{clip}), i=1,2,3......
名词解释: 对于一条候选翻译——

  1. 1. CountwiCount_{w_i}: 单词wiw_i的个数,如上表就是对“the”的计数为7;
    2. Refj_CountwiRef_{j}\_Count_{w_i}: 词wiw_i在第个jj参考翻译里出现的次数;
    3. Countclipwi,jCount_{w_i,j}^{clip}:被称之为对于第jj个参考翻译,wiw_i的截断计数;
    4. CountclipCount^{clip}:wiw_i在所有参考翻译里的综合截断计数;

  仍然看上表的举例,Ref1_Count′the′=2Ref_{1}\_Count_{'the'}=2,所以Countclip′the′,1=min(7,2)=2Count_{'the',1}^{clip}=min(7,2)=2,同理Countclip′the′,2=1Count_{'the',2}^{clip}=1,所以综合计数Countclip=max(1,2)=2Count^{clip}=max(1,2)=2。
  
  分母不变,仍是候选句子的n-gram个数。这里分母为7。
  

  :这个地方的 分子截断计数 方法也不唯一,还有这样的:

Ref_Countwi=max(Refj_Countwi),i,j=1,2,3...

Ref\_Count_{w_i}=max(Ref_{j}\_Count_{w_i}),i,j=1,2,3...

Countclip=min(Countwi,RefCountwi)

Count^{clip}=min(Count_{w_i},Ref_Count_{w_i})
  它是先对统计了在各个参考翻译里的最多出现次数 Ref_Count′the′=max(2,1)=2Ref\_Count_{'the'}=max(2,1)=2,然后 Countclip=min(7,2)=1Count^{clip}=min(7,2)=1。
  
  其实 改进的n-gram精度得分可以用了衡量翻译评估的充分性和流畅性两个指标:一元组属于字符级别,关注的是翻译的充分性,就是衡量你的逐字逐字翻译能力; 多元组上升到了词汇级别的,关注点是翻译的流畅性,词组准了,说话自然相对流畅了。所以我们可以用多组多元精度得分来衡量翻译结果的。
  
  

3.3 改进的多元精度(modified n-gram precision)在文本段落翻译质量评估中的使用

  BLEU的处理办法其实还是一样,把多个句子当成一个句子罢了:

pn=∑c∈candidates∑n−gram∈cCountclip(n−gram)∑c′∈candidates∑n−gram′∈c′Countclip(n−gram′)

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_{clip}(n-gram^{'})}
  不要被这里的连加公式给欺骗了,它将候选段落的所有n-gram进行了截断统计作为分子,分母是候选段落的n-gram的个数。
  
  

3.4 将多个改进的多元精度(modified n-gram precision)进行组合

  在3.2提到,uni-gram下的指标可以衡量翻译的充分性,n-gram下的可以衡量翻译的流畅性,建议将它们组合使用。那么,应该如何正确的组合它们呢?
  
  没疑问,加总求和取平均。专业点的做法要根据所处的境况选择加权平均,甚至是对原式做一些变形。
  
  首先请看一下不同n-gram下的对某次翻译结果的精度计算:
  

  事实是这样,随着n-gram的增大,精度得分总体上成指数下降的,而且可以粗略的看成随着n而指数级的下降。我们这里采取几何加权平均,并且将各n-gram的作用视为等重要的,即取权重服从均匀分布。

pave=∏n=1Npwnn−−−−−−⎷∑Nn=1wn=1∑Nn=1wnexp(∑i=1Nwn∗logpn)=exp(1N∗∑i=1Nlogpn)

p_{ave}=\sqrt[\sum_{n=1}^{N}w_{n}]{\prod_{n=1}^Np_{n}^{w_{n}}}=\frac{1}{\sum_{n=1}^{N}w_{n}}exp(\sum_{i=1}^{N}w_{n}*log^{p_{n}})=exp(\frac{1}{N}*\sum_{i=1}^{N}log^{p_{n}})
pnp_{n}为改进的多元精度, wnw_{n}为赋予的权重。

  对应到上图,公式简单表示为:

pave=exp(14∗(logp1+logp2+logp3+logp4))

p_{ave}=exp(\frac{1}{4}*(log^{p_{1}}+log^{p_{2}}+log^{p_{3}}+log^{p_{4}}))
  

3.5 译句较短惩罚(Sentence brevity penalty )

  再仔细看改进n-gram精度测量,当译句比参考翻译都要长时,分母增大了,这就相对惩罚了译句较长的情况。译句较短就更严重了!比如说下面这样:

Candidate the cat
Reference1 the cat is on the mat
Reference2 there is a cat on the mat

  显然,这时候选翻译的精度得分又是1(12+12\frac{1}{2}+\frac{1}{2})!短译句就是这样,很容易得高分…所以必须要设计一个有效的惩罚措施去控制。
  
  首先,定一个名词叫“最佳匹配长度”(best match length),就是,如果译句长度和任意一个参考翻译的长度相同,就认为它满足最佳匹配长度。这种情况下,就不要惩罚了,惩罚因子要设为1。
  

BP={1…………if…c>re1−rc……if…c≤r

BP=\lbrace^{1…………if…c>r}_{e^{1-\frac{r}{c}}……if…c \leq r}

  见上式,rr是一个参考翻译的词数,cc是一个候选翻译的词数,BP代表译句较短惩罚值。由此,最终BLEUBLEU值得计算公式为:
  

BLEU=BP∗exp(∑n=1Nwn∗logpn)

BLEU=BP*exp(\sum_{n=1}^{N}w_{n}*log^{p_{n}})
  通过一次次的改进、纠正,这样的 BLEU算法已经基本可以快捷地给出相对有参考价值的评估分数了。做不到也不需要很精确,它只是给出了一个评判的参考线而已

  

以上就是BLEU知识点的主要内容。欢迎指正、补充。

机器翻译自动评估-BLEU算法详解相关推荐

  1. 机器翻译评测——BLEU算法详解

    BLEU算法介绍和如何计算: 我们先举一个例子来说明: 原文:猫站在地上 机器译文 (candidate):the the the the 人工译文 (reference):The cat is st ...

  2. 机器翻译评测——BLEU算法详解 (新增 在线计算BLEU分值)评估

  3. Apollo6.0代码Lattice算法详解——Part6:轨迹评估及碰撞检测对象构建

    Apollo6.0代码Lattice算法详解--Part6:轨迹评估及碰撞检测对象构建 0.前置知识 1.涉及主要函数 2.函数关系 3.部分函数代码详解 3.1 lattice_planner.cc ...

  4. 自动驾驶算法详解(5): 贝塞尔曲线进行路径规划的python实现

    一.理论知识 1.路径规划定义 路径规划智能物流.无人驾驶等智能领域中重要的组成部分.路径规划的目标是实现从目的地到终点之间寻找一条安全(无碰撞).高效(最短距离或 最短时间)的一条最优或接近最优的路 ...

  5. 自动驾驶算法详解(3): LQR算法进行轨迹跟踪,lqr_speed_steering_control( )的python实现

    前言: LQR算法在自动驾驶应用中,一般用在NOP.TJA.LCC这些算法的横向控制中,一般与曲率的前馈控制一起使用,来实现轨迹跟踪的目标,通过控制方向盘转角来实现横向控制. 本文将使用python来 ...

  6. 排序算法,最全的10大排序算法详解(Sort Algorithm)

    文章目录 排序算法,最全的10大排序算法详解(Sort Algorithm) 排序算法分类 排序算法稳定性 时间复杂度(time complexity) 1#时间复杂度的意义 2#基本操作执行次数 如 ...

  7. Lesson 8.1Lesson 8.2 决策树的核心思想与建模流程CART分类树的建模流程与sklearn评估器参数详解

    Lesson 8.1 决策树的核心思想与建模流程 从本节课开始,我们将介绍经典机器学习领域中最重要的一类有监督学习算法--树模型(决策树). 可此前的聚类算法类似,树模型也同样不是一个模型,而是一类模 ...

  8. 操作系统之银行家算法—详解流程及案例数据

    操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...

  9. FloodFill算法详解及应用

    FloodFill算法详解及应用 啥是 FloodFill 算法呢, 最直接的一个应用就是「颜色填充」,就是 Windows 绘画本中那个小油漆桶的标志,可以把一块被圈起来的区域全部染色. 这种算法思 ...

最新文章

  1. 百度ueditor编辑器动态获取项目根目录
  2. html判断数字数据的大小写,大小写字母,特殊字符,数字,八位及以上四选三,全符合验证...
  3. 【jquery版.net控件—dropdownlist】附源码,欢迎大家指点、指正、拍砖!!!
  4. 【Python3爬虫】为什么你的博客没人看呢?
  5. 2.Java内存回收机制
  6. 哈理工计算机学院保研,哈尔滨理工大学计算机科学与技术学院(专业学位)软件工程保研夏令营...
  7. 《大型网站技术架构:核心原理与案例分析李智慧》pdf版电子书网盘附下载链接+仪式感技术书阅读法
  8. 电力电气自动计算excel表格大全【共46份】
  9. 联通一直显示无法连接服务器是怎么回事,联通宽带无法连接服务器1404
  10. 从自我怀疑到自我实现
  11. java银行账户类_使用Java编写银行账户类(面向对象思考实验)
  12. PSSP Based on Data Partition and Semi-Random Subspace Method 论文笔记
  13. 淘宝订单接口|订单插旗备注,API稳定、QPS高的方案
  14. word英文大写问题解决方案
  15. Navicat连接云端服务器上的MySQL数据库
  16. 【转载】Vue -- 获取点击元素的兄弟元素
  17. 弹出Windows10的虚拟键盘总结
  18. adb模拟三指划动,GKUI19+WHUD,全新智能三屏交互体验
  19. css3图片倾斜3D效果
  20. ChinaJoy现场展示

热门文章

  1. 微信小程序拉起摄像头自定义拍摄界面样式
  2. SQL__存储过程__创建
  3. Java 懒汉式代码
  4. 13.Unity ShaderGraph API(LWRP绘制各种形状,ProceduralSharp)
  5. ubuntu 安装启动 openssh-server
  6. 四边形不等式技巧——分割数组的最大值(画家问题)
  7. js正则验证姓名并中间带点
  8. 5-20日U-file开放注册,以及一大波福利活动正在临近,包含基础版和V+账户升级,免费领取流量包
  9. oracle中dml操作,Oracle的DML操作过程
  10. 数据中心供电方式详解