pos机sn,机器翻译的自动化测试与改进

 新闻资讯  |   2023-07-03 12:31  |  投稿人:pos机之家

网上有很多关于pos机sn,机器翻译的自动化测试与改进的知识,也有很多人为大家解答关于pos机sn的问题,今天pos机之家(www.poszjia.com)为大家整理了关于这方面的知识,让我们一起来看下吧!

本文目录一览:

1、pos机sn

pos机sn

引用:

Automatic Testing and Improvement of Machine Translation Z Sun,JM Zhang,M Harman,M Papadakis,L Zhang // ICSE '20: 42nd International Conference on Software Engineering

摘要

本文提出一种测试和修复机器翻译系统一致性的自动方法——TransRepair,在没有标准翻译的情况下,结合 metamorphic testing 蜕变测试的 mutation 突变检测不一致的问题,然后采用 probability-reference 或 cross-reference 对翻译进行后处理,以灰盒或黑盒的方式修复不一致的问题。对谷歌翻译和 Transformer 的评估表明,TransRepair 在生成翻译一致的输入对方面具有很高的准确率 (99%),使用自动一致性度量和手动评估,发现谷歌翻译和 Transformer 大约有 36%和 40%的不一致 bug。黑盒修复了平均 28%和 19%的谷歌翻译和 Transformer 错误,灰盒修复了平均 30%的 Transformer 错误。手动检查表明,TransRepair 修复的译文在 87%的情况下提高了一致性(在 2%的情况下降低了一致性),在 27%的情况下的修复具有更好的翻译可接受性(在 8%的情况下降低了可接受性)。

1 介绍

机器学习已经成功地提供了通用的自然语言翻译系统,许多系统能够实时有效地在数千种语言之间进行翻译[20]。然而,这样的翻译系统并不完美,用户体验到的错误与传统的、基于非机器学习的软件系统有着不同的特点。

误译的后果早已被研究过,其影响已被证明是严重的。例如,据报道,臭名昭著的历史性误译《乌恰利条约》第 17 条导致了战争。据报道,误译的这种真正深刻和深远的后果也正在成为国际紧张和冲突的严重和强有力的根源。

通过基于机器的翻译器进行误译的后果也被证明是严重的。例如,机器翻译已经被证明显示出有害的公平性错误,对特定的用户群体造成了不定比例的伤害。作者已经在广泛使用的强效翻译系统中发现了这样的公平性缺陷的例子。图 1 显示了语言对(英语 → 中文)的几个这样的 Google 翻译结果。从图中可以看出,当主语是“男”或“男学生”时,Google Translate 将“good”翻译成“hen hao de”(意思是“非常好”)。然而,有趣的是,也可悲的是,当主语“女性”或“女性学生”时,它会把“好”翻译成“hen duo”(意思是“很多”)。

这种不一致性可能会让用户感到困惑,而且对计算机科学领域的女性研究人员也显然是不公平的;与翻译成“非常好”的相比,翻译成“大量”显然是一种更贬义的解释。为了避免这种不公平的翻译(在规模上),作者需要能够自动识别和纠正这种不一致的技术。

为了解决这个问题,作者引入了一种测试和修复相结合的方法,它可以自动生成真实世界机器翻译系统的测试,并自动修复测试阶段发现的错误翻译。正如作者在本文中所展示的,作者需要重新思考传统的测试和修复方法,以便将它们应用到自然语言翻译中。

现有的工作已经测试了机器翻译系统是否为语义相等的转换提供了稳定的翻译,例如同义词替换(例如 buy→purchase)或缩写替换(例如 what’s→what is)。然而,以往的研究还没有集中在语境相似转换的翻译不一致性的测试和修复上;具有相似单词嵌入的句子之间的转换在语料库中共享上下文(例如简单的基于性别的转换,如男孩 → 女孩)。

为了解决测试问题,作者引入了一种结合变异和蜕变测试的方法。该方法通过上下文相似的变异生成变异句子,作为被测译者的测试输入。当上下文相似的突变产生高于阈值的非突变部分的翻译中断时,该方法会报告一个不一致的错误。

传统的“修复”机器学习系统的方法通常使用数据扩增或算法优化。这些方法最好的特点是“提高”机器学习者的整体效率,而不是针对单个错误进行特定的修复;它们还需要数据收集/标记和模型再培训,这通常成本很高。

传统的“修复”软件错误的方法是白盒,因为这些技术需要识别需要修改的源代码行来实现修复。这种方法本质上不能应用于修复源代码不可用的软件,例如第三方代码。

