一个研究"4 选 1 到底有没有规律"的小项目
🌐 https://badhope.github.io/ExamPrediction/
36 套 CET-6 真题 + 5 个 ML 模型 + 11 条规则 — 用数据和代码试试, 蒙题到底能不能比瞎蒙多蒙对几道。
跑完了老实告诉你: 能多蒙对一点 (2-5%), 但不值得当备考策略用。
| 考试 | 状态 | 套题 | 题数 |
|---|
| CET-6 (大学英语六级) | ✅ active | 36 | 1700 | | CET-4 (大学英语四级) | ✅ active | 8 | 380 | | 高考英语 | ✅ active | 8 | 320 |
加第四个? 在 data/_meta/exams.json 加一条, 再放一份 data/<新id>/config.json, CI 自动验。代码一行不用动。
ExamPrediction/
├── data/ # ★ 数据层 (按考试分类, 配置驱动)
│ ├── _meta/
│ │ ├── exams.json # 考试注册表
│ │ └── schema.json # JSON Schema 定义
│ ├── cet6/ # CET-6 数据 (active)
│ │ └── config.json
│ ├── cet4/ # CET-4 (development)
│ │ └── config.json
│ └── gaokao/ # 高考 (placeholder)
│ └── config.json
├── docs/ # ★ 技术文档
│ ├── architecture.md
│ ├── data-schema.md
│ └── contributing.md
├── scripts/ # ★ CI 工具
│ └── validate-data.py
├── index.html # 主页
├── exam.html # 详情页 (hash 路由 #cet6)
├── styles.css
├── shared.js
├── app.js
├── exam.js
├── charts.js # 纯 SVG 自绘图表
├── motion.js # 数字动画 + 滚动揭示
├── 404.html
└── _config.yml
# 1. 跑数据校验 (Python 3, 只需内置库)
python3 scripts/validate-data.py
# 2. 起本地预览
python3 -m http.server 8000
# 开 http://localhost:8000/数据是手工整理成 config.json 的, 没附分析脚本 — 想重新算可参考 schema 文档。
- 瞎蒙基线: 25.00% (4 选 1 理论值)
- 11 条规则真实命中率: 27-30% (跨 Era 切分, 相对瞎蒙 +2-5%)
- 5 模型 Stacking 集成 AUC: 0.537 (接近瞎蒙 0.5)
- 6 项审计发现已修 (2 critical + 2 major + 2 minor)
审计前 v3.5 初版曾声称 38.27% — 那是过拟合数字, 已经修正。
| # | 规则 | 类型 |
|---|---|---|
| 1 | 含抽象名词 → 排除 | exclude |
| 2 | 含极值词 → 排除 | exclude |
| 3 | 听力 5/10/15/20 不选 C | exclude |
| 4 | 选词填空排除短词 | exclude |
| 5 | 3 个同向时排除反向 | exclude |
| 6 | 末位 25/55 选 D | choose |
| 7 | 听力短对话选最短 | choose |
| 8 | 3 长 1 短选最短 | choose |
| 9 | 匹配题 36-38 选 A/B | choose |
| 10 | 阅读第 55 题选 D | choose |
| 11 | 含 the 冠词加分 | choose |
- HTML + CSS + 原生 JS — 零构建, 三个文件搞定全站
- 字体: 思源黑体 / 思源宋体 + 系统降级链 (国内直接打开)
- 布局:
clamp()流式字号 + 自适应 grid - 响应式: 三个断点 (480 / 640 / 768), 触摸目标 ≥ 44px
- a11y: skip-link, ARIA, 键盘可达, 焦点环
- 配置驱动:
data/<exam_id>/config.json装所有内容 - CI 校验:
scripts/validate-data.py在每次 push 跑
- 跨 Era 切分训练/测试, 防分布偏移过拟合
- 11 条规则 + 5 模型 Stacking (LightGBM / CatBoost / RF / XGBoost / LR)
- 6 项审计已修, 复现步骤在
data/cet6/config.json里的audits段
这个项目不证明蒙题是合理策略。 真实备考请老老实实背单词练听力。
本仓库只适合三件事:
- 数据科学研究方法的演示
- 跨时期分布偏移的实证
- ML 模型在 4 选项离散选择任务上的过拟合研究
@software{examprediction2026,
author = {badhope},
title = {ExamPrediction: Multi-exam option strategy research platform},
year = {2026},
url = {https://github.com/badhope/ExamPrediction}
}
MIT