NLP度量指标BELU真的完美么?

刚接触自然语言处理的朋友通常会问我:当系统的输出是文本,而非对输入文本进行某种分类,如何对该系统进行评估。当模型的输入是文本信息,输出也是文本信息时,我们称之为序列到序列问题,也可称为字符串转换问题。

序列到序列建模是解决NLP中较难任务的核心,它包括:
1、 自动文摘(Text Summarization);
2、 文本简化(Text simplification);
3、 问答(Question answering);
4、 聊天机器人(Chatbots);
5、 机器翻译(Machine translation);

理解序列到序列建模问题相对容易,如何对其进行评价才是难点。

对于刚入门NLP的人来说,选取衡量标准较为困难。目前最流行的评价指标之一BLEU虽然常用,但也存在较大的缺陷。

本文将介绍BELU的工作原理,指出其存在的问题,并探索如何结合自己的工作最大程度规避这些问题。

一个难题

BELU最初是评价机器翻译的指标,所以我们会以翻译(法语—英语)为例进行讲解。

J’ai mangé trois filberts.

下面两句为英语参考译文:

I have eaten three hazelnuts.
I ate three filberts.

假设下面的翻译是由我们训练的神经网络产生。

I ate three hazelnuts.

问题来了:如何给上述翻译结果打分。

要想利用机器学习来建立一个翻译系统,就需要一个实值分数来对其性能进行衡量。如果我们能够获取潜在的最佳得分,便能够计算它与实际值之间的误差。这能够在训练时为系统提供反馈,通过最小实际分数与潜在分数之间的差值来改进翻译模型,并通过查看同一任务上训练过的系统得分比较不同的模型。

假设:如果输出句子中的单词在任何一个参考句出现,就给它打1分,如果没有出现,打0分。为了使计数标准化,使分数始终介于0和1之间。我们可以将某个参考译文中出现的单词总数除以输出句子中的单词总数。我们称该方法为unigram precision

在上面的翻译示例中,“I ate three hazelnuts”,我们能够在输出句子中看到至少一个参考句中的单词,再除以单词数4,该翻译的最终得分为1。但如果换成了下面的句子,该如何打分呢?

Three three three three.

按照刚才的衡量标准,得分依旧为1。但很明显,“I ate three hazelnuts”比“Three three three three”翻译得好。但如何将这一点告知我们正在训练的系统呢?

你可以通过限定单词出现在翻译句子中的最大次数来调整分数。经过调整,“I ate three hazelnuts”计算出的得分仍然为1,而“Three three three three”为0.25。

这解决了单词简单重复的问题,但新问题来了,如果单词的排列是无序的呢?就像下面:

Ate hazelnuts I three

如果继续用刚才的方法,这个句子得分为1。通过计数可以解决这个问题,但此时并非统计单个单词,而是相邻的单词。该方法称为n-grams,n是每组单词的数量,unigrams,bigrams,trigrams以及4-grams分别由一个、两个、三个、四个单词组成。

在这个例子中,我们使用bigrams。通常来讲,BLEU的分数是unigram,bigram,trigram,4-grams的加权平均。为了简便,我们选择bigram,并忽略句子开头和结尾定义边界的单词。基于上述规则,句子排序如下:

[Ate hazelnuts]
[hazelnuts I]
[I three]

如果我们利用bigrams计算句子得分,“I ate three hazelnuts”是0分,“Three three three three”是0分,“I eat three hazelnuts”为1分,而下面这个例子也是0分:

I ate.

很明显这不是我们想要的。解决这个问题的方法是将目前的分数乘以一个简短惩罚因子。通过这个因子,得分高的候选翻译结果,能够同时在长度、词语选择、词语顺序等方面与参考句子匹配。

如果翻译结果比参考句子更长或者一样长,惩罚因子为1。

如果翻译译文长度比参考译文要短,就需要一个惩罚的机制去控制。在示例“I ate”中,句子长度为2个单词,与其最接近的参考句长度为4个单词。其简洁惩罚为0.36,乘以bigram的精度分数1,最终得分降至0.36。

该指标旨在探测输出翻译与参考语句中有多少个n-grams重叠,并乘以简洁惩罚值后输出得分。BLEU由Kishore Papineni, Salim Roukos, Todd Ward, and Wei-Jing Zhu于2002年提出,是NLP中非常流行的度量指标,特别是对于系统输出是文本信息而不是分类的任务,其中包括机器翻译和自然语言生成。它解决了我们在文章开头提出的问题:找到一种方法,告诉我们翻译结果有多“好”,并为其打分。

BLEU存在的问题

在此之前,先概括一下BLEU的优势:

