当你想象一篇 10 页研究论文的优秀摘要应该是什么样子时,脑海中很可能会浮现出一份简洁全面、准确捕捉原文所有关键发现和数据,并以清晰易懂形式呈现的概述。
这对我们来说可能极其显而易见(毕竟,谁不知道好摘要长什么样呢?),但对于像 GPT-4 这样的大型语言模型(LLMs)而言,要准确可靠地把握这一简单概念来评测文本摘要任务,仍是一个重大挑战。
本文将分享我们如何构建自己的LLM评测体系(使用LLMs评测的指标)来评测文本摘要任务。简而言之(无意双关),其核心在于通过封闭式问题实现:
- 识别原文与摘要之间在事实性上的不一致。
- 识别摘要中遗漏原文细节的情况。
文本摘要指标存在的现有问题
传统的非LLM评测方法
历史上,基于模型的评分工具(如 BertScore 和 ROUGE)被用于评测文本摘要的质量。这些指标虽然有用,但往往侧重于表层特征,如词汇重叠和语义相似性。
- 词汇重叠指标:诸如 ROUGE(面向召回率的摘要评测辅助工具)这类指标,常通过比较生成摘要与参考摘要之间的词汇或短语重叠程度来评分。若两者长度相近,词汇重叠的可能性增加,可能导致评分偏高。
- 语义相似性指标:像 BertScore 这样的工具评测生成摘要与参考摘要之间的语义相似度。较长的摘要可能涵盖参考文本更多内容,从而获得更高的相似度评分,即使该摘要在质量或简洁性上未必更优。
此外,当原始文本由拼接的文本块组成时(这在检索增强生成(RAG)摘要应用场景中尤为常见),这些指标表现尤为不佳。因为它们往往无法有效评测组合文本块中不连贯信息的摘要质量。
LLM-评测
在我之前的一篇文章中,我介绍了 G-Eval,这是一个可用于摘要任务的LLM-评测框架。它通常需要将原始文本提供给如 GPT-4 这样的LLM,并要求其生成评分并提供评测理由。然而,尽管优于传统方法,使用LLMs评测文本摘要仍面临一系列挑战:
- 随意性:LLM思维链(CoTs)往往具有随意性,这一点在模型忽略人类通常认为摘要中必须包含的关键细节时尤为明显。
- 偏见:LLMs常忽视摘要与原文间的事实不一致性,因其倾向于优先选择反映训练数据风格和内容的摘要。
简言之,任意性导致LLM-评测忽略了关键细节的缺失(或至少削弱了其识别何为关键的能力),而偏见则使LLM-评测未能察觉原文与摘要间的事实矛盾。
LLM-评测可通过工程方法克服任意性与偏见
毫不意外,在 Confident AI 开发我们自己的摘要评测指标时,我们遇到了上述所有问题。然而,我们偶然发现了这篇论文,它介绍了问答生成框架,这对克服LLM-Evals 中的偏见和不一致起到了关键作用。
问答生成(QAG)框架
问答生成框架的核心流程是:基于特定文本(实践中可为原文或其摘要)自动化构建封闭式问题,随后要求语言模型(LM)基于参考文本生成对应答案。
以此文本为例:
“覆盖率得分”的计算方式为评测问题所占百分比
对于摘要和原始文档均给出“是”回答的评测问题所占比例。这种方法确保摘要不仅包含原文的关键信息,还准确无误地呈现了这些信息。覆盖率得分越高,表明摘要越全面且忠实,意味着摘要有效地囊括了原始内容中的关键点和细节。
根据 QAG 框架,一个示例问题为:
“覆盖率得分”是否指的是摘要和原始文档对评测问题均回答“是”的百分比?
对此,答案应为“是”。
在评测摘要任务中,问答生成(QAG)至关重要,因为封闭式问题消除了随机性,从而避免了LLM-评测中的任意性和偏见。
文本摘要指标是覆盖度与对齐分数的结合
若重读本文首段,你会发现归根结底在摘要任务中只需关心两件事:
- 原文细节的覆盖程度。
- 原文与摘要间的事实对齐。
因此,可通过分别计算覆盖率和对齐得分来评测文本摘要任务,并将两者结合得出最终的摘要评分。
计算覆盖率得分
那么,这里有一个有趣的挑战给你:根据这两条信息,你能推断出我们如何利用 QAG 来计算覆盖率得分吗?
- 覆盖率衡量摘要从原文中涵盖的细节量。
- QAG 需要参考文本来生成一组封闭式问题。
剧透警告,以下是算法:
- 在摘要任务中从原文生成 n 个问题。
- 针对每个问题,分别依据原文和摘要中的信息生成“是”、“否”或“不知道”的回答。摘要中的“不知道”表示摘要未包含足够信息来回答问题。
匹配答案的数量越多,覆盖率得分越高。这是因为匹配答案表明摘要既事实正确,又包含足够细节来回答问题。摘要中的“否”表示矛盾,而“不知道”则表示遗漏。(由于问题是从原文生成的,原文的答案应全为“是”。)
为何使用原文生成待提问的问题?因为原文实质上是摘要的超集,作为参考生成问题能准确判断摘要是否遗漏重要细节。为确保评测的准确性,必须参考包含更全面细节的原文。
计算覆盖率的问答生成示例
计算对齐分数
计算对齐分数的通用算法与覆盖率计算所用算法相同。但需注意,在对齐情况下,我们改用摘要作为参考文本来生成封闭式问题。这是因为对于对齐而言,我们仅需检测幻觉和矛盾情况,因此更关注原文对摘要问题的回答。
原文回答中的“不知道”或“否”分别表示存在幻觉或矛盾。(再次强调,摘要的答案应均为“是”。)
合并分数
有几种方法可以结合这些分数来生成最终的摘要评分。你可以取平均值、使用几何/调和平均数,或者取两者中的较小值,仅列举几种选项。目前,我们 Confident AI 选择采用直接取两者中较小值的简单方法。这一选择优先确保评分的准确性,但请记住,我们会持续监控结果以根据需要优化我们的方法。记得根据你的使用场景选择最合适的方式!
结论
LLM-评测优于传统指标,但LLMs存在任意的思维链和偏见,导致它们在评测过程中忽视事实上的不一致和细节遗漏。如果你想亲自让文本摘要任务的LLM-评测更加可靠,QAG 是一个极佳的框架。
不过,若仅想使用基于 QAG 评估摘要的LLM-Eval 工具,DeepEval 将是你的理想选择。我们已为你完成了所有繁重工作。只需提供原文与摘要,短短 10 行代码即可计算出摘要评分。(注:若你对预期摘要类型有明确要求,也可手动提供一组用于计算覆盖率的评估问题。)
from deepeval import evaluate
from deepeval.test_case import LLMTestCase
from deepeval.metrics import SummarizationMetric
test_case = LLMTestCase(
input="the original text...",
actual_output="the summary..."
)
summarization_metric = SummarizationMetric()
evaluate([test_case], [summarization_metric])