拿大模型做数学卷子,写完答案只是前半程,真正决定分数的是后面那道判分工序。所谓数学自动判分,是在模型提交回答之后,由一条「抽取、比对、给分」的流水线接力完成,任何一环卡住,正确答案也会被记零分。这篇文章把这条流水线拆开,看每一步进来什么、发生什么、出去什么。
判分链路从提交到分数
整条链路分四步:先从回答里抽出最终答案,再按题型选判分方式,接着执行比对,末了汇总成分数。进来的是一段自然语言长文,出去的是一个数值。难点全在中间:回答里既有推理过程又有结论,抽取器要先把「所以答案是 42」这样的尾巴找出来,找错了位置,后面比对再精确也白搭。不少团队会让模型按固定格式作答,比如要求最后一行以「最终答案:」开头,把结论逼到固定位置,抽取成功率立刻上去。DeepSeek、Kimi 这类模型在评测时通常也会被套上统一的作答模板,保证抽取口径一致。
四类判分方式各管一段,分工和失手点在这:
| 判分方式 | 适用题型 | 怎么判 | 容易失手的地方 |
|---|---|---|---|
| 字符串精确匹配 | 选择题、整数题 | 两段文本比对,出一个布尔值 | 结论没落在约定位置,比对拿不到输入 |
| 数值容差 | 小数题 | 允许千分之一偏差,按题型分级设定容差带 | 定太严误杀等价答案,定太松放进只凑近的答案 |
| 符号计算等价判定 | 表达式题,如 1/2、0.5、分数写法 | 两边都化成标准形再比较 | 化简不出来就得转人工复核 |
| 模型判分员 | 开放性证明题、文字应用题 | 更强模型对照评分细则逐条核对,先复述依据再下结论,输出分项得分 | 判分员自身有波动,要同题多判、不一致转人工 |
规则判分:精确匹配与数值容差
规则判分是第一道闸。选择题、整数题走字符串精确匹配,进来两段文本,出去一个布尔值;小数题给数值容差,比如允许千分之一的偏差,常见做法是按题型分级设定容差带,并在技术报告里公开。容差定太严会把等价答案误杀,定太松会把只凑近的答案放进来,两种偏差都会让分数失真。要判断判分方式适不适合你的题目,可以先抽几十道人工核对一遍,再决定是否扩量。
等价表达式怎么认定
表达式题麻烦得多:1/2、0.5、分数写法看着不同,数学上是同一个东西。这一步通常借助符号计算工具做等价判定,把两边表达式都化成标准形再比较,化简不出来就转入人工复核队列兜底。和代码评测要隔离环境一个道理,判分环节同样要防止被回答里的干扰内容带偏,具体隔离做法可以参考代码评测沙箱的搭建思路。
模型判分员什么时候上场
开放性证明题、文字应用题,规则覆盖不了,就轮到模型判分员:让一个更强的模型对照评分细则逐条核对,先复述依据再下结论,输出分项得分。为压住判分员自身的波动,通常同一题判多次、结果不一致时转人工。通义千问、智谱清言这类长文本模型常被用作判分底座,但判分表现同样要抽样校准。长文本类任务更看重检索能力,测法完全不同,可看大海捞针测试的做法;对齐类主观题又是另一套,见对齐评测方法;涉及多轮操作的题目则要先把Agent评测环境搭稳再谈判分。
落地时还要注意判分与题目版本的配套关系:题目改了一个数字,容差带和标准答案都要同步更新,否则判分口径与题面脱节,错判会成批出现。工程上常见的做法,是把题目、标准答案、容差参数、抽取规则放进同一份配置文件里做版本管理,改题必须连带改判分配置,评审时一眼就能看出两者是否匹配。这套机制本身不难实现,难在执行纪律:临时改题忘了改配置导致的事故,几乎每个做评测的团队都至少经历过一次。
另一个容易被忽略的点是判分结果的留痕。每次判分都把抽取到的答案、比对过程、给出的分数一并存下来,事后有争议时能逐题回放,快速定位是模型答错、抽取出错,还是容差设置不当。留痕数据积累多了,还能反过来统计各环节的错误率,找出流水线里最薄弱的一环,指导下一轮改进方向。判分系统的成熟度,往往就体现在这些读者看不见的日志细节上,榜单上的最终数字反倒只是表层产出。
数学判分自查清单
- 答案抽取有没有固定格式约束?
- 数值容差是否按题型公开?
- 等价判定失败后的人工兜底在哪一步?
- 模型判分员的一致性测过没有?
聊聊数学自动判分的常见疑问
- 模型答对了却没分,最可能卡在哪?:多半卡在答案抽取,结论没落在约定位置,后面的比对根本没拿到输入。
- 数值题为什么允许一点点误差?:小数运算存在写法与舍入差异,公开一个容差带,等价答案才不会被误杀。
- 模型判分员自己会出错吗?:会,所以要同题多判、不一致转人工,把它的波动压进可接受的范围里。


