Nlp 如何计算BLEU分数而不使用简洁性惩罚

Nlp 如何计算BLEU分数而不使用简洁性惩罚,nlp,nltk,machine-translation,bleu,Nlp,Nltk,Machine Translation,Bleu,代码: import nltk from nltk.translate.bleu_score import sentence_bleu score1 = sentence_bleu(ref1, cand) 我怎么能从这里计算的BLEU分数中忽略简洁性惩罚?如果您查看NLTK中的源代码,您可以看到简洁性惩罚在计算中是硬编码的,就在返回最终分数之前,在下一行 s=bp*math.exp(math.fsum) 您当然可以复制和修改源代码。还有breivity\u惩罚函数,允许您自己计算并再次除

代码:

import nltk
from nltk.translate.bleu_score import sentence_bleu 
score1 = sentence_bleu(ref1, cand) 

我怎么能从这里计算的BLEU分数中忽略简洁性惩罚?

如果您查看NLTK中的源代码,您可以看到简洁性惩罚在计算中是硬编码的,就在返回最终分数之前,在下一行

s=bp*math.exp(math.fsum)
您当然可以复制和修改源代码。还有
breivity\u惩罚
函数,允许您自己计算并再次除以分数

另外,请注意,NLTK中BLEU的实现不同于最近在包中完全复制的原始参考实现。主要问题是BLEU的参考实现使用了NLTK没有实现的非标准标记化规则。所有当前的机器翻译文献都使用sacrebleu报告BLEU分数

使用sacrebleu,您可以获得如下句子级别的BLEU:

导入sacrebleu
bleu=sacrebleu.句子_bleu(“我是海象。”,[“我是海象。”)
输出是一个元组,其中包含最终分数以及各个组件:n-gram精度和简洁性惩罚