news 2026/10/22 1:27:52

XL-DocBench如何打分?Accuracy、Token F1与ANLS三大评测指标深度解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
XL-DocBench如何打分?Accuracy、Token F1与ANLS三大评测指标深度解析

【免费下载链接】XL-DocBench

项目地址:https://ai.gitcode.com/hf_mirrors/microsoft/XL-DocBench
点击查看免费下载

XL-DocBench 是一个面向超长文档理解的问答评测基准(Benchmark),收录了 292 份文档、1345 道由 194 位人类专家核验的题目。本文带你彻底看懂它内置的三大评测指标——Accuracy(准确率)、Token F1 与 ANLS:它们各算什么、差在哪、分数该怎么读,并附一条命令的本地打分方法。

📦 XL-DocBench 是什么?

一句话概括:它考察系统能否在数百甚至上千页的长文档中找到证据、拼齐所有支撑、用对规则,并且懂得"该说不知道"。

内容文件说明
文档元数据data/documents.jsonl292 份文档的 URL、页数、领域等信息
单文档问答data/qa_single_doc.jsonl1191 题,答案来自同一份文档
跨文档问答data/qa_cross_doc.jsonl154 题,需综合多份文档作答
逐题分数results/scores.jsonl13 个参考系统 × 1345 题的打分明细
汇总分数results/summary.json各系统的 Accuracy / Token F1 / ANLS 总分

每道题都带有answer.value(标准答案)、answer.format(Str / Int / Float / None 等)和verification_rule(校验规则),这正是后面三种指标分工的依据。统计口径可在 manifest.json 中查到,例如答案格式分布为:Str 838 题、Int 209 题、Float 110 题、None(不可回答)188 题。

🧮 三大指标速览

指标核心问题取值方式特点
Accuracy"答对了吗?"对/错(1 或 0)按答案类型走不同判定规则,带"宽松"容差
Token F1"沾边多少?"0~1 连续值词元级精确率/召回率调和均值,部分正确也得分
ANLS"拼写上差多少?"0~1 连续值归一化编辑距离相似度,低于 0.5 直接判 0

三者都由同一个打分脚本 code/evaluate.py 计算——它是纯 Python 标准库实现、完全确定性(无模型调用、无网络请求),保证任何人重跑结果一致。

🚀 一键运行评测:从 5 道题的样例开始

如果你想亲手验证,先克隆仓库(只读使用):

git clone https://gitcode.com/hf_mirrors/microsoft/XL-DocBench.git cd XL-DocBench

仓库内置了 5 道例题的"标准答案 + 完美预测",一条命令即可跑通:

uv run --no-project python code/evaluate.py \ --gold-files code/examples/gold_sample.jsonl \ --predictions code/examples/predictions_sample.jsonl

评测样例文件位于 code/examples/gold_sample.jsonl(5 条题目)和 code/examples/predictions_sample.jsonl(5 条完美预测)。完美预测下三项指标都会得到满分 1.0,这也是 code/quickstart.py 冒烟测试的回归断言。

对真实模型输出,则提供"每题一行"的预测文件(字段名支持prediction、model_answer、answer、response、output任意一种):

{"question_id": "adubench_single_000001", "prediction": "the biggest single risk to human health worldwide"} {"question_id": "adubench_cross_000001", "prediction": "macroprudential measures"}
uv run --no-project python code/evaluate.py \ --predictions predictions.jsonl \ --output eval_report.json \ --per-question-csv per_question.csv

报告除总分外,还会按domain(领域)、difficulty(难度)、reasoning_type(推理类型)、answer_format(答案格式)、evidence_source(证据来源)等维度给出分组细分,方便定位"模型到底弱在哪"。

✅ Accuracy:不只看字面,而是按答案类型"对规则"

Accuracy 是基准的"硬指标",但并非简单的字符串精确匹配。实现见 code/evaluate.py 中的accuracy_score函数。所有文本先经过统一归一化(normalize_answer,见 code/evaluate.py):

  • 转小写、去除首尾空白
  • 剥掉 "the answer is"、"answer:" 之类的前缀
  • 删除标点等特殊字符,去掉冠词 a / an / the,合并多余空格

然后按答案格式分派不同规则:

答案格式判定规则例子
Str(实体/短语)归一化后标准答案包含在预测中,或两者编辑距离相似度 ≥ 0.8,即算对标准答案 14 个词,预测多写了几句但完整包含答案 → 1 分
Int / Float / Percentage从文本中提取数字,相对误差 ≤ 5%即算对标准答案 25,预测 "25.3" → 相对误差 1.2% → 1 分
Bool识别 yes/no、true/false 等语义并比较"Of course not" 与 "no" 同判为否定 → 1 分
单选题(A–D)提取预测和标准答案中的选项字母并比较预测 "B" 与 "选项 B 正确" → 1 分
None(不可回答)预测须包含 "not answerable"、"cannot be determined" 等拒答短语188 道 None 题专考"知道何时说不知道"

数字提取器(code/evaluate.py)相当聪明:能解析10^3幂次、1/2分数、千分位逗号、小数点和科学计数法,所以模型即使输出 "1,250.5" 或 "2.5e2" 也不会被误杀。

💡要点:Accuracy 衡量的是"最终结论是否正确",它对措辞、包装语和数值容差都足够宽容,是排行榜上的第一顺位指标。

🎯 Token F1:没答全,也要给它应得的分数

Token F1 回答的是"答错多少分"的问题。它把预测和标准答案归一化后切分成词元集合(忽略词序、只看重合),计算精确率(预测中有多少词是对的)与召回率(标准答案有多少词被覆盖了):

F1 = 2 × Precision × Recall / (Precision + Recall)