**1、它方便,快速,容易计算,结果比较接近人类评分;
2、在相同的任务中,能够很容易地将模型与基准进行比较;**

但这些便利使得人们过度的使用它,即使在它不是最佳度量标准的任务中也作为了首选。

尽管我们只以一句话为例进行了介绍,但BLEU是一种语料库级别的度量标准。计算语料库中的每个句子的BLEU分数,然后求它们的平均值会使得分数过大。

BLEU的问题主要有以下四点:
1、 不考虑意义;
2、 不直接考虑句子结构
3、 不能很好地处理形态丰富的语言
4、 不能很好的映射到人类判断

BLEU不考虑意义

由于BLEU不考虑意义,我们便不能只使用它对机器翻译进行评估。作为一名机器翻译软件的用户,我更希望准确理解原文的含义,即使翻译的句子中在语法或句法上有所欠缺,只要清楚的表达了原文的意义也能接受。

但BLEU并不考虑意义,它只奖励精确匹配的n-grams。这意味着一个虚词(如“an”或“on”)的差异和一个更重要的与内容相关的词语受到的惩罚是一样的。如果一个译文中有一个完全有效的同义词,只是没有出现在参考译文中,也会受到惩罚,但这并不合理。

以下列句子为例对这个问题进行分析:

Original (French): J’ai mangé la pomme.
Reference translation: I ate the apple.

下列的句子都是BLEU评出的 “糟糕的翻译”:

I consumed the apple.
I ate an apple.
I ate the potato.

但作为机器翻译的使用者,我觉得前面两句也表达清楚了原文的意思,即使它们和参考译文有所出入。第三句话让人不能接受,它完全改变了原文的意思。

NIST方法是在BLEU方法上的一种改进。最主要的是引入了每个n-gram的信息量(information)的概念。BLEU算法只是单纯的将n-gram的数目加起来,而NIST是在得到信息量累加起来再除以整个译文的n-gram片段数目。这样相当于对于一些出现少的重点的词权重就给的大了。因此,在更常见的n-gram(如“of”)上的不匹配将受到更小的惩罚,而在更罕见的n-gram(如“buffalo buffalo”)上的不匹配将受到更大的惩罚。虽然这解决了赋予虚词过多权重的问题,但实际上却使惩罚同义词(如“ambled”代替“walked”)的问题变得更糟,因为这些同义词只出现在更少见的n-gram中,因此惩罚因子会更大。

BLEU不直接考虑句子结构

即使你通过调整词序改变句子的结构,仍然可以获得很高的BLEU分数。

句法是对句子结构的研究,以词作为基本单位,并且各单词按照一定顺序排列。“I saw the dog with the telescope”一句,即能表示“I was using the telescope to look at the dog”,也可以说“the dog had the telescope”。二者的区别通过句子中各单词的排列顺序体现。

在自然语言中,句子的内部结构特别重要,将句子各单词顺序打乱,既破坏了其完整含义,又让人难以理解。

通过parsing可解决该问题。但parsing的计算相当密集,每次求值时必须解析所有输出,增加了开销。

但不考虑句法结构,词序混乱的翻译与意思连贯的翻译获得相同的分数显得极其不合理。

Callison-Burch等人在2006年对此进行了说明:

Orejuela appeared calm as he was led to the American plane which will take him to Miami, Florida.
Orejuela appeared calm while being escorted to the plane that would take him to Miami, Florida.
Orejuela appeared calm as he was being led to the American plane that was to carry him to Miami in Florida.
Orejuela seemed quite calm as he was being led to the American plane that would take him to Miami in Florida.

翻译如下:

Appeared calm when he was taken to the American plane, which will to Miami, Florida.

这个翻译并不完美,它删除了人名,且句子后半段“will”后面没有动词,但它并非一点意义没有,毕竟比下面的翻译好,虽然两句话获得的BLEU分数相同:

which will he was, when taken appeared calm to the American plane to Miami, Florida.

BELU不能很好地处理形态丰富的语言

BELU基于单词级别进行匹配,对于形态丰富的语言,显得并不适用。
语素是语言中最小的音义结合体,它们组合在一起构成单词。以英语单词“cats”中的“s”为例,它告诉我们不止一只猫。有些语言,如土耳其语,在一个单词中有很多的语素,而英语,通常每个单词中的语素很少。

以秘鲁语句为例:

Jawen jemara ani iki.
Jawen jemaronki ani iki.

两句话都是可接受的英语“her village is large”的翻译。其中,以“jemar-”开头的单词在两个句子中有不同的结尾。不同的结尾代表不同的词素,这句话表明说话人很确定这个村子很大。上面那句话是他们去过那里见到了很大的村子,而下面那句话则表示他们是从别人那听说村子很大。

