机器翻译自动评估-BLEU算法详解

机器翻译自动评估-BLEU算法详解

      版权声明:本文为博主原创文章,未经博主允许不得转载。          https://blog.csdn.net/qq_31584157/article/details/77709454        </div><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css"><div id="content_views" class="markdown_views prism-atom-one-dark"><!-- flowchart 箭头图标 勿删 --><svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg><p></p><h3 id="bleu综述"><a name="t0"></a><strong>BLEU综述:</strong></h3><h3 id="title"></h3><p></p>

  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. 我们下面计算的比值,说白了就是精度,记做pnpn, 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。
  
  分子是一个候选翻译的单词有多少出现在参考翻译中(出现过就记一次,不管是不是在同一句参考翻译里头),分母是这个候选翻译的词汇数。
  请看下面这个错误案例:

Candidatethethethethethethethe
Reference1thecatisonthemat
Reference2thereisacatonthemat

计算过程:

  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)Countwi,jclip=min(Countwi,Refj_Countwi)
在所有参考翻译里的综合截断计数;

  仍然看上表的举例,Ref1_Countthe=2Ref1_Count′the′=2
  
  分母不变,仍是候选句子的n-gram个数。这里分母为7。
  

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

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

  
  其实 改进的n-gram精度得分可以用了衡量翻译评估的充分性和流畅性两个指标:一元组属于字符级别,关注的是翻译的充分性,就是衡量你的逐字逐字翻译能力; 多元组上升到了词汇级别的,关注点是翻译的流畅性,词组准了,说话自然相对流畅了。所以我们可以用多组多元精度得分来衡量翻译结果的。
  
  

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

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