实现见 code/evaluate.py。两个关键特性:

  • 词序无关:集合比较天然不关心词的排列,"macroprudential measures" 与 "measures macroprudential" 的 F1 都是满分
  • 零重合直接归零:两个词元都不重合时,F1 为 0(沿用 SQuAD 的经典约定),防止"文不对题但共享虚词"的投机行为

举个例子:标准答案是 2 个词,你的预测写对了其中 1 个、另多写 1 个词,则 P = R = 0.5,F1 = 0.5——这正是"部分正确"的量化体现。

📏 ANLS:为"拼写小差"专门设计的相似度指标

ANLS(Average Normalized Levenshtein Similarity)专为应对实体名长短不一、拼写轻微偏差的场景,公式分两步(code/evaluate.py):

  1. 计算归一化 Levenshtein 相似度= 1 − 编辑距离 ÷ 较长串长度
  2. 设置0.5 阈值:相似度 ≥ 0.5 时取相似度本身作为得分,否则一律记 0

这意味着 ANLS 比 Accuracy 更能给出"细粒度分数":

预测 vs 标准答案相似度ANLS 得分
完全一致1.01.0
多拼了一个字母(长句)≈ 0.95≈ 0.95
只答对一半的短答案0.40(低于阈值)
完全文不对题< 0.50

⚠️ ANLS 对短答案"很苛刻":短串上一个字符的差别就会大幅拉低相似度,可能直接跌破 0.5 阈值归零。这也是它和 Token F1 的分工所在——F1 看词重合,ANLS 看整体拼写接近度。

📊 一个真实例子:同一道题,三个指标三种面孔

打开 results/scores.jsonl 的第一行(题目adubench_single_000001),标准答案是"the biggest single risk to human health worldwide"。各系统得分呈现出非常典型的分层:

系统AccuracyToken F1ANLS
GPT-5.4(OCR 输入)1.01.01.0
GPT-5.2(OCR 输入)1.00.7370.613
Kimi-K2.5(OCR 输入)1.01.01.0
Qwen3.5-4B(图片输入)0.00.3640.0

解读:GPT-5.2 的答案覆盖了全部标准词(Accuracy = 1),但预测文本里还多写了不少内容,词元精确率被稀释,Token F1 掉到 0.74,整句拼写相似度 0.61;而 Qwen3.5-4B 走图片输入时词元重合不足 0.5 阈值,ANLS 归零。同一个模型换 OCR 输入后分数普遍更高(GPT-5.4:38.36 vs 26.77),说明输入模态对这个基准影响很大。

汇总视角见 results/summary.json:

排名系统输入Accuracy ↑Token F1 ↑ANLS ↑
1GPT-5.4OCR38.3639.7034.17
2SimpleDoc + GPT-5.4Agent36.2133.6224.30
3Kimi-K2.5OCR36.0638.2432.64

(完整榜单见仓库 README;所有分数文件均为 0~1 标度,README 中已换算成百分数。)

❓ 常见打分细节 FAQ

  • 模型漏答/输出解析失败怎么办?缺失、失败或无法解析的预测,三项指标一律记 0;若只想评测"答了的题",加--ignore-missing参数(见 code/evaluate.py)。
  • 分数范围?逐题分数存为 0~1 小数(results/scores.jsonl),系统总分在 results/summary.json 中同样是 0~1 标度。
  • 为什么 13 个系统可以互相比较?全部使用同一份"加固版"评测器,且 manifest.json 里记录了评测脚本的 SHA-256 指纹(score_evaluator_sha256),任何人可用 code/evaluate.py 复现,结果完全一致。
  • 如何快速验证数据集完整性?运行uv run --no-project python code/quickstart.py,它会检查题量、文档引用、证据页元数据与分数覆盖,并跑通 5 题评测样例,全部通过后输出smoke test: PASS。

🧭 总结:三把尺子各量什么?

你想回答的问题看哪个指标
结论对不对(硬考核)Accuracy
内容沾边多少(软考核)Token F1
实体拼写/整体接近度ANLS

对新手最实用的一条建议:以 Accuracy 定排名,用 Token F1 和 ANLS 看差距,再用domain / difficulty / answer_format细分报告找短板。掌握这套"三指标 + 细分"读法,你就能像基准作者一样,一眼看懂任何模型在超长文档理解上的真实水位。

【免费下载链接】XL-DocBench

项目地址:https://ai.gitcode.com/hf_mirrors/microsoft/XL-DocBench
点击查看免费下载

相关推荐

上一篇:为什么gb-sketch-segmentcircle是Sketch设计师必备插件:节省数小时设计时间的秘密
下一篇:如何利用Step 3.5 Flash构建高效的智能代理与自动化编程系统:终极实战指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 1:23:58

如何快速下载QwQ-32B-W8A8:ModelScope SDK、Git Clone等3种方法完整清单

【免费下载链接】QwQ-32B-W8A8 项目地址&#xff1a; https://ai.gitcode.com/hf_mirrors/vllm-ascend/QwQ-32B-W8A8 点击查看 免费下载 QwQ-32B-W8A8 是一款基于 Qwen2 架构的 W8A8 量化大语言模型。本文详细介绍 ModelScope SDK、Git Clone、modelscope CLI 命令等 3 种实用…

作者头像 李华
网站建设 2026/10/22 1:19:33

Path of Building PoE2 离线BD计算器:伤害、天赋、存档一次搞定

Path of Building PoE2 离线BD计算器&#xff1a;伤害、天赋、存档一次搞定 【免费下载链接】PathOfBuilding-PoE2 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding-PoE2 Path of Building PoE2 是一款免费开源的《流放之路2》离线 BD 规划器&#x…

作者头像 李华