关于ROUGE指标中low、mid、high取值含义及AggregateScore聚合值计算方式的技术问询
ROUGE指标中AggregateScore的low/mid/high参数详解
我来帮你把这两个问题讲清楚,结合Hugging Face的实现例子来拆解:
1. low、mid、high取值的含义
这三个参数其实对应ROUGE得分的置信区间边界:
- low:代表置信区间的下限,反映得分可能的最低值范围
- mid:代表置信区间的中间值(通常是所有采样结果的中位数),也是我们最常参考的核心得分
- high:代表置信区间的上限,反映得分可能的最高值范围
它们的存在是为了体现ROUGE得分的统计稳定性——毕竟摘要质量评估本身带有一定随机性,通过置信区间能更严谨地衡量模型表现的可靠程度。
2. AggregateScore聚合值的计算方式
Hugging Face的ROUGE实现里,这些聚合值是通过Bootstrap重采样法计算的,步骤大概是这样:
- 从测试数据集里多次进行带放回的随机抽样,每次抽取一组样本(预测文本+参考文本)
- 对每一组抽样样本,分别计算ROUGE的precision、recall、fmeasure三个指标
- 把多次计算得到的所有指标值按从小到大排序,然后取对应百分位数:
- low对应第2.5百分位
- mid对应第50百分位(中位数)
- high对应第97.5百分位
这样就得到了95%置信水平下的得分区间。
给你看个实际的代码例子(旧版Hugging Face ROUGE实现):
>>> rouge = evaluate.load('rouge') >>> predictions = ["hello there", "general kenobi"] >>> references = ["hello there", "general kenobi"] >>> results = rouge.compute(predictions=predictions, references=references) >>> print(list(results.keys())) ['rouge1', 'rouge2', 'rougeL', 'rougeLsum'] >>> print(results["rouge1"]) AggregateScore(low=Score(precision=1.0, recall=1.0, fmeasure=1.0), mid=Score(precision=1.0, recall=1.0, fmeasure=1.0), high=Score(precision=1.0, recall=1.0, fmeasure=1.0)) >>> print(results["rouge1"].mid.fmeasure) 1.0
这个例子里,预测和参考文本完全匹配,不管怎么抽样计算,得分都是1.0,所以low、mid、high的三个Score值全是1.0。
另外补充一下:现在Hugging Face的ROUGE实现已经做了简化,返回格式改成了更直观的字典,不用再处理AggregateScore对象啦。
内容的提问来源于stack exchange,提问作者Eran H.
相关产品推荐
相关产品推荐