作者的见解是,通过结合系统重复(可能不一致)输出的结果,作者可以实现一种轻量的黑盒修复技术,作为一种针对特定缺陷的“后处理”阶段。作者的方法是第一种以纯黑盒方式修复系统的修复技术。作者相信黑盒修复有相当大的潜在价值,能够超越机器翻译修复的具体应用。当软件工程师在没有源代码的系统中遇到 bug 时,这是唯一可用的方法。

作者不仅证明了黑盒修复是可行的,而且它可以扩展到现实世界的强效翻译系统,比如 GoogleTranslate。作者也给出了灰盒修复的结果,其预测概率是可用的。

TransRepair 在两个最先进的机器翻译系统 Google Translate 和 Transformer 上进行了评估。作者特别关注两种最流行的语言:英语和汉语之间的翻译。这些语言在全世界都有超过 10 亿的使用者。然而,在中国,只有 1000 万人(不到总人口的 1%)能够通过英语进行交流。由于能说两种语言的人太少了,机器翻译往往很有吸引力,有时是必要的和不可避免的。

结果表明,TransRepair 能够有效地生成有效的测试输入,准确率为 99%;2)TransRepair 根据学习到的阈值自动报告不一致错误,Google Translate/Transformer 的平均 F-测度为 0.82/0.88;3)Google Translate 和 Transformer 都存在不一致错误。自动一致性度量和手动检查显示,googletranslate 在作者生成的测试输入中有大约 36%的翻译不一致。4) 黑盒修复减少了 28%和 19%的谷歌翻译和 Transformer 的错误。灰盒减少了 30%的 Transformer 故障。人工检查表明,修复后的译文在 87%的情况下提高了一致性(仅降低了 2%),27%的翻译接受度更好(仅 8%较差)

2 方法2.1 概述

TransRepair 的概览如图 2 所示。从图中可以看出,TransRepair 基于以下三个主要步骤自动测试和修复机器翻译的不一致性:

1) 自动生成测试输入。此步骤生成转换后的句子(测试输入)用于一致性测试。对于每个句子,TransRepair 通过上下文相似的词替换进行句子突变。生成的突变候选者使用语法检查进行过滤。通过语法检查的突变体被视为被测机器翻译的最终测试输入。详情见第 2.2 节。

2) 自动生成测试预言。这一步介绍了 oracle 的生成,这些 oracle 用于识别不一致的翻译(bug)。在这一步中,作者依赖于翻译输入和翻译输出之间的变形关系。其思想是,翻译输出的原语和其上下文相似的变异词应具有一定程度的一致性模变异词。作者使用相似性度量来度量翻译输出之间的一致性程度作为测试预言。第 2.3 节详细介绍了这一步骤。作者研究了四个相似性度量,在第 3.2 节中进行了描述。

3) 自动不一致修复。自动修复不一致的翻译步骤。TransRepair 采用黑盒和灰盒两种方法,根据突变体中的最佳翻译对原译文进行转换。作者探讨了两种选择最佳译文的方法,一种使用预测概率,另一种使用交叉引用。第 2.4 节给出了该步骤的详细信息。

2.2 自动测试输入生成

生成输入的过程包含以下步骤:

2.2.1 上下文相似度语料库的建立。进行上下文相似的单词替换的关键步骤是,找到一个可以被其他相似单词替换、且不影响句子结构的单词,替换生成的新句应与原句的翻译一致。使用词向量衡量相似度,两个单词 w1 和 w2 之间的相似度为 sim(w1, w2),vx 为词 x 的向量。

为了构建一个可靠的上下文相似语料库,采用 GloVe、SpaCy 两种词向量模型,并使用其训练结果的交集。当两个单词在两个模型中的相似度都超过 0.9 时,则认为它们是上下文相似的,将这对单词放入上下文相似语料库中,使用这种方法总共收集了 131,933 个单词对。

2.2.2 翻译输入变异。下面作者分别介绍单词替换和结构过滤。

单词替换。对于原句中的每个单词,搜索上述语料库看是否存在匹配单词,如果找到了一个匹配的词,就替换并生成突变句。与原句相比,每个突变句包含一个替换了的单词,为了减少生成无法解析的突变的可能性,只替换名词、形容词和数字。

