使用 Python 评估神经机器翻译的 BLEU 分数
使用 NLP 中的 NMT 或神经机器翻译,我们可以将文本从给定语言翻译成目标语言。为了评估翻译的效果,我们使用 Python 中的 BLEU 或双语评估替补分数。
BLEU 分数的工作原理是将机器翻译的句子与人工翻译的句子进行比较,两者均以 n-gram 形式进行。此外,随着句子长度的增加,BLEU 分数会降低。一般来说,BLEU 分数在 0 到 1 的范围内,值越高表示质量越好。但是,获得满分的情况非常罕见。请注意,评估是基于子字符串匹配进行的,它不考虑语言的其他方面,如连贯性、时态和语法等。
公式
BLEU = BP * exp(1/n * sum_{i=1}^{n} log(p_i))
这里,各种术语具有以下含义 −
BP 是简洁性惩罚。它根据两个文本的长度调整 BLEU 分数。其公式如下:-
BP = min(1, exp(1 - (r / c)))
n 是 n-gram 匹配的最大阶数
p_i 是精度分数
算法
步骤 1 - 导入数据集库。
步骤 2 - 使用 load_metric 函数并以 bleu 为参数。
步骤 3 - 列出翻译字符串的单词列表。
步骤 4 - 使用所需输出字符串的单词重复步骤 3。
步骤 5 - 使用 bleu.compute 查找 bleu 值。
示例 1
在此示例中,我们将使用 Python 的 NLTK 库来计算德语句子机器翻译成英语的 BLEU 分数。
源文本(德语)- es regnet heute
机器翻译文本 - 今天下雨
所需文本 - 今天正在下雨,今天正在下雨
虽然我们可以看到翻译不正确,但我们可以通过查找 BLUE 分数来更好地了解翻译质量。
示例
#导入库 从数据集导入 load_metric #使用 load_metric 函数 bleu = load_metric("bleu") #设置预测字符串 predictions = [["it", "rain", "today"]] #设置所需字符串 references = [ [["it", "is", "raining", "today"], ["it", "was", "raining", "today"]] ] #print the values print(bleu.compute(predictions=predictions, references=references))
输出
{'bleu': 0.0, 'precisions': [0.6666666666666666, 0.0, 0.0, 0.0], 'brevity_penalty': 0.7165313105737893, 'length_ratio': 0.75, 'translation_length': 3, 'reference_length': 4}
您可以看到翻译效果不是很好,因此 bleu 分数为 0。
示例 2
在此示例中,我们将再次计算 BLEU 分数。但这次,我们将采用机器翻译成英语的法语句子。
源文本(德语)- nous partons en voyage
机器翻译文本 - 我们要去旅行
所需文本 - 我们要去旅行,我们要去旅行
您可以看到,这次翻译的文本更接近所需文本。让我们检查一下它的 BLEU 分数。
示例
#导入库 从数据集导入 load_metric #使用 load_metric 函数 bleu = load_metric("bleu") #设置预测字符串 predictions = [["we", "going", "on", "a", "trip"]] #设置所需字符串 references = [ [["we", "are", "going", "on", "a", "trip"], ["we", "were", "going", "on", "a", "trip"]] ] #打印值 print(bleu.compute(predictions=predictions, references=references))
输出
{'bleu': 0.5789300674674098, 'precisions': [1.0, 0.75, 0.666666666666666, 0.5], 'brevity_penalty': 0.8187307530779819, 'length_ratio': 0.8333333333333334, 'translation_length': 5, 'reference_length': 6}
您可以看到,这次完成的翻译非常接近所需的输出,因此蓝色分数也高于 0.5。
结论
BLEU 分数是一种出色的工具,可用于检查翻译模型的效率,从而进一步改进模型以产生更好的结果。虽然 BLEU 分数可用于大致了解模型,但它仅限于特定词汇,并且经常忽略语言的细微差别。这就是为什么 BLEU 分数与人类判断的协调性如此之低的原因。但有一些替代方案,如 ROUGE 分数、METEOR 指标和 CIDEr 指标,您绝对可以尝试。