AI出卷工具体检:28.6%的题能靠选项长度蒙对

🔧 AI工具 2026-11-06 约 19 分钟阅读

AI出的卷子看着没问题,学生没读课文也能及格。我拿三道可以在任何导出文件上重跑的检查,过了一遍MMLU完整测试集14042道题和ARC-Challenge 1172道题;在人类出的好题里,「挑最长选项」只比瞎蒙高3.6个百分点,这就是拿来对照AI卷子的基准线。

💡 你将学到

AI出的卷子看着没问题,学生没读课文也能及格。我拿三道可以在任何导出文件上重跑的检查,过了一遍MMLU完整测试集14042道题和ARC-Challenge 1172道题;在人类出的好题里,「挑最长选项」只比瞎蒙高3.6个百分点,这就是拿来对照AI卷子的基准线。

📜 目录

生成二十道选择题要八秒。核对「一个没读课文的学生能不能及格」要一个小时,所以没人做,卷子就这么进了课堂。

下面三道检查是那一小时的廉价版。我先在两个人写的参照题库上跑了一遍,因为单看一个数字没有意义,要先知道正常值长什么样。参照题库是MMLU完整测试集(14042道四选项题,57个学科)和ARC-Challenge测试集(1172道小学科学题,取自真实考试)。全部数据在2026年11月6日跑出,文末脚本在任何导出文件上都能复现同样的数。

检查一:最长选项是不是答案

MMLU里11645道题(82.9%)有唯一的最长选项。每次挑它,得3328分,也就是28.6%。瞎蒙是25%。差距3.6个百分点,样本量这么大不会是噪声(z=8.9)。但3.6个百分点也过不了任何一场考试。

ARC-Challenge同理:1172道题里954道有唯一最长项,挑它得258分,27.0%,z=1.5,在1172道题的规模上跟瞎蒙分不开。

取最长的两个选项里二选一,数字变成53.8%(MMLU)和57.1%(ARC)。比抛硬币高四到七个百分点,这才是真实考卷里「长度信号」的诚实大小。

所以四选项题库的健康区间是27%到29%。生成的卷子如果跑到55%甚至70%,那不是更难的卷子,那是模型给正确答案写了整句解释、给错误选项只写了两个词。学生做一套就发现了。

检查二:答案字母是否分散

MMLU的答案分布a 22.9%、b 24.7%、c 25.5%、d 26.9%;ARC是a 22.6%、b 26.5%、c 26.5%、d 24.4%。

这里我踩了自己的坑。第一版脚本用卡方判定,超过自由度3对应的7.81就算不合格,结果MMLU跑出45.9,参照题库自己没过自己的检查。45.9只来自1.6个百分点的偏差,因为14042道题下卡方几乎什么都算显著。统计显著和教学上的显著不是一个量级。

能用的规则是极差,不是p值:最高字母占比减最低字母占比,MMLU和ARC都是3.9个百分点(精确值3.945和3.949)。超过5就说明某个字母在干活,习惯性只选同一个字母的学生白拿起手分。导出文件要是四成答案都在c,卡方会说,手数四个数也会说。

检查三:重复选项与等长

MMLU有161道题(1.1%)两个选项归一化后完全相同。真人写的题库也不是无瑕的,1.1%是可接受的下限而不是丑闻。ARC是3道(0.3%)。生成的题库超过3%,说明模型连自己刚写的选项都没回看,这也是最容易修的一种毛病。

等长是另一回事。MMLU有17.1%、ARC有18.6%的题存在两个选项字符数完全相同,只看长度的猜题者连选择都做不出。生成的题库如果是0%等长,那是被刻意补齐过长度,或者模型写得太整齐,每个选项看起来一样长。

还有一个数值得记:MMLU有380道题(2.7%)带「以上都对」或「以上都不对」。真实考卷里这是合法的,在生成题库里很危险,因为模型会把它和一个跟其余三个选项矛盾的答案配在一起。

同一个题库内部的差异:按册体检,别按平均

28.6%这个合并数掩盖了很大的跨度。在至少有60道唯一最长题的53个学科里,中位数28.9%,九十分位36.4%。最高的是国际法53.4%(121道)和法理学43.6%(108道),法条类正确答案本身带限定语,干扰项写得干脆。最低的是公共关系15.2%(110道)和人类衰老16.8%(223道),低于瞎蒙,意思是这两个库在设计上抵抗猜题。

