cn-math-taxonomy README

The project's README from github.com/xiaoyang111222/cn-math-taxonomy. As one markdown file: README.md.

中小学数学知识图谱(一—九年级)

对齐《义务教育数学课程标准(2022 年版)》与人教版一–九的知识点 DAG,附自适应前置诊断与题库。答错会沿先修边从初中一直回溯到具体的小学知识点,并给出按年级从低到高排列的学习路径。仓库名仍是 cn-math-taxonomy。

License: CC BY-NC 4.0 在线试用 GitHub Pages 备份

→ 在线试用诊断(演示:配方法) · 知识图谱浏览 · 诊断工具 · GitHub Pages 备份

诊断结果示例:配方法 → 回溯到完全平方公式

知识点 先修边 课标条目 题库
小学(1–6 年级) 216 311(小学内部) 73(第一至三学段) 864
初中(7–9 年级) 315 563(初中内部,未改) 157(第四学段) 1407
合计 531 909(另有初中→小学 35) 230 2271

数据格式参考 Marble os-taxonomy(topics + dependencies)。

反馈 / 挑错: 题干、答案或先修关系有问题,或想提功能建议,请 提交 Issue(已提供「题目纠错」「功能建议」模板)。

状态声明:这是 AI 生成的初稿,未经任何教师审核。 小学与初中都一样。 知识点的拆分粒度、掌握标准、诊断题答案,尤其是先修关系(哪些是 hard、哪些是 soft,甚至某条边该不该存在)都需要一线小学、初中数学教师审核后才能用于教学、诊断或学习路径推荐。诊断题答案有自动核验和独立复核,但没有逐题由教师复核。小学册次目录多数不是人教社官网,标了「非官方、待核」的不要当成官方章名。

数据来源与对齐依据

九下目录的来源与核实情况(查证日期:2026-10-17;非官方、待核)

结论:没有找到人教社(pep.com.cn)官方发布的 2024 版九下目录页(官方“新教材介绍”页只介绍编写思路,未列各册章目;pep.com.cn 的“数学 九年级下册”页是旧版封面,页面不显示目录)。九下的 2024 版教材预计 2027 年春季学期才开始使用。下列目录是综合第三方来源后的最可靠推定,并非官方原文,章名、章号请以教材实物或人教社官方目录为准。

章 采用的章名 依据
第三十一章 相似 来源 A(搜索摘要);与来源 D 的九上末章“第三十章”衔接
第三十二章 锐角三角函数;章末“综合与实践:停车设计问题” 来源 A(搜索摘要)
第三十三章 投影与视图;章末“综合与实践:建筑中的数学” 来源 A(搜索摘要)
第三十四章 随机事件的概率:34.1.1 随机事件、34.1.2 概率、34.2 用列举法求概率、34.3 用频率估计概率 来源 B、C

来源:

未采用的来源:dzskb.com 标为“2024 审定版(现行)”的九下页 https://www.dzskb.com/rjbsx9sce-2024.html 列出的是“第二十六章 反比例函数 / 二十七 相似 / 二十八 锐角三角函数 / 二十九 投影与视图”,与同站旧版页内容完全相同,且与它自己的九上 2024 页矛盾(反比例函数不可能同时在九上第二十七章和九下第二十六章),判断为误标的旧版目录,不采用。

仍待核的部分:(1) 第三十一至三十三章的小节号没有查到,chapter 字段只写到章,不写小节号;第三十四章小节号来自 B、C。(2) “综合与实践”两项只来自来源 A 的摘要,活动的具体内容未核实,cnm_290、cnm_291 的描述与先修边是按主题名推定的。(3) 章内知识点是沿用第一版的拆分,没有逐节对照新教材。(4) 第三十四章章名“随机事件的概率”来自 B、C 两个第三方来源,来源 A 的摘要被截断。

小学教材目录(人教版;查证日期 2026-10-19)