这种特殊类型的语素被称为“证据标记(evidentiality marker)”,这在英语中不存在,而在秘鲁语中,一个句子的语法需要二者中的一个,所以我们的参考译文也应该有其中的一个。但是,如果我们没有在参考句中准确地找到该单词,就会对它进行惩罚,即使这两个句子都很好的表达了英语原句的意思。

BELU不能很好的映射到人类判断

构建机器翻译,聊天机器人以及问答系统最终的目的是希望人们能够使用它们。如果一个系统不能提供有效的输出,就没有意义。所以优化目的是使更多的人喜欢并尽可能多的使用所开发的系统。

BELU首次提出时,作者进行了相关的行为测试,以确保与人类的判断相关。但当研究人员进行更多的实验时,发现BELU分数并不能很好的映射到人类判断。在一些任务中,甚至其它的评价方法更接近人类判断。

Turian在2003年发现,BLEU在机器翻译中与人类判断的相关性最差,F1与人类判断最为相关,NIST次之。Sun在2010年比较了BLEU,GTM以及TER,发现BELU与人类判断的相关性最小。

 


原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

开放华为30年研发能力与实践 助力DevOps真正落地

戳蓝字“CSDN云计算”关注我们哦!作者 | 刘丹受访者 | 汪维敏出品 | CSDN云计算(ID:CSDNcloud)高速的中子撞击U235原子核,使其分裂成两个原子核,释放出巨大能量,同时产生的几个中子再去撞击其它…

Euler 今日问世!国内首个工业级的图深度学习开源框架,阿里妈妈造

千呼万唤始出来!阿里妈妈正式公布重磅开源项目——图深度学习框架Euler。这是国内首个在核心业务大规模应用后开源的图深度学习框架。此次开源,Euler内置了大量的算法供用户直接使用,相关代码已经可在GitHub上进行下载。 图学习和深度学习都…

查询某一支接口,指定时间段的数据 按分钟排序

--查询某一支接口,指定时间段的数据 按分钟排序 select a.servicename,reqdate,substr(reqtime,1,5),count&#xff08;1&#xff09;from 表名 awhere servicename 接口名and reqdate date 2020-06-28and reqtime > 16:00:00and reqtime < 17:00:00group by a.service…

天啦噜!在家和爱豆玩quot;剪刀石头布quot;,阿里工程师如何办到?

如今&#xff0c;90、00后一代成为消费主力&#xff0c;补贴、打折、优惠等“价格战”已很难建立起忠诚度&#xff0c;如何与年轻人建立更深层次的情感共鸣&#xff1f;互动就是一种很好的方式&#xff0c;它能让用户更深度的参与品牌/平台呈现的内容&#xff0c;提供更深层的参…

查看计算机或网络资源列表的命令,dos命令net view图文教程,显示网络计算机列表查看共享资源...

大家好&#xff0c;我是老盖&#xff0c;首先感谢观看本文&#xff0c;本篇文章做的有视频&#xff0c;视频讲述的比较详细&#xff0c;也可以看我发布的视频。今天我们学习net命令中的view&#xff0c;它这个命令可以查看网络计算机列表和共享的资源。直接输入net view可以看到…

使用Opencv构建一个简单的图像相似检测器(MSE、SSIM)

介绍 作为人类&#xff0c;我们通常非常善于发现图像中的差异。例如&#xff0c;常见的游戏——两张图像找不同。现在让我们玩下这个游戏吧&#xff0c;首先让我们看看上面的图像&#xff0c;三十秒内看看是否能够从中找出有什么不同的地方。 答案&#xff1a;水果、冰淇淋和…

云+X案例展 | 民生类:云途腾助力城建开启智慧城轨新征程

本案例是由云途腾投递并参与评选&#xff0c;CSDN云计算独家全网首发&#xff1b;更多关于【云X 案例征集】的相关信息&#xff0c;点击了解详情丨挖掘展现更多优秀案例&#xff0c;为不同行业领域带来启迪&#xff0c;推动整个“云行业”的健康发展。2019年7月&#xff0c;城建…

Apache ActiveMQ 各个版本所依赖的JDK版本

ActiveMQ下载地址 http://activemq.apache.org/download-archives.html ActiveMQ 依赖JDK版本 MQ版本号Build-Jdk依赖JDKapache-activemq-5.0.01.5.0_121.5apache-activemq-5.1.01.5.0_121.5apache-activemq-5.2.01.5.0_151.5apache-activemq-5.3.01.5.0_171.5apache-activem…

关于开源分布式事务中间件Fescar,我们总结了开发者关心的13个问题