结构过滤。生成的突变句可能无法解析,因为替换的单词可能不适合句子的上下文,例如“one”和“another”是上下文相似的单词,“a good one”可以解析,而“a good another”不能。因此附加约束检测突变句的合理性,使用基于 Stanford Parser 的 structural filtering,假设原句为 s = w1, w2, …,wi, …, wn,突变句为 s' = w1, w2, …, w'i, …, wn 中,对于每个句子,Parser 输出 l(wi),即每个单词的 POS tag,如果 l(wi) ≠ l(w'i),说明句法结构发生了变化,所以将 s' 从候选中删除。

作者手动检查生成的输入的质量,并在第 4 节中报告结果。

2.3 自动生成测试脚本

测试时使用 oracle 增强生成的输入,假设句子中没有变化的部分保留了充分性和流利性(充分性指译文是否具有相同的意义、信息是否丢失、增多或失真;流利性是指输出是否流畅,语法是否正确),将源句 s 中的 w 替换为 w' 生成 s',两个句子的翻译分别为 t(s) 和 t(s'),希望在计算 t(s) 和 t(s') 的相似性时忽略单词 w 和 w' 的翻译,但是要去掉它们的影响并不容易,因为它们可能会改变整个句子的翻译,且很难准确地将 w 和 w' 映射到译文中与其对应的词。

为了绕过这个问题,计算 t(s) 和 t(s') 子序列的相似度,并使用最大相似度近似 t(s) 和 t(s') 的一致性,算法 1 展示了这个过程。对于 t(s) 和 t(s'),首先使用 GNU Wdiff 获得 difference slices(第 1 行),GNU Wdiff 以单词为基础比较句子,对比较两个文本中有几个单词被更改非常有效,Wdiff 可以将两个句子“A B C D F”和“B B C G H F”的区分切片分别表示为“A”, “D”和“B”, “G H”。将 t(s) 和 t(s') 的区别切片保存为集合 Bs 和 Bs',然后每次从译文中删除一个切片(第 5 行和第 9 行),每个切片对应一个子序列,例如“A B C D F”有两个子序列:“B C D F”(删除“A”)和“A B C F”(删除“D”)。新的 t(s) / t(s') 子序列被添加到集合 To / Tm 中(第 6 行和第 10 行)。对于集合 To 中的每个元素,计算它与集合 Tm 中的每个元素的相似度(第 15 行),得到 |To| ∗ |Tm| 的相似性得分,其中 |To| 和 |Tm| 是 To 和 Tm 的大小,使用最高相似度作为最终一致性评分的结果(第 16 行)。这种方法减少了突变词的影响,有助于选择不一致的上界,即使相似度最大的两个子序列包含被替换的单词,其他句子部分的相似度也较差,所以这种情况下不太可能被替换的单词所影响(导致出现假正例)。有关实验设置和阈值设置结果的详细信息在第 4.2 节中讨论。此外,作者通过人工检查来评估一致性度量的有效性。这些结果见第 4.2 节。

2.4 不一致性自动修复

作者首先介绍了整体修复过程,及两种突变翻译排序方法(probability and cross-reference)。

2.4.1 整体修复过程

首先修复原句的翻译,然后寻找通过一致性测试的突变句的翻译,算法 2 为修复过程。对于已经被发现有不一致问题的 t(s),生成一组突变句,并得到它们的译文 t(s1), t(s2), …, t(sn),这些突变句及其翻译,连同原句及其翻译,被放入字典 T 中(第 1 行),然后使用预测概率或交叉引用对 T 中的元素降序排序,结果存入 OrderedList(第 2 行),接下来使用单词对齐获得 s 和 t 之间的映射单词 a(s)(第 3 行),单词对齐是一种自然语言处理技术,当且仅当两个单词具有翻译关系时它们才会被连接起来。特别地,使用 Liu et al. 提出的技术,一种用于无监督单词对齐的 latent-variable log-linear 模型。然后检查 OrderedList 中的句子对 (sr, t(sr)) 是否可以用于修复原始翻译,按照排序顺序,直到找到一个可以接受不一致性修复的突变句翻译。如果 sr 是原句 (sr == s),意味着原始译文被认为是比其他突变译文更好的选择,所以不动它(第 6-8 行);否则,继续对 s1 和 t(s1) 进行同样的操作。变量 w_i,: w_i^r 表示 s, sr 中替换的单词,通过对齐(第 9-12 行)得到翻译后的单词 t(w_i),: t(w_i^r)

单词对齐不是 100%准确。如果作者直接用 t(wir)代替 t(wi)来映射翻译,可能会导致语法错误或上下文不匹配。作者采用以下策略来判断替换是否可以接受。1) 作者约束 wi,wir,t(wir),t(wi)必须属于同一类型(即数字或非数字)(第 13-15 行)。2) 如果被替换的单词是非数字类型,作者将应用 Stanford Parser 来检查替换是否会导致结构变化(第 17-21 行)。