后果很具体:一个阈值套在合并导出上,会漏掉唯一长度泄漏的那一科,而那一科正好是学生会抱怨的那科。按学科或按册先各跑一遍,再合并。

脚本

只用标准库,Python 3.8以上,不用装任何东西。把生成的题导出成CSV,表头是 stem,a,b,c,d,answer,answer填a/b/c/d,然后运行 python3 item_audit.py bank.csv。

import csv, math, re, sys
from collections import Counter

def norm(s):
    return re.sub(r"[^a-z0-9 ]+", " ", str(s).lower()).strip()

rows = []
for r in csv.DictReader(open(sys.argv[1], encoding="utf-8-sig")):
    o = [r[k] for k in ("a", "b", "c", "d")]
    k = str(r["answer"]).strip().lower()
    if all(x.strip() for x in o) and k in "abcd" and len(k) == 1:
        rows.append({"o": o, "k": "abcd".index(k)})

n = len(rows)
pos = Counter(r["k"] for r in rows)
chi = sum((pos[i] - n / 4) ** 2 / (n / 4) for i in range(4))
hit = cover = ties = 0
for r in rows:
    L = [len(norm(x)) for x in r["o"]]
    idx = [i for i, v in enumerate(L) if v == max(L)]
    ties += len(idx) > 1
    if len(idx) == 1:
        cover += 1
        hit += idx[0] == r["k"]
p = hit / cover
z = (p - 0.25) / math.sqrt(0.25 * 0.75 / cover)
top2 = sum(1 for r in rows
           if r["k"] in sorted(range(4), key=lambda i: -len(norm(r["o"][i])))[:2])
dup = sum(1 for r in rows if len({norm(x) for x in r["o"]}) < 4)

print("题目数 %d" % n)
print("答案分布 a/b/c/d: %s  卡方=%.1f" % ("/".join(str(pos[i]) for i in range(4)), chi))
print("挑最长选项: %d/%d = %.2f%%(瞎蒙25%%,z=%.2f)" % (hit, cover, p * 100, z))
print("等长 %.1f%% | 取最二长 %.1f%% | 重复选项 %.1f%%"
      % (ties / n * 100, top2 / n * 100, dup / n * 100))
print("字母极差 %.1f 个百分点" % ((max(pos.values()) - min(pos.values())) / n * 100))

在MMLU上跑,输出是这样:

题目数 14042
答案分布 a/b/c/d: 3222/3462/3582/3776  卡方=45.9
挑最长选项: 3328/11645 = 28.58%(瞎蒙25%,z=8.92)
等长 17.1% | 取最二长 53.8% | 重复选项 1.1%
字母极差 3.9 个百分点

这份输出是参照题库没通过我自己的卡方判定、却通过了极差规则,检查二就是这么改出来的。

不合格时改什么

这三道查不出什么

查的是可猜性,不是正确性。一套题可以三项全过,却有10%的题答案标错,这才是真正伤课堂的那种失败:对的答案判成错,然后家长来信。那是另一道工序:自己照原文把每道题答一遍,或者让另一个模型重新标一次答案,看两边不一致的地方。十道题就够看出答案稳不稳。

如果还在挑工具,最该比的其实是各家怎么处理答案和导出,上个月我用五款出卷工具跑过这件事:五款AI出卷工具,按答案与批改怎么落地来评。如果问题是价格和导出格式,免费档的对比在这篇:免费测验与出卷工具的价格和导出对比。

记住两个数:28.6%和3.9个百分点。工具产出的卷子如果远高于这两条线,学生比你更早发现。本文用的题库是公开的(MMLU、ARC),基准可以自己重跑,不必信我。

相关文章
2026-07-25
2026年最佳AI SEO工具:十大工具对比评测
2026-08-10
AI电商建站2026:用这些工具一个周末上线店铺
2026-08-19
2026 ChatGPT 对比 Claude 对比 Gemini:日常写作哪个 AI 助手最强?
2026-07-27
最佳AI笔记应用
2026-08-23
2026 最佳 AI 简历工具:6 款联邦职位申请工具
2026-08-21
2026 凤凰城最佳 AI 房源描述生成器:6 款经纪人工具

本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。

💬 评论 (0)

暂无评论,来说两句吧~

登录后评论