6

我需要计算 BLEU 分数来识别两个句子是否相似。我读过一些文章,主要是关于 BLEU 分数来测量机器翻译准确性的文章。但是我需要一个 BLEU 分数来找出句子之间的相似性同一种语言[英语]。(即)(两个句子都是英语)。谢谢期待。

4

6 回答 6

27

对于句子级别的比较,使用平滑的 BLEU

用于机器翻译评估的标准 BLEU 分数 (BLEU:4) 仅在语料库级别才真正有意义,因为任何没有至少一个 4-gram 匹配的句子都将获得 0 分数

发生这种情况是因为,BLEU 的核心实际上只是 n-gram 精度的几何平均值,它通过简洁惩罚进行缩放,以防止带有某些匹配材料的非常短的句子被给予不适当的高分。由于几何平均值是通过将要包含在平均值中的所有项相乘来计算的,因此任何 n-gram 计数为零都会导致整个分数为零。

如果要将 BLEU 应用于单个句子,最好使用平滑 BLEU(Lin 和 Och 2004 - 参见第 4 节),在计算 n-gram 精度之前,将每个 n-gram 计数加 1 . 这将防止任何 n-gram 精度为零,因此即使没有任何 4-gram 匹配,也会导致非零值。

Java 实现

您将在斯坦福机器翻译包Phrasal中找到 BLEU 和平滑 BLEU 的 Java 实现。

备择方案

正如 Andreas 已经提到的,您可能希望使用其他评分指标,例如Levenstein 的字符串编辑距离。然而,使用传统的 Levenstein 字符串编辑距离来比较句子的一个问题是它没有明确地知道单词边界。

其他替代方案包括:

  • 单词错误率- 这本质上是应用于单词序列而不是字符序列的 Levenstein 距离。它广泛用于对语音识别系统进行评分。
  • 翻译编辑率 (TER) - 这类似于单词错误率,但它允许对相邻单词和短语进行额外的交换编辑操作。该度量标准在机器翻译社区中变得流行,因为它与人类判断的相关性比其他句子相似性度量(例如 BLEU)更好。该指标的最新变体,称为Translation Edit Rate Plus (TERp),允许使用 WordNet 匹配同义词以及多词序列的释义(“死”~=“踢桶”)。
  • METEOR - 该指标首先计算允许对被比较的两个句子中的单词进行任意重新排序的对齐方式。如果有多种可能的对齐句子的方法,METEOR 会选择一种使交叉对齐边缘最小化的方法。与 TERp 一样,METEOR 允许匹配 WordNet 同义词和多词序列的释义。对齐后,该度量使用匹配词的数量来计算两个句子之间的相似性,以计算F-α 分数,这是一种平衡的精度和召回率度量,然后通过对存在的词序加扰量的惩罚进行缩放对齐。
于 2011-03-23T17:56:00.737 回答
4

给你:http ://code.google.com/p/lingutil/

于 2011-11-08T16:05:17.007 回答
3

好吧,如果你只是想计算 BLEU 分数,那很简单。将一个句子作为参考翻译,将另一个作为候选翻译。

于 2011-03-22T15:56:40.630 回答
1

也许(列文斯坦)编辑距离也是一种选择,或者汉明距离。无论哪种方式,BLEU 分数也适合该工作;它衡量一个句子与参考文献的相似性,因此只有当它们使用相同的语言时才有意义,就像你的问题一样。

于 2011-03-22T23:08:55.570 回答
0

您可以使用 Moses multi-bleu 脚本,也可以在其中使用多个参考:https ://github.com/moses-smt/mosesdecoder/blob/RELEASE-2.1.1/scripts/generic/multi-bleu.perl

于 2015-01-16T19:26:56.620 回答
0

不鼓励您自己实现 BLEU,并且SACREBLEU是一个标准实现。

from datasets import load_metric
metric = load_metric("sacrebleu")
于 2021-09-20T13:05:10.693 回答