开源分布式事务中间件 Fescar 自1月10日上线v0.1版本以来&#xff0c;受到了开发者们的极大关注&#xff08;watch249&#xff0c;star3005&#xff0c;fork649&#xff0c;社区讨论的issue58&#xff0c;数据统计于1月17日14:00&#xff09;&#xff0c;可见&#xff0c;天下苦…

计算机桌面图标变成腾讯图标,桌面图标变成了未知图标

在电脑日常使用生活中&#xff0c;有时候会遇到桌面图标显示不正常&#xff0c;变成未知图标或者白色。遇到这种情况怎么办呢&#xff1f;今天就让我来和大家分享一下我的经验。首先&#xff0c;产生这种问题的原因&#xff0c;有如下几种&#xff1a;• 电脑桌面图标缓存导致的…

云+X案例展 | 民生类:基于AWS PaaS构建基础集团企业级中台

本案例由浪潮投递并参与评选&#xff0c;CSDN云计算独家全网首发&#xff1b;更多关于【云X 案例征集】的相关信息&#xff0c;点击了解详情丨挖掘展现更多优秀案例&#xff0c;为不同行业领域带来启迪&#xff0c;进而推动整个“云行业”的健康发展。上海市基础工程集团有限公…

互联网下半场的角逐,玩转轻资产的大数据服务 | 阿里云栖开发者沙龙大数据专场(北京站)干货集锦

2019年1月18日下午&#xff0c;一个晴冷的冬日&#xff0c;由阿里巴巴MaxCompute开发者社区和阿里云栖社区联合主办的“阿里云栖开发者沙龙大数据技术专场”走近北京联合大学。当日&#xff0c;近200名大数据开发者和爱好者现场参与了本次活动&#xff0c;同时也有1800多名开发…

SLF4J:Failed to load class org.slf4j.impl.StaticLoggerBinder

SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”解决方案&#xff1a; <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-nop</artifactId><version>1.7.5</version></dependency>

日志服务与SIEM(如Splunk)集成方案实战

背景信息 目标 本文主要介绍如何让阿里云日志服务与您的SIEM方案(如Splunk)对接, 以便确保阿里云上的所有法规、审计、与其他相关日志能够导入到您的安全运维中心&#xff08;SOC&#xff09;中。 名词解释 LOG&#xff08;SLS&#xff09; - 阿里云日志服务&#xff0c;简…

请问如何正确使用计算机的接口芯片,[计算机软件及应用]第05章接口芯片1.ppt

[计算机软件及应用]第05章接口芯片1第5章 可编程接口芯片 5.2 可编程定时器/计数器8254 计算机系统中经常要用到定时信号&#xff0c;如定时检测、定时扫描和时钟定时等&#xff0c;定时方法通常有以下三种&#xff1a; (1)软件定时 (2)不可编程的硬件定时 (3)可编程的硬件定时…

行,Python终于跌神坛了!程序员:活该!你敢来评论吗...

Python还有“敌人”吗&#xff1f;最近网络上一则帖子吸引了笔者&#xff0c;大意内容为&#xff1a;据说A是有2年多经验的Python工程师&#xff0c;面一个公司相关的岗位&#xff0c;由于人手紧缺&#xff0c;所以只问了一个框架&#xff0c;就按笔者提的29K办理了入职。对此&…

jdk1.6集成activemq的2种方式

文章目录一、maven方式1. 依赖2. 发送端3. 接收端4. 工具类二、引入jar方式2.1.下载jar2.2. 按需导入三、添加账号密码一、maven方式 1. 依赖 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-core</artifactId><v…

Kubernetes Client-go Informer 源码分析

几乎所有的Controller manager 和CRD Controller 都会使用Client-go 的Informer 函数&#xff0c;这样通过Watch 或者Get List 可以获取对应的Object&#xff0c;下面我们从源码分析角度来看一下Client go Informer 的机制。 kubeClient, err : kubernetes.NewForConfig(cfg) …

html边框大一点,CSS3 框大小(box-sizing)

CSS3 框大小(box-sizing)使用CSS3框大小调整功能&#xff0c;您可以指定元素的有效宽度。使用框大小(box-sizing)重新定义框宽度默认情况下&#xff0c;元素的盒子可见/呈现在网页上的实际宽度或高度依赖于它width或height&#xff0c;padding和border属性值。例如&#xff0c;…

Kube Controller Manager 源码分析

Kube Controller Manager 源码分析 Controller Manager 在k8s 集群中扮演着中心管理的角色&#xff0c;它负责Deployment, StatefulSet, ReplicaSet 等资源的创建与管理&#xff0c;可以说是k8s的核心模块&#xff0c;下面我们以概略的形式走读一下k8s Controller Manager 代码…