在修复变异输入(第 22 行)的翻译时,作者得到原句子的修复结果(第 23 行),然后检查翻译解决方案候选是否与原句子的修复翻译(第 24-26 行)一致。如果没有,作者继续检查其他候选修复。

2.4.2基于概率的翻译排名。对于一个句子 s 和及其变体 S = s1, s2, …, sn,t(s), t(si) 分别为 s, si 的翻译,记录每个 t(si) 的翻译概率,并选择最高的一个作为候选翻译,使用单词对齐生成最终修复后的翻译。

这是一种灰盒修复方法,既不需要训练数据,也不需要训练算法的源代码,只需要机器翻译提供的预测概率,但该概率信息为方法的内部属性,通常不会提供给最终用户。

2.4.3基于对照的翻译排名。对于一个句子 s 及其变体 S = s1, s2, …, sn,t(s), t(si) 分别为 s, si 的翻译,计算 t(s), t(s1), t(s2), ..., t(sn) 之间的相似度,并使用将最佳译文(平均相似度得分最大)译文与其他译文映射并修复之前的译文。这是一种黑盒修复方法,只需要翻译器的输出。

3 实验设置3.1 研究问题

作者从评估 TransRepair 生成有效且一致的测试输入(可用于一致性测试)的能力开始作者的研究。因此,作者要求:

RQ1:TransRepair 的测试输入有多精确?

作者通过随机抽样一些候选对并(手动)检查它们是否有效来回答这个问题。这个问题的答案确保了 TransRepair 确实生成了适合于一致性检查的输入。

鉴于作者发现了 TransRepair 生成有效测试对的证据,作者将注意力转向这些对在检测一致性错误方面的有效性问题。因此,作者要求:

RQ2:TransRepair 的缺陷揭示能力是什么?

为了回答 RQ2,作者根据相似性度量计算一致性得分,作为测试 oracle(确定是否检测到 bug)。为了评估 TransRepair 揭示错误的能力,作者手动检查一个翻译样本,并将手动检查结果与自动测试结果进行比较。

在对错误揭示进行了实验之后,作者评估了 TransRepair 的修复能力,以查看它修复不一致错误的能力。因此,作者要求:

RQ3:TransRepair 的缺陷修复能力是什么?

为了回答这个问题,作者记录修复了多少不一致的 bug(通过一致性度量和手动检查来评估)。作者还手动检查由 TransRepair 修复的翻译,并检查它们是否提高了翻译的一致性和质量。

3.2 一致性度量

作者探讨了四种广泛采用的度量不一致性的相似性度量。为了便于说明,作者使用 t1 来表示原始翻译输入的翻译输出;作者使用 t2 来表示变异的翻译输入的翻译输出。

基于 LCS 的度量。通过 t1、t2 之间的一个最长公共子序列的标准化长度度量其相似性:

LCS 是一个计算 t1、t2 之间以相同的相对顺序出现的一个最长公共子序列的函数,例如序列“ABCDGH”和“AEDFHR”的 LCS 是长为 3 的“ADH”。

基于 ED 的度量。基于 t1、t2 之间的编辑距离,编辑距离是计算将一个字符串转换为另一个所需的最少操作量以衡量二者差距的方法。标准化编辑距离使用以下公式,其中 ED 是计算 t1、t2 之间编辑距离的函数。

基于 tf-idf 的度量。tf-idf 可以用来衡量词频方面的相似性,单词 w 的权重为:

其中 C 是一个文本语料库(本文使用 Transformer 的训练数据),|C| 是句子总数,fw 是包含词 w 的句子数量。句子使用词袋法表示,忽略语法和词序。向量的每个维数都与它的权值 widf 相乘,计算 t1、t2 加权向量的余弦相似度作为最终的 tf-idf 一致性得分。

基于 BLEU 的度量

计算句子匹配子序列的个数、pn(n-gram precision,n 为子序列长度)和过短翻译惩罚因子(c 为 t(si) 的长度,r 为 t(s) 的长度),BLEU 的公式如下,其中 wn = 1/N(N = 4)为 pn 的权值。

由于 BLEU 是 unidirectional 单向的,BLEU(s, s') ≠ BLEU(s', s),使用较高的分数来作为 s、s' 之间的相似度,这与算法 1 中的想法是一致的:获得一致性的一个上界,避免出现翻译错误的假正例。

3.3 机器翻译

