YodaQA评测体系完整指南:用curated事实型数据集测量问答系统准确率与Top-N召回
YodaQA评测体系完整指南用curated事实型数据集测量问答系统准确率与Top-N召回【免费下载链接】yodaqaA Question Answering system built on top of the Apache UIMA framework.项目地址: https://gitcode.com/gh_mirrors/yo/yodaqaYodaQA 是基于 Apache UIMA 框架构建的开源问答系统而它的data/eval/目录就藏着一套完整、可复现的评测体系用 curated 事实型factoid数据集批量提问自动测量系统准确率与 Top-N 召回并把每次提交commit的成绩存档对比。本文带你从零看懂这套问答系统评测体系怎么运转。为什么问答系统需要一套评测体系 问答系统的改进往往发生在很细的环节特征向量、打分权重、证据扩散……如果没有固定的基准测试集你根本无法回答这次改动到底让系统变强还是变弱了。YodaQA 的解法是把评测数据、评测脚本、历史记录全部放进仓库组成部分位置作用评测数据集data/eval/curated-train.tsv、curated-test.tsv430 题训练集 430 题盲测集训练评测流水线data/eval/train-and-eval.sh一键重训模型并跑双数据集成绩统计data/eval/tsvout-stats.sh输出准确率 / 召回 / MRR历史成绩存档data/eval/tsv/每个 commit 一份结果 TSV失败召回分析data/eval/analysis/系统归因未召回的问题整套说明文档就在 data/eval/README.md 一类的目录 README 中本仓库各子目录均配有详细注释。curated 事实型数据集评测的基石 YodaQA 默认使用factoid-curated 数据集 v1人工筛选过的事实型问题集每题都带标准答案。1. 文件格式4 列 TSV打开data/eval/curated-train.tsv每行是一道题用制表符分成 4 列10048 factoid Where was the first atomic bomb detonated? White Sands|New Mexico 2248 factoid How many planets are in our solar system? nine|9|eight|8 1647 factoid What continent is Scotland in? Europe列含义1问题 ID来自 TREC 编号2问题类别这里是factoid事实型3问题文本英文4标准答案正则表达式|分隔多个可接受答案用正则而非纯文本做答案是个亮点像How many planets are in our solar system?同时接受nine|9|eight|8How deep is Crater Lake?接受1,932 feet、594 m等多种合法表述——宽松但严格地判定答对。2. 训练集 vs 盲测集curated-train.tsv430 题用于主开发、性能分析、机器学习模型训练curated-test.tsv430 题专门用于基准测试团队刻意把它当盲集——不针对其中任何单题做优化避免过拟合。此外还有更大规模的噪声数据集large2180-*.tsv、large2470-*.tsv以及旧版curatedv1-*.tsv可通过-d参数切换比如-d large2180就能在更嘈杂的 2180 题集上考察系统。核心指标准确率、Top-N 召回与 MRR✅ 系统对每道题输出一份结果 TSV由GoldStandardAnswerPrinter生成源码GoldStandardAnswerPrinter.java列含义一目了然列含义ID / TIME问题 ID、处理耗时秒QUESTION问题文本SCORE综合得分公式1 - log(1rank)/log(答案数)正确答案排名越靠前分越高RANK标准答案在系统输出列表中的名次-1 表示未召回NRANKS系统给出的候选答案总数TOPANSWERS…Top-N 候选答案默认 15 个每个附置信度一键统计三件套运行data/eval/tsvout-stats.sh每份结果文件会浓缩成一行核心指标curated-test-abc1234 perfect 230/430 53.5% any 342/430 79.5% mrr 0.548 avgtime 1.234perfectTop-1 准确率正确答案排在第 1 位的问题数与占比——这是准确率anyTop-N 召回率正确答案出现在候选列表中任意位置的问题数与占比——衡量系统的召回能力mrr平均倒数排名对每题按1/(rank1)求平均同时奖励排得靠前avgtime平均每题耗时兼顾性能维度。不带参数直接运行该脚本还能按时间顺序列出仓库所有历史 commit 的成绩——相当于内置了一棵评测演化曲线。一次完整评测怎么跑在仓库根目录执行data/eval/train-and-eval.sh这个脚本data/eval/train-and-eval.sh会自动临时克隆当前 commit 的代码未提交的改动不参与评测保证可复现并行跑训练集与测试集先用旧模型出答案重训机器学习模型后再出最终答案产出答案 TSV、特征向量文件、新模型参数与日志自动调用tsvout-stats.sh打印成绩并提示你提交更新后的模型文件。常用选项-s N限制并行线程数也可用环境变量YODAQA_N_THREADS-m 6000M多核时加大 JVM 堆内存-d large2180换数据集-Dcz.brmlab.yodaqa.use_bingyes改用 Bing 搜索作为数据源。⚠️ 提示反复评测会产生几十上百 GB 的数据与日志data/eval/cleanup-stale.sh用于清理陈旧记录会删除文件慎用。进阶分析对比两次评测、挖掘召回失败1. 逐题对比两个 commitdata/eval/tsvout-compare.sh abc1234 def5678tsvout-compare.sh会把两次评测按题对齐分四组高亮输出新答对的题Gained、分数变好的题Improved、变差的题Worsened、丢掉答案的题Lost——改动效果的归因一目了然。2. 查看正确答案的排名分布data/eval/tsvout-ranks.sh data/eval/tsv/curated-train-*.tsv把标准答案排进前 N 名的题按名次排序编号方便直接读出中位数再加一层tsvout-rankgraph.sh就用 gnu-plot 画出Top-N 召回曲线横轴 N纵轴前 N 名内含正确答案的题目比例直观呈现召回随候选数增加而收敛的形态。3. 精确率-召回率权衡ROCdata/eval/tsvout-roc.pl按置信度阈值遍历每题输出 precision/recall 权衡数据并用prt.gle、roc.gle绘制 PR 曲线与 ROC 曲线——帮你回答置信度阈值设在多少才值得作答。4. REST 接口批量评测如果 YodaQA 已经作为 Web 服务跑着REST API可以用data/eval/rest-eval.py直接向接口发问data/eval/rest-eval.py 题目.json http://localhost:4567/脚本逐题轮询结果统计 correct / recall / incorrect 三档输出每题的详情页 URL适合对线上部署形态做快速回归。5. 失败召回的系统归因data/eval/analysis/目录存放历次未召回问题的分析文本换新版本评测后用data/eval/analysis-update.pl把旧分析结果映射到新结果上避免重复劳动——这也是团队估算还有多少提升空间headroom的主要手段。小结 YodaQA 的评测体系值得任何问答项目借鉴固定数据集curated 事实型 TSV正则答案兼顾严谨与宽松训练/盲测严格分离一键流水线train-and-eval.sh保证同 commit 同数据的可复现评测多层指标Top-1 准确率、Top-N 召回、MRR、耗时四维齐看闭环分析逐题对比、召回失败归因、PR/ROC 权衡把变好还是变坏变成可执行的答案。拿到仓库git clone https://gitcode.com/gh_mirrors/yo/yodaqa后打开data/eval/README.md照着上面的命令依次跑一遍你就能看到这套评测体系完整的运转过程。【免费下载链接】yodaqaA Question Answering system built on top of the Apache UIMA framework.项目地址: https://gitcode.com/gh_mirrors/yo/yodaqa创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考