没有找到人教社(pep.com.cn)一次列全 1–6 年级各册单元的官方目录。新版(2024 起陆续审定)公开目录只覆盖到部分低年级;三至六年级按现行版单元名。下表写的是本图谱实际采用的单元,查不到官网的都标「非官方、待核」。总复习、整理和复习不建知识点。chapter 写成「X年级上册 第N单元 单元名」,综合与实践写成「X年级X册 综合与实践 名称」(没有多余空格,诊断工具按这个格式拆册次)。

册次 采用的目录 核实情况
一上(2024) 开篇「数学游戏」(在校园 / 操场 / 教室里找一找、认一认、玩一玩,不单列知识点);一 5以内数的认识和加、减法;二 6到10的认识和加、减法;三 认识立体图形;四 11到20的认识;五 20以内的进位加法;六 复习与关联(不建点) 非官方、待核。三处转载的编号单元一致:好多电子课本网 https://www.haoduoyun.cc/book/rjb/shuxue/hq1s.shtml、教师之家 https://www.renjiaoshe.com/jiaocai/2412.html、21世纪教育网教学计划 http://zy.21cnjy.com/21212826。人教社官网全文目录未核到。图谱另有「综合与实践 我的教室」「综合与实践 数学游戏分享」,不在上述目录的编号单元里(教师之家把「在教室里认一认」放在开篇数学游戏中)。这两点按课标主题活动保留,没有为了对齐目录去改先修顺序。
一下(2024) 一 认识平面图形;二 20以内的退位减法;三 100以内数的认识;四 100以内的口算加、减法;五 100以内的笔算加、减法;六 数量间的加减关系;☆ 欢乐购物街(图谱写作综合与实践,认识人民币);七 复习与关联(不建点) 非官方、待核。教师之家课文目录 https://www.renjiaoshe.com/jiaocai/2413.html(非人教社官网)。单元名与图谱一致。
二上(2024) 1 分类与整理;2 1~6的表内乘法;3 厘米和米;4 7~9的表内乘、除法;5 身体上的尺子;6 1~6的表内除法;7 校园小导游;8 复习与关联(不建点) 非官方、待核。课本网 https://keben.app/book/0015 标「人教版 二年级上册 2024版」。图谱把第 5 单元「身体上的尺子」、第 7 单元「校园小导游」写成综合与实践,第 5 单元未单列、待核,编号从第 4 跳到第 6。电子课本网另一份二年级上册目录(表内除法提前)与此顺序不同,未采用。
二下 图谱只建了 4 个单元:有余数的除法、万以内数的认识、克和千克、混合运算 官方目录未核到,待核。按「2024 上册已把表内乘除、厘米和米、方向放在上册」推定下册只留这些,没有查到 2024 下册目录原文。现行版常见目录仍是:数据收集整理、表内除法(一)(二)、图形的运动(一)、混合运算、有余数的除法、万以内数的认识、克和千克、数学广角——推理(学习力转载 http://www.xuexili.com/keben/68701.html,非官方),与本图谱不一致。
三上–四上(现行) 三上:时、分、秒;万以内的加法和减法(一);测量;万以内的加法和减法(二);倍的认识;多位数乘一位数;长方形和正方形;分数的初步认识;数学广角——集合。三下:位置与方向(一);除数是一位数的除法;复式统计表;两位数乘两位数;面积;年、月、日;小数的初步认识;数学广角——搭配。四上:大数的认识;公顷和平方千米;角的度量;三位数乘两位数;平行四边形和梯形;除数是两位数的除法;条形统计图;数学广角——优化 非官方、待核。没有逐册打开人教社目录页。单元名沿用现行人教的常见顺序(与四下、五至六年级同一套现行版衔接)。2024 新版是否改这几册,未核到。时、分、秒和吨在课标里属于更早学段的主题活动,现行教材放在三年级上册,册次待核。
四下(现行) 1 四则运算;2 观察物体(二);3 运算定律;4 小数的意义和性质;5 三角形;6 小数的加法和减法;7 图形的运动(二);8 平均数与条形统计图;★ 营养午餐;9 数学广角——鸡兔同笼;10 总复习(不建点) 非官方、待核。学习力 http://www.xuexili.com/keben/68714.html 与电子课本网 https://www.dzskb.com/rjbsnjsxxc-2.html 单元名一致。图谱与编号单元相同。★营养午餐未建知识点。
五上–六下(现行) 五上:小数乘法;位置;小数除法;可能性;简易方程;多边形的面积;数学广角——植树问题。五下:观察物体(三);因数与倍数;长方体和正方体;分数的意义和性质;图形的运动(三);分数的加法和减法;折线统计图;数学广角——找次品。六上:分数乘法;位置与方向(二);分数除法;比;圆;百分数(一);扇形统计图;数学广角——数与形。六下:负数;百分数(二);圆柱与圆锥;比例;数学广角——鸽巢问题 非官方、待核。教师之家汇总 https://www.renjiaoshe.com/xiaoxueshuxue.html 与数学课 https://www.shuxueke.net/mulu 的五、六年级单元名一致(这两页的一、二年级仍是旧目录,一、二年级不采用它们)。六上 2022 年印次预览(https://zy.21cnjy.com/15027400)在「圆」后有综合与实践「确定起跑线」、扇形统计图后有「节约用水」,本图谱未单列,待核。

数学广角保持为编号单元,领域记为综合与实践,不改成「综合与实践」那种 chapter 写法。

文件

data/topics.json         知识点节点(JSON 数组)
data/dependencies.json   先修边(JSON 数组)
data/cn-curriculum-standards.json  课标第一至第四学段内容要求(230 条:小学 73 + 第四学段 157)
data/id-aliases.json               旧 id cnm_ext_001…018 → 小学正式知识点(方案 b,节点已删除)
docs/standards-mapping.md          课标对齐说明:来源、映射规则、覆盖率、未映射清单、局限
data/questions.json      题库:小学每点 4 题、初中每点 4–5 题(共 2271 题)
data/_qbatches/primary_g1.json … primary_g6.json   小学题按年级的生成批次(保留,便于对照)
data/verification_report.json  题库答案核验报告(自动核验 + 独立第二遍复核)
data/second_pass_log.json      第二遍复核的裁决与修正记录;data/_second_pass/ 是解题者的原始答案和推导
docs/questions.md                题库格式、核验方法、统计、局限
scripts/validate.py      校验脚本(仅标准库;含题库检查)
scripts/verify_questions.py  题库答案自动核验(受限表达式求值)
scripts/second_pass.py       独立第二遍复核的辅助脚本(出盲解题、比对答案)
CHANGELOG.md             按日期记录的变更日志(含 id 变动说明)
index.html               单文件浏览页面(无外部依赖)
diagnose/                诊断小工具(纯静态:index.html、engine.js、app.js、style.css、README.md)
tests/test_engine.js     诊断引擎测试(Node,无依赖)
scripts/screenshot.js    无头 Chrome 冒烟测试与截图脚本
screenshots/             诊断小工具截图(01-start / 02-question / 03-result / 04-graph / 05-explanation)

topics.json 字段

正式知识点(external: false):

字段 说明
id 稳定 id。初中 cnm_001 …;小学 cnm_p001 起(与初中 id 不混用)
name 中文名称
domain 数与代数 / 图形与几何 / 统计与概率 / 综合与实践
grade 1–9 的整数
semester "上" 或 "下"
chapter 人教版章节。初中如 七上 第一章 有理数 1.2.1;小学如 一年级上册 第1单元 5以内数的认识和加、减法
type conceptual / procedural / reasoning / application / modeling
description 通俗说明(1—2 句)
mastery_criteria 2—3 条掌握标准(字符串数组)
diagnostic_question {"question": "...", "answer": "..."}
external false
standards 课标映射数组,元素 {"id", "confidence", "note"?},见下节;可为空数组
root_reason 仅当没有任何先修边时必填。现在只有 cnm_p001(1到5各数的认识)
external 全部为 false。旧的小学外部节点已按方案 b 删除,见 data/id-aliases.json

说明:

dependencies.json 字段

{"topicId": "A", "prerequisiteId": "B", "strength": "hard", "reason": "一句中文理由"}

含义:A 依赖 B(学 A 之前需要 B)。

当前统计(python3 scripts/validate.py 实际输出,2026-10-19)

下面「第二轮」「第三轮」各节是当时的记录,数字不要当成现在的总数。

第二轮迭代(2026-10-17)改了什么

详见 CHANGELOG.md。要点:

  1. 九下章目核实:去掉所有“(暂拟)”,九下 chapter 改为第三十一至三十四章的实际章名(来源与“非官方、待核”说明见上)。原九下 22 个知识点的 id 全部不变;章名由“概率初步”改为“随机事件的概率”,并给概率各点补上 34.1.1/34.1.2/34.2/34.3 小节号。新增两个章末“综合与实践”(cnm_290 停车设计问题、cnm_291 建筑中的数学)。
  2. 统计与概率加厚:领域“统计与概率”正式知识点由 20 增至 43(新增 23)。分布:七下 17、八下 12、九下 14。七上、八上、九上在新版教材里没有统计与概率章,所以没有硬凑。另有 3 个相关的“综合与实践”(cnm_109、cnm_218 原有,cnm_315 新增),不计入上面的 43。
  3. 边:新增 50 条(含统计新点的先修边及 cnm_288←cnm_297 等连接原有统计点的边),删除 1 条冗余边(cnm_288←cnm_106,已可经新增的 cnm_297 到达);原有 287 条理由少于 8 个汉字的边,再加 79 条仍只有短语的边,共 366 条理由改写成完整一句话(最短的也有 9 个汉字以上)。
  4. 没有改动 scripts/validate.py。

课标对齐(第三轮)

统计与概率知识点的教材落册(第二轮后)

诊断小工具(第四轮;第五轮改为每个知识点最多 2 题)

diagnose/ 是一个基于上述数据的静态、可离线的诊断页面:选一个目标知识点(或整个章节),按先修关系自适应出题(第一题答对则掌握并跳过全部祖先;答错则再出一道同级或更容易的题——第二题也错才算薄弱并回溯到先修,hard 先于 soft;第二题答对标为「不稳」,不回溯),给出薄弱的根因、不稳的知识点、按年级从低到高排列的学习路径(同一年级里先修在前)、相关课标条目原文和一张纯 SVG 路径图。目标可以选择小学或初中知识点;答错初中题会继续问到小学;每题作答后显示解析和参考答案;进度保存在 localStorage,可导出 JSON 或打印。核心算法与判题在 diagnose/engine.js(纯函数,浏览器与 Node 通用),由 node tests/test_engine.js 测试。

python3 -m http.server 8000
# 访问 http://localhost:8000/diagnose/            (演示:?target=cnm_221&demo=1)
node tests/test_engine.js                          # 引擎测试
node scripts/screenshot.js                         # 冒烟测试 + 截图(需要本机 Chrome)

算法说明、判题规则、URL 参数与局限见 diagnose/README.md;浏览页 index.html 右上角也有入口。每个知识点最多问 2 题,诊断结果只是线索。

小学知识点(2026-10-19)

小学是正式知识点,不是外部节点。id 为 cnm_p001–cnm_p216,字段与初中正式知识点相同(external: false)。初中知识点的 id、名称、题目没有改;只改了原来指向 cnm_ext_* 的先修边,改成指向具体的小学知识点(一条旧边可以拆成多条,例如百分数统计图同时指向百分数和几种统计图)。

方案 b(已采用,不是汇总节点): cnm_ext_001–cnm_ext_018 从 topics.json 删除。data/id-aliases.json 保留旧 id 到小学 id 的跳转,避免以前的链接失效。诊断工具读到旧 id 会展开 targets 里的全部小学知识点。

新边在并入全图之后做了传递约简(只约简新边,不动原来的初中—初中边):写出并保留 346 条(小学内部 311,初中→小学 35;hard / soft 的删除规则与以前相同)。相对旧的 616 条,净增 293 条,现为 909 条。

题库:每个小学知识点 4 题,共 864 题,全部是 numeric 或 choice(numeric 644,choice 220;basic 433,standard 431,没有 advanced)。语言按年级写,低年级不用超纲符号。numeric 题带 verify。scripts/primary_recheck.py 只读题干和选项重算了一遍,不一致 0 条,记在 second_pass_log.json 的 C 轮。批次文件留在 data/_qbatches/primary_g1.json … primary_g6.json。

题库(第五轮当时;小学题见上一节)

data/questions.json 现在共 2271 题(小学 864 + 初中 1407)。第五轮给当时的 315 个初中正式知识点各建 4–5 道题,1407 题,这些题没有改写;topics.json 里原有的 diagnostic_question 迁移为每个知识点的第 1 题(id 后缀 _q1),原字段保留不动。

第五轮当时的分布(只计那 1407 题):

统计 数量
按 type numeric 903,choice 475,short 23,self 6(numeric + choice 占 97.9%)
按 difficulty basic 591,standard 537,advanced 279(每个知识点都含 basic 和 standard)
每知识点题数 最少 4,最多 5,平均 4.47(4 题 × 168,5 题 × 147)
自动核验(verify 表达式) 875 题通过,mismatch 0,unverifiable 532(主要是文字选项的选择题)
独立第二遍复核 1401 题盲解比对,原始不一致 3 处(全是解题者算错),发现并修正答案错误 0 处,另改 4 处含糊题干 + 1 处错误解析;second_pass_mismatch = 0
python3 scripts/verify_questions.py   # 自动核验,写 data/verification_report.json;mismatch 为 0 才打印 VERIFICATION PASSED
python3 scripts/validate.py           # 含题库格式检查与题量统计

全库当前(verify_questions.py):auto_verified 1739,mismatch 0,unverifiable 532(仍是初中那些没有 verify 的题;864 道小学题都有 verify 且通过)。题目与答案全部由 AI 生成、未经教师审核;格式、核验方法、统计与局限见 docs/questions.md。

已知局限

运行校验

python3 scripts/validate.py

检查:JSON 合法;id 唯一;必填字段齐全;domain/type/strength 取值合法;每条边的两端都存在;无自环、无重复边;无环(有环时打印环路);每个非外部知识点要么有先修边要么有 root_reason;没有完全孤立的节点。并打印按领域、按册次的数量以及边数、hard/soft 数。第三轮新增:standards 引用的课标 id 必须存在于 data/cn-curriculum-standards.json,confidence 只能是 exact/inferred,课标文件自身的 id 格式与编号连续性;并打印课标条目数、映射覆盖率;正式知识点 standards 为空时只打印警告(至多 30 个),设置 STRICT_STANDARDS=1 才视为错误。全部通过时输出 VALIDATION PASSED 且退出码为 0,否则输出错误并以非 0 退出。

打开浏览页面

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

python3 -m http.server 8000
# 然后访问 http://localhost:8000/

功能:左侧可按学科、学段(全部 / 小学 / 初中)、年级或册次、类型筛选并搜索(名称、描述、章节)。点击知识点后显示描述、掌握标准、诊断题(答案默认折叠)、先修链(向上递归,树状或分层列表两种视图,边上标注硬/软先修及理由),以及它是哪些后续知识点的先修。地址栏 #cnm_219 或 #cnm_p001 可直接定位。#cnm_ext_002 这类旧编号会跳到 id-aliases.json 里的第一个小学知识点。页面标题是「中小学数学知识图谱」。

后续建议

  1. 请小学、初中数学教师先审先修边(尤其是 hard 边和初中→小学的 35 条),并用教材实物或人教社官方目录核对九下,以及上表里所有标了「非官方、待核」的小学册次(特别是二年级下册)。
  2. 请课程专家审核 standards 映射(尤其 inferred,以及第一至三学段尚未与教育部 PDF 逐页核对的条文),并考虑为仍无对应知识点的课标条款补点。
  3. 用真实学生答题数据校准诊断题与先修强度。

部署(Cloudflare Pages)

生产站点:https://math.pansgo.com/ (Pages 项目 cn-math-taxonomy,备用 https://cn-math-taxonomy.pages.dev/)。

本仓库更新后,在本机执行一次即可重新发布静态页:

./scripts/deploy-cf.sh

脚本会打包 index.html、diagnose/、data/ 中页面用到的文件,部署到 Cloudflare Pages 的 main 生产分支。不改动 VPS / Caddy。

许可证 / License

本项目(知识图谱数据、题库、诊断工具代码及文档)采用 知识共享 署名-非商业性使用 4.0 国际许可协议(CC BY-NC 4.0) 授权,完整条款见 LICENSE。

商用授权: 如需商业使用,请联系作者获取单独授权:X(Twitter)私信 @hassanyehiaa,或在本仓库 提交 Issue 说明用途。

This project is licensed under CC BY-NC 4.0. For commercial licensing, please contact the author via X @hassanyehiaa or open an issue.

cn-math-taxonomy (xiaoyang111222/cn-math-taxonomy)

Searching Database…

What is this?A knowledge graph of elementary and middle school math (grades 1-9) aligned to China's 2022 math curriculum standards and the People's Education Press (Renjiao) textbooks, built from 531 topics, 909 prerequisite edges and 2271 questions, with an adaptive diagnostic tool on top.
Is this a dataset, a graph, or an app?It is mainly a dataset (topics.json, dependencies.json, questions.json, curriculum-standards.json) plus a small static, offline-capable web page (diagnose/) that reads that data to run the adaptive quiz.
How do I try the diagnosis tool?Use the live demo links in the README (e.g. the 配方法 demo, topic-graph browser, or the GitHub Pages mirror), or clone the repo and open diagnose/index.html directly; you pick a target topic or chapter and it quizzes you adaptively.
Do I need anything besides a browser to run the diagnosis page?No - the diagnosis engine (diagnose/engine.js) is plain client-side JavaScript that runs in any browser with no server; only the author-side data validation script needs Python 3 (python3 scripts/validate.py).
How reliable is this data before I use it?The whole thing is an AI-generated first draft: topic splits, hard/soft prerequisite judgments, diagnostic answers and standards mappings have not been reviewed by any teacher, and several textbook tables of contents (grade 9 second semester, some primary grades) come from unofficial third-party sources marked 'unverified'.
Can I use this to actually teach or diagnose students right now?Not as-is - the granularity, mastery criteria, question answers and especially the prerequisite relationships still need review by working primary/middle-school math teachers before being used for teaching, diagnosis, or learning-path recommendations.
How does the adaptive diagnosis decide which earlier topic to blame?Getting a question wrong triggers a second, equally-hard-or-easier question on the same topic; missing both marks the topic weak and walks back along its prerequisite edges, preferring hard edges over soft ones, while getting the second question right only marks the topic 'unstable' without tracing back.
What is the difference between a hard and a soft prerequisite edge?A hard edge means a topic realistically cannot be learned without the earlier one, while a soft edge only means the earlier topic helps (through analogy or context); this hard/soft split is the AI's own subjective judgment and has not been reviewed by teachers.
How are topics linked to the official curriculum standards?Each topic carries a standards array pointing at the Ministry of Education's 2022 curriculum clauses, tagged 'exact' when the clause names the topic directly or 'inferred' when it's a prerequisite, special case, or textbook elaboration (with a note explaining why).
Does this follow the newest textbook edition?Grades 7-9 follow the 2024-revised Renjiao edition (e.g. probability moved to grade 9's second semester and renamed), but since the Ministry hasn't published an official grade-9 second-semester table of contents yet, that chapter list is the project's best third-party-sourced guess, marked unverified.
Size
1.7 MB
Stars
891
Updated
CommitOct 19
Age
2d
Commits · 90 Days