作者的实验同时考虑了面向工业和最新研究的机器翻译器。一个是 Google Translate[15](在 results 部分缩写为 GT),一个由 Google 开发的广泛使用的机器翻译服务。另一个是 Transformer,一个由研究团体研究的翻译家。

作者使用 Google translate,因为它是一个强迫作者进行黑盒修复的系统的例子;作者无法访问训练数据,也无法访问翻译系统的代码,因此,根据定义,任何改进只能通过黑盒方法来实现。当然,它也是一个有产品质量的主流翻译系统,使翻译结果更加有趣。

作者使用默认设置来训练 Transformer。Transformer 是基于三个数据集进行训练的:CWMT 数据集[7]包含 7086820 个平行句,UN 数据集包含 15886041 个平行句,新闻评论数据集以 252777 个平行句作为训练数据集。验证数据(帮助调整超参数)也来自新闻评论,包含 2002 个平行句。Transformer 运行深度学习 lib 库。为了得到一个更有效的翻译,作者训练了 500000 个时代的模型。

3.4 试验装置

根据之前的机器翻译研究,作者使用了来自新闻评论数据集的测试集来测试 Google Translate 和 Transformer。测试集包含 2001 个平行句,不同于训练集和验证集。作者实验中的汉语句子是以汉字的形式出现的。设置。

作者的实验是在 Ubuntu16.04 上进行的,它有 256GBRAM 和四个 Intel E5-2620V4 CPU(2.10GHz),总共包含 32 个内核。作者使用的神经网络都是在一个 Nvidia Titan RTX(24gb 内存)上训练的。

4 结果

本节报告了回答作者研究问题的结果。

4.1 输入生成的有效性(RQ1)

作者从回答 RQ1 开始。对于每个测试句子,作者生成突变体,并检查它们是否通过了结构过滤(详见 2.2.2 节)。特别是,对于每个句子,作者生成多达 5 个通过过滤器的突变体(作者在第 5 节中研究了突变体数量的影响)。在 2001 个测试句子中,生成了 21960 个变异候选,其中 17268 个被结构过滤掉。在剩下的实验中,作者使用剩下的 4692 个突变体,它们与 1323 个句子配对,作为测试输入。

为了手动评估这些测试输入是否有资格检测翻译不一致,作者随机抽取了 400 个。前两位作者手动检查输入的有效性,即突变体中被替换的单词是否会导致语法错误,以及突变体是否应该与原句子有一致的翻译。这个验证步骤揭示了三个无效的变种: 1) He was a kind spirit with a big heart: kind → sort; 2) Two earthquakes with magnitude 4.4 and 4.5 respectively: Two → Six; 3) It is in itself a great shame: great → good。

400 个样本中剩下的 397 个符合两个有效性标准,表明准确率为 99%。作者的结论是,作者的两个策略的交集两个 word2vec 模型,并使用斯坦福解析器作为过滤器有很高的概率产生有效的测试句子。400 个突变体和人工评估结果可以在 TransRepair 主页上找到。

在下一节中,作者使用 4692 个突变体(来自 1323 个原始句子)来检验机器翻译系统的测试翻译一致性。

回答 RQ1:TransRepair 对于生成语法正确且翻译一致的测试句子有很好的精确度(99%)。

4.2 跨修复的不一致揭示能力(RQ2)

本节回答了 RQ2,即研究了 TransRepair 的不一致揭示能力。为了回答这个问题,作者研究了:1)突变与原始翻译之间的一致性度量值;2)翻译不一致的人工检查结果。作者还探讨了一致性度量和手动检查在评估不一致性方面的接近程度。

一致性度量值。作者使用 googletranslate 和 Transformer 对 4692 个生成的输入进行翻译,并与原始句子的翻译进行比较,遵循算法 1 的步骤。对于每个突变体,作者计算出四个一致性得分,每一个对应于一个相似性度量(见第 3.2 节)。

图 3 显示了低于 1.0 的一致性得分的柱状图。从图中可以看出,不同的度量值具有不同的分布,但总体而言,所有四个度量报告了大量的翻译(即约占总翻译量的 47%),分数低于 1.0,表明翻译存在不一致性。表 1 为四种度量不同阈值的不一致翻译个数,可以看到即使在一致性阈值较宽松时,bug 依然存在。

图 3:指标得分直方图。

表 1:在 1.0 和 0.6 之间的不同阈值下,报告的不一致错误数量。