pn=ccandidatesngramcCountclip(ngram)ccandidatesngramcCountclip(ngram)pn=∑c∈candidates∑n−gram∈cCountclip(n−gram)∑c∈candidates′∑n−gram∈c′′Countclip(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=1Nn=1wnexp(i=1Nwnlogpn)=exp(1Ni=1Nlogpn)pave=∏n=1Npnwn∑n=1Nwn=1∑n=1Nwnexp(∑i=1Nwn∗logpn)=exp(1N∗∑i=1Nlogpn)
为赋予的权重。

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

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

  

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

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

Candidatethecat
Reference1thecatisonthemat
Reference2thereisacatonthemat

  显然,这时候选翻译的精度得分又是1(12+1212+12

  见上式,rr
  通过一次次的改进、纠正,这样的BLEU算法已经基本可以快捷地给出相对有参考价值的评估分数了。做不到也不需要很精确,它只是给出了一个评判的参考线而已

  

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480541.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 利用Lattice LSTM的最优中文命名实体识别方法

本文转载自公众号&#xff1a;机器之心。选自arXiv作者&#xff1a;Yue Zhang、Jie Yang机器之心编译参与&#xff1a;路、王淑婷近日&#xff0c;来自新加坡科技设计大学的研究者在 arXiv 上发布了一篇论文&#xff0c;介绍了一种新型中文命名实体识别方法&#xff0c;该方法利…

最全MySQL面试60题和答案

Mysql中有哪几种锁&#xff1f; 1.表级锁&#xff1a;开销小&#xff0c;加锁快&#xff1b;不会出现死锁&#xff1b;锁定粒度大&#xff0c;发生锁冲突的概率最高&#xff0c;并发度最低。 2.行级锁&#xff1a;开销大&#xff0c;加锁慢&#xff1b;会出现死锁&#xff1b;…

中文幽默语料库构建与计算项目(幽默等级识别,幽默类型识别,隐喻类型识别,隐喻情绪识别)

ChineseHumorSentiment chinese Humor Detection or Computation based on corpus and nlp methods, 基于语料库与NLP方法的中文幽默计算与检测项目 项目地址:https://github.com/liuhuanyong/ChineseHumorSentiment 项目介绍 幽默多指令人发笑的品质或者具有发笑的能力&…

账户Account类文件编写(static成员使用)

static类成员是该类所有成员共享一份的数据&#xff0c;一处修改了&#xff0c;全部变更&#xff1b; static成员函数只能调用static成员数据&#xff1b; static const整形int&#xff0c;char&#xff0c;可以在类内声明和初始化&#xff0c;类外不必再声明&#xff08;跟编译…

百度机器阅读理解比赛赛后总结

百度机器阅读理解比赛赛后总结 <!-- 文章内容 --><div data-note-content"" class"show-content"><div class"show-content-free"><p>2018年4-5月间&#xff0c;笔者参加了百度举办的<a href"https://links.jia…

课程 | 《知识图谱》第二期重磅来袭!

参团&#xff0c;咨询&#xff0c;查看课程&#xff0c;请点击【阅读原文】↓↓

All in Linux:一个算法工程师的IDE断奶之路

一只小狐狸带你解锁 炼丹术&NLP 秘籍在合格的炼丹师面前&#xff0c;python可能被各种嫌弃前不久卖萌屋的lulu写了一篇vim的分享《算法工程师的效率神器——vim篇》&#xff0c;突然想起来自己也有一篇攒了几年灰的稿子&#xff0c;在小伙伴的怂恿下跟小夕强行翻新了一下&a…

2019 阿里Java 4轮面试题,含必考题答案参考!

Java一面 hashmap源码问题 HashMap底层结构 put操作讲一下 HashMap、HashMap如何保证线程安全、ConcurrentHashMap JVM有哪些回收算法&#xff0c;对应的收集器有哪些&#xff1f; jvm g1的内存模型讲一下&#xff0c;G1和CMS收集器的区别&#xff1f;以及G1收集器对CMS的改…

技术动态 | 自底向上构建知识图谱全过程

本文转载自公众号&#xff1a;阿里技术。“The world is not made of strings , but is made of things.”——辛格博士&#xff0c;from Google.知识图谱&#xff0c;是结构化的语义知识库&#xff0c;用于迅速描述物理世界中的概念及其相互关系&#xff0c;通过将数据粒度从d…

数据结构--单链表single linked list数据结构C++实现

2018年2月开始学习的 C Primer&#xff0c;到今天2019年3月已经整整一年了&#xff0c;非常感谢在一起交流的小伙伴&#xff0c;是你们的无私帮助和分享使得我能跨越很多技术的坑&#xff0c;感谢你们&#xff01;期待我们2019年一起拿下《数据结构与算法》以及Python入门。 …

搜索中的 Query 理解及应用

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&#xf…

GAN原理,优缺点、应用总结

<h1 class"csdn_top" id"gan原理优缺点应用总结"><a name"t0"></a>GAN原理&#xff0c;优缺点、应用总结</h1> <br> 本文已投稿至微信公众号–机器学习算法全栈工程师&#xff0c;欢迎关注</article><p&…

java程序员进阶必读书单

以下是我推荐给Java开发者们的一些值得一看的好书&#xff0c;从java基础开始到高级&#xff0c;以及从高级进阶到架构等的书单。 基本都是经典之作&#xff0c;可以利用工作闲暇的时间&#xff0c;系统阅读。 本文作者&#xff0c;优知学院创始人 陈睿 优知学院是IT人在线进…

胡伟 | 面向多实体人机协作消解的对比表生成自动化方法

众包实体消解实体消解&#xff08;Entity Resolution&#xff0c;简称ER&#xff09;旨在发现不同知识图谱中指称真实世界相同对象的实体。众包实体消解&#xff08;Crowd ER&#xff09;在使用机器的基础上&#xff0c;还使用人来完成实体消解任务。众包实体消解的一个常见流程…

poj 1250 解题(链表法)

http://poj.org/problem?id1250 题意大意 住宿床位有限&#xff0c;按顺序入住&#xff0c;用ABC等代表单个人&#xff0c;第1次出现代表入住&#xff0c;第2次出现代表离开 输入&#xff1a; 1 ABCBCA 代表有1个床位&#xff0c; A入住&#xff0c; B入住&#xff0c;入住…

怎样高效阅读一份深度学习项目代码?

犹豫很久要不要把读代码这个事情专门挑出来写成一篇推文。毕竟读代码嘛&#xff0c;大家可能都会读。而且笔者个人读的和写的代码量也并不足以到指导大家读代码的程度。但笔者还是决定大胆地写一点&#xff1a;就当是给自己设立今后读代码的标准&#xff0c;也将一些之前未能践…

令人拍案叫绝的Wasserstein GAN

本文后续&#xff1a;Wasserstein GAN最新进展&#xff1a;从weight clipping到gradient penalty&#xff0c;更加先进的Lipschitz限制手法 在GAN的相关研究如火如荼甚至可以说是泛滥的今天&#xff0c;一篇新鲜出炉的arXiv论文《Wasserstein GAN》却在Reddit的Machine Learnin…

java架构师进阶之独孤九剑:数据结构以及书籍推荐

这是整个java架构师连载系列&#xff0c;分为9大步骤&#xff0c;我们现在还在第一个步骤&#xff1a;程序设计和开发->数据结构与算法。 “ 如果说 Java 是自动档轿车&#xff0c;C 就是手动档吉普。数据结构呢&#xff1f;是变速箱的工作原理&#xff0c; 你完全可以不…

中文文本蕴含计算项目(88万中文文本蕴含数据集+中文文本蕴含模型)

ChineseTextualInference ChineseTextualInference project including chinese corpus build and inferecence model, 中文文本推断项目,包括88万文本蕴含中文文本蕴含数据集的翻译与构建,基于深度学习的文本蕴含判定模型构建. 项目地址:https://github.com/liuhuanyong/Chine…

论文浅尝 | 打通推荐系统与知识图谱: 第一个公开的大规模链接数据集合

本文转载自&#xff1a;RUC智能情报站&#xff0c;知乎专栏链接&#xff1a;https://zhuanlan.zhihu.com/RucAIBox前言&#xff1a;近年来&#xff0c;知识图谱&#xff08;KB&#xff09;被广泛应用于推荐系统&#xff08;RS&#xff09;&#xff0c;但尚未有公开将推荐系统物…