8.5 WMT 数据集

WMT 数据集解析,并使用 BLEU 评价标准!

创建日期: 2025-01-24

处理欧洲议会会议记录 (Europarl) 第 7 版中英语-德语、英语-法语翻译数据集。翻译 BLEU 论文,并使用 BLEU 方法进行评估。

8.5.1 WMT 数据集

论文 Attention Is All Your Need 的作者在 WMT 2014 英语翻译成德语的任务和 WMT 2014 英语翻译成法语的任务上取得优异成绩。WMT (Workshop on Machine Translation) 是一个专注于机器翻译的国际研讨会,提供标准化的数据集和评估方法,经常组织竞赛,以比较不同翻译模型的性能。

WMT 2014 提供了多种平行语料(如英语-德语、英语-法语)数据集,用于训练和评估机器翻译模型。其中一个数据集来自于 欧洲议会会议记录 (Europarl) 第 7 版 ,包含 21 种欧洲语言。以下是(英语-德语、英语-法语)数据下载链接:

在本小节中,我们将使用标准 Python 程序对它进行预处理。将上述的压缩文件下载在本地目录,如 temp 中,文件 5_1_wmt_dataset.py 使用 tarfile 进行解压缩:

def extract_tgz(file_path, output_dir):
    with tarfile.open(file_path, 'r:gz') as tar:
        tar.extractall(path=output_dir)

会得到两个文件:

  1. temp\fr-en\europarl-v7.fr-en.en

  2. temp\fr-en\europarl-v7.fr-en.fr

定义 load_doc 函数将文件加载到内存中:

# Load doc into memory.
def load_doc(filename):
    file = open(filename, mode='rt', encoding='utf-8')
    # read all text
    text = file.read()
    # close the file
    file.close
    return text

将文件通过换行符分割成句子:

# Split a loaded document into sentences.
def to_sentences(doc):
    return doc.strip().split('\n')

获取句子的最小和最大长度:

# Shortest and longest sentence lengths.
def sentence_lengths(sentences):
    lengths = [len(s.split()) for s in sentences]
    return min(lengths), max(lengths)

现在需要清理导入的句子行,以避免训练无用且嘈杂的标记。这些行被规范化,在空格上标记,并转换为小写。从每个标记中删除标点符号,删除不可打印的字符,并排除包含数字的标记。清理后的行存储为字符串。程序运行清理函数并返回干净的附加字符串:

def clean_lines(lines):
    cleaned = list()
    # prepare regex for char filtering.
    re_print = re.compile('[^%s]' % re.escape(string.printable))
    # prepare translation table for removing punctutation
    # 删除所有标点符号
    table = str.maketrans('', '', string.punctuation)
    for line in lines:
        # Café déjà vu résumé naïve
        # Cafe deja vu resume naive
        line = unicodedata.normalize('NFD', line).encode('ascii', 'ignore')
        line = line.decode('utf-8')
        # tokenize on white space
        line = line.split()
        # convert to lower case
        line = [word.lower() for word in line]
        # remove punctutation from each token
        line = [word.translate(table) for word in line]
        # remove non-printable chars form each token
        line = [re_print.sub('', w) for w in line]
        # remove tokens with numbers in them
        line = [word for word in line if word.isalpha()]
        # store as string
        cleaned.append(' '.join(line))
    return cleaned

现在我们对法语数据重复相同的过程

8.5.2 BLEU 论文

机器翻译的人工评估范围广泛但成本高昂。人工评估可能需要数月才能完成,并且不能重复使用。我们提出了一种机器翻译自动评估的方法,该方法快速、廉价、与语言无关,与人工评估高度相关,但是每次运行的边际成本很低。我们将这种方法作为人工评估的一种补充,当需要快速或者频繁评估时,可以使用该方法代替人工。

8.5.2.1 介绍

人类对机器翻译 (MT) 的评价衡量了翻译的许多方面,包括翻译的充分性、保真度和流畅度。2001 年 Reeder 给出了 MT 评估技术的综合目录及其丰富的文献。在大多数情况下,这些不同的人工评估方法都非常昂贵。此外,它们可能需要数周或数月才能完成。这是一个大问题,因为机器翻译系统的开发人员需要监控每天系统变化的影响,以便从好主意中剔除坏主意。

我们相信,机器翻译的进步源于评估,并且有大量富有成果的研究想法等待着摆脱评估瓶颈。开发人员将受益于一种廉价的自动评估,这种评估快速、独立于语言,并且与人工评估高度相关。我们在本文中提出了这样一种评估方法。

如何衡量翻译效果?机器翻译越接近专业人工翻译,效果就越好。这是我们提案背后的核心思想。要判断机器翻译的质量,需要根据数值指标来衡量其与一个或多个参考人工翻译的接近程度。因此,我们的机器翻译评估系统需要两个要素:

  1. 数值“翻译接近度”指标

  2. 高质量人工参考翻译的语料库

我们根据语音识别社区使用的非常成功的单词错误率指标制定了我们的接近度指标,并针对多个参考翻译进行了适当修改,并允许单词选择和词序存在合理的差异。主要思想是使用可变长度短语匹配的加权平均值来匹配参考翻译。这种观点产生了一系列使用各种加权方案的指标。我们从这个系列中选择了一个有前途的基线指标。

在第 2 节中,我们详细描述了基线指标。在第 3 节中,我们评估了 BLEU 的性能。在第 4 节中,我们描述了一个人工评估实验。在第 5 节中,我们将基线指标性能与人工评估进行了比较。

8.5.2.2 基准指标

通常,给定的源句子有很多“完美”的翻译。即使使用相同的单词,这些翻译在词汇选择或词序上也可能有所不同。然而,人类可以清楚地区分好的翻译和坏的翻译。例如,考虑一下中文源句子的这两个候选翻译:

  • 候选句子 1:It is a guide to action which ensures that the military always obeys the commands of the party.

  • 候选句子 2:It is to insure the troops forever hearing the activity guidebook that party direct.

虽然它们看起来是同一主题,但质量却有很大差异。为了进行比较,我们在下面提供了同一句话的三个参考人工翻译。

  • 参考 1:It is a guide to action that ensures that the military will forever heed Party commands.

  • 参考 2:It is the guiding principle which guarantees the military forces always being under the command of the Party.

  • 参考 3:It is the practical guide for the army always to heed the directions of the party.

很明显,候选句子 1 是好的翻译,它与三个参考翻译句子共享许多相同的单词和短语,而候选句子 2 没有。我们将在第 2.1 节中简要量化共享的概念。

8.5.2.3 BLEU 评估

8.5.2.4 人工评估

8.5.2.5 评估对比

8.5.2.6 总结