人工检查不一致。随机抽取 300 个突变句的翻译,其中有两个无法解析,使用剩下的 298 个翻译进行分析。作者手动检查每个突变句和原句的翻译,当满足下面任何一个条件时,就报告一个不一致的错误:除了突变句的替代词,这两个翻译 1) 有不同的含义;2) 有不同的 tones 声调;3) 专有名词使用了不同的字符表示。手动检查发现了谷歌翻译、Transformer 中 107 个(36%)、140(47%) 个翻译不一致错误。

比较度量分数和手动一致性评估结果,将 298 篇带有人工标记的译文分手动分成两组,一组为一致的翻译,另一组为不一致的翻译,检查每组的度量分数。图 4 显示了结果,虚线左右两侧的点分别为人工标记为一致/不一致翻译的度量分数,左侧大部分点(82.2%)的得分为 1.0,左侧平均分 0.99 高于右侧平均分 0.86,表明度量和手动检查的翻译一致性倾向于一致。值得注意的是,左侧有一些得分相对较低的度量,而右侧有一些较高的度量,说明使用度量来评估一致性存在假正例和假负例,详细分析如下:

图 4:指标得分与人工检查翻译一致性的比较

_阈值学习_。度量分数是连续的值,为了自动报告不一致性,需要为每个度量选择阈值,使度量判断结果接近手动检查。从谷歌翻译中随机抽取 100 个翻译,手动标记为一致或不一致,然后根据标记选择阈值(从 0.8 到 1.0,步长 0.01),使得每个相似度度量的 F 值最大。这种方法确定的 LCS、ED、tf-idf、BLEU 的最佳阈值分别为 0.963、0.963、0.999、0.906,F 值分别为 0.81、0.82、0.79、0.82。当度量分数低于 so-identify 阈值时,就报告一个不一致错误。为了了解所选阈值在多大程度上捕获了一致性和不一致性之间的边界,分别使用谷歌翻译和 Transformer 对之前采样的 298 个翻译对阈值进行测试,结果如表 2 所示。

表 2:不一致揭示的精度/回报率。

假正例 FP 表示阈值判断翻译不一致、但人工检查是一致的,假负例 FN 表示阈值判断翻译是一致的、但人工检查是不一致的。从表中可以看出,FP 和 FN 的比例都在 10%以下,这是可以接受的。手动检查 FP 和 FN 后,发现 FN 可能是由一个小的字符差异、但具有不同的含义或语气引起的,例如,一个突变句翻译有一个额外的 er(意思是“but”),但它不出现原始翻译中,人工检查认为这是不一致的,而度量评价则相反。当两个翻译中有许多含义相同的不同词语,可能会出现 FP,例如,中文短语“尚未”和“还没”都是“not yet”的意思,但每个短语的汉字完全不同。测试时 FP 可能带来的害处在于有可能使翻译变得更差。

不一致问题的总数。阈值确定后用于 4592 个输入的翻译(100 个已经用于阈值学习),检查其中有多少个低于阈值,结果表明,Transformer 不一致的翻译结果是--LCS: 1917 (42%); ED:1923 (42%); tf-idf: 2102 (46%); BLEU:1857 (40%)。总的来说,大约五分之二的翻译低于选择的一致性阈值;谷歌翻译不一致的翻译结果是--LCS: 1708 (37%); ED:1716 (37%); tf-idf: 1875 (41%); BLEU:1644 (36%),这表明在一致性方面,谷歌翻译比 Transformer 要稍好一些。

回答 RQ2:这些指标的 F 度量为 0.82/0.88 在检测 Google Translate/Transformer 的不一致错误时。度量和人工检查都显示 googletranslate 在 TransRepair 测试输入上有大约 36%的翻译不一致。

4.3 错误修复能力(RQ3)

_4.3.1**通过指标评估改进_。作者将作者的修复方法应用于所有不一致的翻译,并检查有多少翻译可以用作者的方法修复。对于每个句子,作者生成 16 个用于修复的突变体(作者在第 5 节中研究了要修复的突变体数量的影响)。

表 3 显示了结果,其中每个单元格包含修复方法修复的不一致错误的数量和比例。“概率”列表示概率参考(灰盒修复)的结果;“交叉引用”列表示交叉引用(黑盒修复)的结果;对于 Google translate,由于灰盒方法不适用,作者只显示黑盒方法的结果。

表 3:修复的 bug 数量和比例

从表中可以看出,TransRepair 平均减少了 googletranslate 中黑盒方法的 28%的 bug。对于 Transformer 模型,作者可以看到灰盒方法修复了 30%的缺陷,黑盒方法修复了 19%到 20%的错误。实验结果表明,灰盒和黑盒方法在修复不一致性错误方面是有效的。

