You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NLTK计算BLEU得分异常偏低及权重影响的原因咨询

关于NLTK中BLEU分数计算的疑问解答

为什么短句子默认权重得分极低?

NLTK的sentence_bleu函数默认权重是(0.25, 0.25, 0.25, 0.25),也就是同时对1-gram(单个词)、2-gram(连续两个词)、3-gram(连续三个词)、4-gram(连续四个词)的匹配率做几何平均。

你第一个例子里,参考句和候选句只有第三个词不同:

  • 1-gram匹配率是3/4=0.75
  • 2-gram里,['is','ae']和候选的['is','ad']不匹配,匹配率为2/3≈0.666
  • 3-gram里,['this','is','ae']和['is','ae','test']都和候选不匹配,匹配率为1/2=0.5
  • 4-gram完全不匹配,匹配率为0

几何平均的特点是只要有一项为0,结果就会趋近于0,所以最终得到了接近0的极小值1.0547686614863434e-154。

为什么加weights=[1]能得到合理的0.75?

weights=[1]表示只计算1-gram的匹配率,也就是只看单个词的匹配情况。你的候选句4个词里对了3个,3/4=0.75,这就是直接反映单词匹配度的结果。

长句子默认权重得分仍然偏低的原因

长句子例子里,虽然只有一个词错误,但这个错误会影响所有包含该词的高n-gram:

  • 1-gram匹配率是6/7≈0.857
  • 2-gram里,['is','ae']不匹配,匹配率为5/6≈0.833
  • 3-gram里,['this','is','ae']、['is','ae','test']都不匹配,匹配率为3/5=0.6
  • 4-gram里,前三个包含ae的4-gram都不匹配,匹配率为1/4=0.25

默认权重下,这四个n-gram的匹配率要做几何平均,低匹配率的高n-gram会大幅拉低整体分数,所以最终得到0.488左右的结果。

总结

BLEU分数的计算逻辑高度依赖你设置的n-gram权重:

  • 短句子或局部词错误的场景,默认的4-gram均衡权重很容易因为高n-gram匹配率骤降导致分数失真
  • 如果只关注单词层面的匹配,用weights=[1]就够了
  • 如果需要兼顾局部连续词的匹配,可以根据句子长度调整权重,比如短句子用weights=(0.5, 0.5, 0, 0)(只看1-gram和2-gram),避免高n-gram的负面影响

内容的提问来源于stack exchange,提问作者randie pathirage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 21:24:57