【问题标题】:Why Sacrebleu returns zero BLEU score for short sentences?为什么 Sacrebleu 对短句返回零 BLEU 分数?
【发布时间】:2021-06-23 14:00:53
【问题描述】:

为什么scarebleu 需要句子以点结尾?如果我删除点,则值为零。

import sacrebleu, nltk
sys = ["This is cat."] 
refs = [["This is a cat."], 
        ["This is a bad cat."]] 

b3 = sacrebleu.corpus_bleu(sys, refs)
print("b3", b3.score)
print("b3", round(b3.score,2))

这将返回以下内容:

b3 35.1862973998119
b3 35.19

当我删除结束点时。

sys = ["This is cat"] 
refs = [["This is a cat"], 
        ["This is a bad cat"]] 


b3 = sacrebleu.corpus_bleu(sys, refs)
print("b3", b3.score)
print("b3", round(b3.score,2))

它使用 scarebleu 打印零,这又很奇怪!:

b3 0.0
b3 0.0

【问题讨论】:

  • 一个问题可能是 NLTK 似乎期望标记​​化的句子作为参数:nltk.org/api/…

标签: nltk bleu


【解决方案1】:

BLEU 被定义为(修改后的)n-gram 精度的几何平均值,最高可达 4-gram(乘以简洁惩罚)。因此,如果整个测试集中没有匹配的 4-gram(没有 4-tuple of words),则 BLEU 定义为 0。最后有一个点将被标记化,使得现在有 4-gram 匹配,因为应用了平滑。

BLEU 设计用于对包含数百个句子的测试集进行评分,而这种情况不太可能发生。对于单个句子的评分,您可以使用使用某种平滑的句子级版本的 BLEU,但结果仍然不理想。您还可以使用基于字符的度量,例如chrF (sacrebleu -m chrf)。

您还可以将use_effective_order=True 传递给 corpus_bleu,以便只计算匹配的 n-gram 顺序而不是 4 个 n-gram。但是,在这种情况下,该指标并不完全是人们所指的 BLEU。

【讨论】:

    猜你喜欢
    • 2021-04-03
    • 2020-08-19
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    相关资源
    最近更新 更多