文本摘要的多维评测:从ROUGE到事实一致性的三层评估体系

发布时间:2026/7/25 4:11:21
文本摘要的多维评测:从ROUGE到事实一致性的三层评估体系 文本摘要的多维评测从ROUGE到事实一致性的三层评估体系文本摘要的自动评测长期依赖ROUGE系列指标但ROUGE仅衡量n-gram重叠无法评估事实一致性、信息覆盖度和可读性等关键维度。本文提出文本摘要的三层评估体系表层匹配层ROUGE、BLEU、METEOR、语义层BERTScore、BARTScore和事实层FactCC、SummaC分析各层指标的适用边界和相关性并基于SummEval和FRANK数据集给出不同摘要场景下的指标组合建议。一、ROUGE的边界与盲区ROUGERecall-Oriented Understudy for Gisting Evaluation是摘要评测中使用最广泛的指标其核心思想是计算候选摘要与参考摘要之间的n-gram重叠度。ROUGE-1计算unigram重叠ROUGE-2计算bigram重叠ROUGE-L基于最长公共子序列LCS。ROUGE在评测与参考摘要的词汇相似度方面表现良好但在以下场景中完全失效事实扭曲将公司营收增长15%误述为公司营收下降15%ROUGE-1可能仍然很高因为大多数词汇相同语义等价张三击败了李四和李四输给了张三ROUGE-2完全为零信息冗余一个300词的生成式摘要反复重复同一信息ROUGE可能因其覆盖参考摘要的所有n-gram而得到高分二、语义层指标的原理与实现BERTScoreZhang et al., ICLR 2020用BERT的上下文嵌入替代n-gram的精确匹配。其计算过程为对候选摘要和参考摘要的每个token提取BERT嵌入计算两个嵌入集合之间的余弦相似度矩阵执行贪心匹配对候选中的每个token找到参考中最相似的token计算精确率候选→参考匹配度的均值和召回率参考→候选匹配度的均值import torch from transformers import AutoTokenizer, AutoModel from typing import List, Tuple class BERTSummaryEvaluator: 基于 BERTScore 的摘要语义层评测。 def __init__(self, model_name: str microsoft/deberta-xlarge-mnli): 使用 NLI 微调的 DeBERTa 作为骨干模型。 NLI 任务训练的模型对语义等价/矛盾的区分能力更强。 self.tokenizer AutoTokenizer.from_pretrained(model_name) self.model AutoModel.from_pretrained(model_name) self.model.eval() torch.no_grad() def compute_bertscore( self, candidate: str, reference: str, idf_weights: bool False, ) - dict: 计算 BERTScore 的精确率、召回率和 F1。 Args: candidate: 模型生成的候选摘要 reference: 人工编写的参考摘要 idf_weights: 是否使用 IDF 加权长文本推荐开启 Returns: 包含 precision, recall, f1 的字典 # Tokenize 并获取嵌入 cand_inputs self.tokenizer( candidate, return_tensorspt, truncationTrue, max_length512 ) ref_inputs self.tokenizer( reference, return_tensorspt, truncationTrue, max_length512 ) cand_embeds self.model(**cand_inputs).last_hidden_state[0] ref_embeds self.model(**ref_inputs).last_hidden_state[0] # 对嵌入进行 L2 归一化 cand_embeds torch.nn.functional.normalize(cand_embeds, dim-1) ref_embeds torch.nn.functional.normalize(ref_embeds, dim-1) # 计算余弦相似度矩阵 (cand_len, ref_len) sim_matrix cand_embeds ref_embeds.T # (L_c, L_r) # 贪心匹配每个候选 token 找最相似的参考 token # 精确率 mean(max over reference for each candidate) precision sim_matrix.max(dim1).values.mean().item() # 召回率 mean(max over candidate for each reference) recall sim_matrix.max(dim0).values.mean().item() # F1 if precision recall 0: f1 2 * precision * recall / (precision recall) else: f1 0.0 return { bertscore_precision: precision, bertscore_recall: recall, bertscore_f1: f1, } torch.no_grad() def _rescale_with_baseline(self, score: float) - float: BERTScore 的原始值通常在 0.85-0.95 之间过于集中 使用经验基线进行线性映射使其更可解释。 基线值由论文作者在 Common Crawl 语料上估算得到。 # 这些基线值来自 BERTScore 论文的公开数据 baseline 0.85 # 随机句子对的期望 BERTScore return max(0, (score - baseline) / (1 - baseline))BERTScore相比ROUGE的显著优势在于其对同义词和释义的鲁棒性——excellent performance和remarkable results在ROUGE中是完全不同的bigram但在BERTScore中因嵌入空间的语义邻近性可获得较高的相似度得分。三、事实一致性层的评测方法事实一致性评测回答的是候选摘要中的每一条事实性陈述是否与源文档一致本文使用三种互补方法FactCCKryscinski et al., EMNLP 2020基于文本转换的数据增强方法。对源文档的句子进行指代消解、否定引入、实体替换等转换生成一致和不一致的训练对训练一个二分类器判断摘要句是否忠实于源文档。SummaCLaban et al., TACL 2022将摘要和源文档分别分割为句子对每个摘要句与源文档的所有句子进行NLI推断。使用蕴含比例被源文档蕴含的摘要句占比作为一致性得分。QAFactEval将摘要中的每条事实转化为问答对用QA模型在源文档中寻找答案。如果QA模型在源文档中找到了与摘要中一致的回答则认为该事实是忠实于源文档的。实验数据SummEval基准100条CNN/DM摘要指标与人工事实一致性评分的Pearson rROUGE-10.22BERTScore0.31FactCC0.57SummaC (ZS)0.62QAFactEval0.66ROUGE与人工事实一致性评分的相关性仅0.22——远低于事实一致性专用指标。这意味着仅用ROUGE评测摘要质量存在严重的事实盲区。四、不同摘要场景的指标组合策略基于三层评估体系提出场景化的指标组合策略抽取式摘要ROUGE高效、可解释 BERTScore语义冗余检测。抽取式摘要不存在事实性问题核心诉求是内容选择和冗余控制。生成式摘要短文本BERTScore SummaC。生成式摘要的语义灵活性和事实可靠性同等重要ROUGE的n-gram刚性匹配在这里不适用。生成式摘要长文本/专业领域QAFactEval事实验证 BERTScore语义覆盖。专业领域医疗、法律的事实错误代价极高需要最严格的事实一致性检查。日常开发迭代ROUGE-L快速反馈10ms内完成 SummaC定期批量验证。ROUGE-L的计算速度使其适合训练过程中的实时监控。五、总结文本摘要评测需要从表层匹配、语义匹配和事实一致性三个层级系统评估。ROUGE作为最广泛的指标在事实一致性上的相关性仅0.22不能单独用作摘要质量的风向标。BERTScore通过上下文嵌入将语义等价纳入评测但无法解决事实幻觉问题。FactCC和SummaC等事实一致性专用指标通过NLI推断对事实可靠性进行独立检查与人工评分的相关性达到0.62-0.66。在实际项目中应根据摘要类型抽取式/生成式和领域风险等级选择不同权重的指标组合。