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

datasets与rouge_score计算ROUGE-1精确率召回率不一致咨询

ROUGE指标计算结果差异原因说明

问题复现

使用datasets和rouge_score两个库计算相同文本对的ROUGE-1指标时,出现精确率、召回率数值互换的情况,测试代码如下:

from rouge_score import rouge_scorer
import datasets

hyp = ['I have no car.']
ref = ['I want to buy a car.']

scorer1 = datasets.load_metric('rouge')
scorer2 = rouge_scorer.RougeScorer(['rouge1'])

results = {'precision_rouge_score': [], 'recall_rouge_score': [], 'fmeasure_rouge_score': [], \
           'precision_datasets': [], 'recall_datasets': [], 'fmeasure_datasets': []}

for (h, r) in zip(hyp, ref):

    precision, recall, fmeasure = scorer2.score(h, r)['rouge1']
    results['precision_rouge_score'].append(precision)
    results['recall_rouge_score'].append(recall)
    results['fmeasure_rouge_score'].append(fmeasure)

    output = scorer1.compute(predictions=[h], references=[r])
    results['precision_datasets'].append(output['rouge1'].mid.precision)
    results['recall_datasets'].append(output['rouge1'].mid.recall)
    results['fmeasure_datasets'].append(output['rouge1'].mid.fmeasure)

print('results: ', results)

代码运行输出如下:

{'precision_rouge_score': [0.3333333333333333], 'recall_rouge_score': [0.5], 
'fmeasure_rouge_score': [0.4],
'precision_datasets': [0.5], 'recall_datasets': [0.3333333333333333],
'fmeasure_datasets': [0.4]}

差异原因

两个库的计算逻辑均无错误,差异来自两个库的传参顺序规则不同:

  • rouge_score库的score方法固定参数顺序为score(reference, prediction),即第一个位置传入参考文本,第二个位置传入模型生成的预测文本。上述测试代码中把预测文本h放在第一个参数位、参考文本r放在第二个参数位,属于传参顺序错误。
  • datasets库的rouge指标compute方法通过显式参数名predictions、references区分传入文本类型,测试代码中此处传参是正确的。

手动验证

按ROUGE-1的标准定义手动计算即可验证正确结果:

  • 预测文本I have no car.拆分后共4个unigram:[I, have, no, car.]
  • 参考文本I want to buy a car.拆分后共6个unigram:[I, want, to, buy, a, car.]
  • 两者重叠的unigram共2个:I、car.
    计算得:
  • 精确率 = 重叠词数 / 预测文本总词数 = 2/4 = 0.5
  • 召回率 = 重叠词数 / 参考文本总词数 = 2/6 ≈ 0.333
  • F1值为精确率和召回率的调和平均数,结果为0.4,和两个库返回的F1值完全匹配——F1值对称,所以即使传参顺序颠倒,F1结果也不会变,这也和测试输出的特征吻合。

将rouge_score的调用代码修正为scorer2.score(r, h)后,两个库返回的三项指标结果会完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:51:06