4.3.2 人工评价的改进。项目修复研究通常包括一个手动评估过程、,以验证他们的发现。按照类似的做法,前两位作者(手动)检查了先前标记的 298 个抽样翻译的修复结果。作者的目标是通过修正译文的一致性来检查译文的一致性。由于作者的修复也可以提高翻译的可接受性,作者也会检查这些变化是否会带来翻译可接受性的提高。对于基于交叉引用的修复,作者仅手动评估 LCS 度量,因为作者(先前)的结果显示其他度量中的结果相似。

在 298 个句子对中,有 113/136 的句子在 Google Translate/Transformer 上被报告为翻译不一致。因此,作者的修复针对的是所有这些句子对,包括原始句子和变体的翻译。基于概率的修复方法最终改变了 58 对(共 136 对),Google Translate/Transformer 的基于交叉引用的修复方法最终改变了 39/27 对(共 113/136 对)。对于被 TransRepair 修改过的翻译对,手动比较:修复前后的翻译一致性 & 修复前后翻译的可接受性(原句和突变句),考虑充分性和流利性,手动给出“Improved”、“Unchanged”或“Decreased”标签,结果见表 4。

表 4:基于人工检查的改进

前四行是谷歌翻译,其余是 Transformer 翻译,带有“overall”的行表示原句和突变句的翻译接受度都有提高,带有“original”/“mutant”的行表示原句/突变句的翻译修复结果。TransRepair 在提高翻译一致性方面有很好的效果,平均 87%的谷歌翻译和 Transformer 翻译的一致性提高了,只有 3 个翻译一致性降低,其中一个原句的翻译得到了改进,而突变句没有,因此修复后原句改进的翻译与突变句未改进的翻译不匹配;剩下两个是由于修复后原句变差、突变句翻译没变。

修复的主要目的是提高翻译一致性,翻译可接受性的提高是额外的“bonus”,从表 4 中可以发现,修复约提高了四分之一(27%)的翻译可接受性,而 8%的可接受性下降,手动检查可接受性下降的原因是,有时修复方法可能会为了一致性而牺牲质量。

5 扩展分析和讨论

本节提供进一步的细节和分析。

修复的翻译示例。表 5 给出了作者改进误译的一些例子。第一列是翻译输入;第二列显示原始翻译输出(转换为拼音),其中斜体字解释了误译部分;最后一列显示了作者改进的翻译。

表 5:修复后的译文实例

数据扩增的有效性和效率。之前的工作采用了数据扩增的方法提高机器学习模型的鲁棒性,对于源代码已知的翻译器,训练数据扩增是增加翻译一致性的方案之一,因此设计实验研究添加更多的训练数据是否会产生更好的翻译一致性。使用 10%, 20%, ..., 90%的原始训练数据分别训练 Transformer,结果见图 5,当比例在 0.7 到 1.0 之间时,没有观察到 bug 下降的趋势,这说明增加训练数据对改善翻译不一致性的效果有限。

图 5:Transformer 不同训练数据大小下的不一致性 bug 比例

数据扩增需要模型再训练,在当前的配置下使用 100%的数据训练模型需要 19 个小时,且数据收集、标记和处理也需要时间,总之很少有证据表明数据扩增是这个问题的好的解决方案。与之相比,TransRepair 具有以下优点:1) 黑盒不需要源代码和训练数据,灰盒只需要预测概率;2) 不需要额外的数据及模型再训练,成本更低;3) 更加灵活,可以修复特定的 bug 而不需要改动其他格式良好的翻译。

TransRepair**效率**。TransRepair 的消耗包括测试和修理。在作者目前的实验配置下(详见第 3 节),平均测试时间为每句 0.97s;基于概率的方法平均修复时间为 2.68s,基于交叉引用的方法平均修复时间为 2.93s。因此,在当前的实验配置下,当使用 TransRepair 优化实时在线机器翻译时,对于被认为没有错误的句子,最终用户只需不到 1 秒就可以收到最终翻译。对于一个被认为有缺陷的句子,不到 4 秒(测试和修复)就可以得到最终的翻译。

突变数的影响。作者在不一致性测试和修复过程中生成突变体。对于测试/修复过程,作者的默认配置为每个句子最多生成 5/16 个变种。为了研究突变体的数量对测试和修复性能的影响,作者用 1 到 3 个突变体进行测试生成,用 4 个或 8 个突变体进行修复。然后,作者比较发现的不一致性 bug 的数量和作者的方法修复的 bug 的数量。对于修复,由于篇幅原因,本文仅给出灰盒修复法的结果,如表 6 所示。完整的结果可以在作者的主页上找到[2]。作者观察到,在测试过程中,使用更多的突变体有助于揭示更多的不一致性错误。修复也是一样,但是在修复过程中使用 4 个突变体也有可接受的效果。

