夜雨聆风学习资料网

ARTICLE · 1221262

孩子数学越学越懵?根源可能在小学三年级! | 这个开源「中小学数学知识图谱」能一键回溯到知识断层(674 个知识点 + 2843

孩子数学越学越懵?根源可能在小学三年级! | 这个开源「中小学数学知识图谱」能一键回溯到知识断层(674 个知识点 + 2843

一、痛点与破局

你有没有遇到过这样的场景:孩子上高中了,函数概念怎么讲都懵;初中生解一元二次方程,配方法永远出错。你盯着他刷题刷到深夜,却发现真正的问题根本不在这一章——他可能连小学的「完全平方公式」都没真正掌握。

问题在于:数学是一门极度依赖先修知识的学科,但没有任何一本教材会告诉你「这个知识点背后挂着哪些更早的知识」。于是孩子的知识断层被一层层新知识盖住,越学越吃力。

GitHub 上的开源项目 cn-math-taxonomy(中小学数学知识图谱) 就是为解决这个问题而生的。它对齐《义务教育数学课程标准(2022 年版)》和人教 A 版(2019)必修教材,把小学、初中、高中必修的知识点组织成一张先修关系 DAG(有向无环图),并附上一个自适应诊断工具:答错一道题,它会沿着先修边一路回溯——从高中、初中,一直问到具体的小学知识点,最后给出按年级从低到高排列的学习路径。

一句话总结:这不是又一个刷题网站,而是一张能定位「知识断层根因」的数学知识地图。

二、核心功能深挖

1. 覆盖完整的中小学知识 DAG:674 个知识点、1105 条先修边

这个图谱不是简单的知识点列表,而是带先修关系的有向无环图。规模如下:

知识点
先修边
课标条目
题库
小学(1–6 年级)
216
311(内部)
73
864
初中(7–9 年级)
315
563(内部)
157
1407
高中必修
143
144(内部)
48
572
合计
674
1105(另有跨学段边 87 条)
278
2843

几个值得注意的设计细节:

  • 先修边分 hard 和 soft 两级
    :hard 表示「不会 B 基本无法学 A」,soft 表示「会了明显有帮助但不是硬门槛」。
  • 只保留直接先修,做了传递约简
    :hard 边仅在存在另一条全 hard 路径时才被删除,避免图被冗余边塞满。
  • 全图只有一个根节点
    :cnm_p001(1到5各数的认识),先修的年级不高于后续知识点——整张图严格「向下生长」。

2. 对齐官方课标:278 条课标条目映射

数据不是拍脑袋来的,而是挂靠在官方课标上:

  • 义务教育部分对齐教育部《义务教育数学课程标准(2022 年版)》第一至四学段的【内容要求】,共 230 条(如 cms-2022:4.NA.01)。
  • 高中部分对齐《普通高中数学课程标准(2017 年版 2020 年修订)》必修五个主题,共 48 条(编号 cms-2017:H.<PRE|FUN|GA|PS|MI>.NN)。
  • 每个知识点通过 standards 数组挂接课标条目,标注 exact(条款正文直接点名)或 inferred(推定映射,必须写 note)。
  • 覆盖率:初中 315 个知识点中 313 个(99.4%) 有映射。

3. 自适应前置诊断:错一道题,挖到小学的根

这是整个项目最亮眼的功能。诊断逻辑(核心算法在 diagnose/engine.js,纯函数,浏览器与 Node 通用):

  • 第一题答对 → 判定掌握,跳过全部祖先节点;
  • 第一题答错 → 再出一道同级或更容易的题(每个知识点最多问 2 题);
  • 第二题也错 → 判定为薄弱,沿先修边回溯(hard 边优先于 soft 边);
  • 第二题答对 → 标为「不稳」,不回溯。

最终输出:薄弱根因、不稳的知识点、按年级从低到高排列的学习路径、相关课标条目原文,以及一张用 Cytoscape 绘制的路径图(薄弱根因红框标出)。进度存在 localStorage,可导出 JSON 或打印。

实际效果举例:诊断高中「配方法」,如果答错,工具会一路回溯直到定位到初中的「完全平方公式」。

4. 带自动核验的题库:2843 道题,mismatch 为 0

  • 小学每点 4 题(864 题)、初中每点 4–5 题(1407 题)、高中必修每点 4 题(572 题)。
  • numeric 题带 verify 表达式,脚本自动重算核验:全库 auto_verified 2311,mismatch 0。
  • 小学题和初中题还做了独立第二遍盲解复核(second_pass.py 出盲解题、比对答案),不一致 0 条。
  • 数据格式参考 Marble 的 os-taxonomy,topics.json + dependencies.json 两个文件就是全部数据,字段清晰(mastery_criteria ≈ evidence,diagnostic_question ≈ assessmentPrompt),方便二次开发。

三、实战演示:五分钟跑起来

方式一:在线直接用(推荐)

  • 在线诊断演示(配方法):https://math.pansgo.com/diagnose/?target=cnm_221&demo=1
  • 知识图谱浏览:https://math.pansgo.com/explore/

方式二:本地部署(纯静态,可离线)

页面通过 fetch 读取 data/*.json,浏览器不允许 file:// 直接打开,需启动一个静态服务器:

python3 -m http.server 8000# 首页     http://localhost:8000/# 知识图谱 http://localhost:8000/explore/# 诊断     http://localhost:8000/diagnose/  (演示:?target=cnm_221&demo=1)

运行数据校验与题库核验:

python3 scripts/validate.py           # 校验 DAG:id 唯一、无环、边完整、字段合法python3 scripts/verify_questions.py   # 题库答案自动核验,mismatch 为 0 才打印 VERIFICATION PASSEDnode tests/test_engine.js             # 诊断引擎测试(Node,无依赖)

validate.py 会检查 JSON 合法性、id 唯一性、无自环无重复边、无环(有环会打印环路)等,全部通过输出 VALIDATION PASSED。

部署也很简单,仓库自带 Cloudflare Pages 脚本:

./scripts/deploy-cf.sh

知识图谱浏览页用 Cytoscape 3.30.4 + dagre 0.8.5 渲染(库已随仓库分发在 assets/vendor/,不从外网 CDN 加载任何脚本,可以完全离线使用),默认只画当前知识点的局部图:向上 2 层先修、向下 1 层,硬先修实线、软先修虚线,小学青绿、初中蓝、高中品红分色。

四、避坑指南与总结

几个必须知道的坑:

  1. 这是 AI 生成的初稿,未经任何教师审核
    。先修关系的 hard/soft 划分、诊断题难度都没有经过真实教学检验,不能直接用于正式教学或测评。
  2. 高中只覆盖必修,且只用人民教育出版社 A 版(2019)
    。选择性必修(圆锥曲线、导数、数列等)整段空缺。
  3. 部分教材目录是第三方来源、标了「待核」
    :九下目录、部分小学册次、高中章节目录都不是人教社官方逐页核对的。
  4. 高中题没有做盲解复核
    :verify 和答案来自同一条表达式。
  5. 许可证是 CC BY-NC 4.0
    :可免费用于个人学习、教学、研究,但不能商用(付费课程、售卖题库等),商用需联系作者授权。

适合谁用?

  • 家长:帮孩子定位「为什么高中数学学不动」的真正根因;
  • 教师:作为知识点先修关系与课标映射的参考底稿(建议参与审核共建);
  • 教育科技开发者:干净的两文件数据结构 + 无外部依赖的静态页面,非常适合二次开发。

数学学习最怕的不是难题,而是不知道自己哪里不会。这张开源知识图谱,把「知识断层」变成了可以被算法定位、被一条路径修复的东西。项目还在早期(作者也在积极征求教师审核反馈),值得关注。

GitHub开源地址:https://github.com/xiaoyang111222/cn-math-taxonomy

相关学习资料