表 6:不同突变体数量的检测和修复的 bug 数量。

应用场景。TransRepair 可以端到端应用。给定一个翻译输入和一个机器翻译,作者的方法将自动测试和修复翻译输出,并给最终用户一个新的翻译输出。

6 相关工作

软件测试研究通常针对传统的(基于非机器学习的)软件系统。然而,最近机器学习在现实世界中重要性的提升,导致了机器学习软件测试研究活动水平的相应提高[50]。同时,对于机器学习系统来说,软件修复的概念和技术还相对较少。在这一部分中,作者回顾了作者提出的机器翻译测试和修复与先前测试和修复机器翻译系统的工作之间的关系,这些工作主要集中在翻译健壮性上。

翻译鲁棒性测试。为了测试翻译的鲁棒性,研究人员探索了测试输入上的扰动如何影响翻译。Heigold 等人[21]研究了通过字符交换、字置乱和字符翻转生成的三种字符级噪声测试输入。他们发现,机器翻译系统对那些不会对人类构成挑战的微扰句子非常敏感。Belinkov 和 Bisk[3]也有类似的结论,不仅是关于合成噪音,还有自然噪音(自然发生的错误,如打字错误和拼写错误)。为了有更多不同的测试用例来进行健壮性测试,赵等使用了生成对抗网络(Generative atterial Networks,GANs)。他们将输入的句子投影到一个潜在的空间,然后用这个空间搜索接近输入的测试句。

这些工作的目标是健壮性测试。测试输入是合成错误或自然发生的错误。测试神谕通常是 BLEU 分数,它与人类的预言有界限。作者的方法以翻译的一致性为目标,通过上下文相似的单词替换来生成一致的测试输入,而不是涉及错误。作者的方法在测试过程中也不需要人类的神谕。

孙和周提出了机器翻译的变形关系。作者的工作和他们的工作有两个主要的区别:1)他们的工作只涉及测试;作者也进行修复;2)他们的测试输入生成只是在“喜欢”或“讨厌”之前替换人名,在他们之后替换类型;作者的方法相对来说更加详尽。

翻译鲁棒性改进。为了提高翻译的鲁棒性,以往的工作主要依赖于数据扩充,即在训练数据中加入噪声数据并对模型进行再训练。一些工作使用模型无关的数据生成(也称为黑盒数据生成)。Heigold 等人、Belinkov 和 Bisk 以及 Sperber 等人使用合成噪声来保持模型。Karpukhin 等人评估了合成噪声百分比对训练集的影响。

有些工作使用依赖模型的数据生成(白盒数据生成)。Ebrahimi 等人引入了一种依赖于原子翻转操作的方法。此操作通过根据输入向量的梯度交换字符来生成测试。Cheng 等人[5]提出了一种基于梯度的方法,通过词替换生成对抗句。

通过优化学习算法也在改进。Belinkov 和 Bisk[3]提出在网络中使用结构不变的合成噪声表示。他们发现 CNN 的人物形象比其他人更强大。Cheng 等人通过在训练集中加入一个新的分量来识别噪声,引入了稳定性训练。这个组件减少了噪声的影响,并在进行同义扰动时产生更稳定的翻译。

这些先前的方法旨在提高所有翻译的整体健壮性,而不是修复特定的误译。

7 结论

在本文中,作者提出了 TransRepair,这是第一个自动测试和改进上下文相似翻译一致性的方法。TransRepair 获取一个句子并应用上下文相似的变异来生成稍微改变(突变)的句子,用于测试机器翻译系统。测试是通过翻译和比较原文和变异句来完成的。为了判断一致性,TransRepair 计算翻译子序列的相似度。当上下文相似的突变产生高于阈值的干扰时,TransRepair 认为这是一个潜在的缺陷。除了测试,TransRepair 还以黑盒或灰盒的方式自动修复不一致之处,后者根据变异句子的翻译对翻译进行后期处理。

本文由南京大学软件学院 2020 级硕士王擎宇翻译转述。

以上就是关于pos机sn,机器翻译的自动化测试与改进的知识,后面我们会继续为大家整理关于pos机sn的知识,希望能够帮助到大家!

转发请带上网址:http://www.poszjia.com/news/77602.html

你可能会喜欢:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 babsan@163.com 举报,一经查实,本站将立刻删除。