构建与课程标准对齐的 K–12 数学与英语知识图谱

探索一个静态、开源的 K–12 学习图谱,包含 1,244 个主题、5,123 道题目、前置知识追溯和自适应诊断,并了解 AI 生成内容的重要局限。

学习者答错一道题,并不一定是忘记了所考查的主题。知识缺口可能出现在更早的几个步骤:因式分解二次式可能依赖对完全平方公式的理解,而高中函数概念可能依赖初中阶段引入的思想。因此,有用的诊断不能只看分数,还需要一个描述概念之间依赖关系的模型,以及一种能够沿着这些依赖关系追溯根源的方法。

cn-math-taxonomy 旨在解决这一问题。该代码库将面向课程体系的知识图谱与题库、基于浏览器的自适应诊断工具结合起来。目前的数据集涵盖数学和英语,包含 1,244 个正式知识点、1,877 条前置依赖边、382 条课程标准条目和 5,123 道题目。

图谱覆盖范围

项目的数学图谱涵盖小学至高中:小学 1–6 年级、初中 7–9 年级、高中数学必修两册,以及选择性必修三册。高中内容采用人民教育出版社 A 版(2019)。英语是独立的图谱,涵盖小学 3–6 年级和初中 7–9 年级。

具体数量如下:

学科与学段 主题 前置依赖边 题目
小学数学 216 311 条内部依赖 864
初中数学 315 563 条内部依赖 1,407
高中数学必修 143 共 196 条,含跨学段链接 572
高中数学选择性必修 128 共 194 条,含跨模块链接 512
小学英语 197 236 788
初中英语 245 342 980

完整的数学图谱包含 802 个主题和 1,299 条边。英语图谱包含 442 个主题和 578 条边。两个学科合计有 1,877 条边:1,279 条硬依赖和 598 条软依赖。

这些标签区分了不同类型的前置知识。硬依赖边表示,如果没有相应前置知识,学习者很可能无法顺利学习目标内容。软依赖边表示先前概念虽有帮助,但并非绝对门槛。例如,真正必需的代数技能可能属于硬依赖,而根据教材顺序建议的学习先后关系则可能属于软依赖。

这种区分对诊断很重要:把所有先前主题都视为必学内容,可能会导致补救路径臃肿;反过来,如果把所有关系都当成可有可无,就可能掩盖真实学习缺口的根源。

从答错题目到学习路径

诊断工具利用这些依赖边决定接下来要问什么。可以从一个主题或整个章节开始。如果学习者答对第一题,工具就将该主题标记为已掌握,并跳过其祖先节点。如果答错,则会再问一道难度相同或更低的题。第二题答对,会将该主题标记为“掌握不稳定”,但不再继续向前追溯;连续答错两题,则会将其标记为薄弱,并触发前置知识追溯,优先检查硬依赖,再检查软依赖。

因此,诊断结果比单一百分比更具可操作性:它可以显示薄弱的根源概念、看似掌握不稳定的主题,以及按年级从低到高排列的学习路径。工具还会展示相关课程标准条目和路径图。结果可以保存在本地、导出为 JSON、打印,或生成可分享的图片。

例如,学习者如果难以掌握配方法,追溯路径可以指向完全平方公式;某个高中函数学习目标也可能一路关联到初中的二次函数概念。这正是项目的核心理念:诊断可能的原因,而不只是记录答错。

查看数据并运行演示

代码库将核心数据保存在普通 JSON 数组中:

  • data/topics.json 保存主题名称、领域、描述、掌握标准、诊断题目和标准映射。
  • data/dependencies.json 保存前置依赖关系、依赖强度和简短说明。
  • data/questions.json 包含题库。
  • data/cn-curriculum-standards.json 包含 382 条标准条目:数学 310 条,英语 72 条。

主题记录包含 id、name、domain、grade、chapter、type、mastery_criteria 和 diagnostic_question 等字段。依赖关系的格式如下:

{
  "topicId": "cnm_221",
  "prerequisiteId": "cnm_p042",
  "strength": "hard",
  "reason": "This concept uses the earlier skill directly."
}

图谱保存直接前置依赖,并对新增边执行传递约简,以避免重复记录已经能通过更近的前置路径推导出的关系。后续新增内容时,现有初中数学边被有意保持不变。

网站是静态的,但页面会读取 JSON 数据,因此请通过本地 Web 服务器打开,而不要使用 file://:

python3 -m http.server 8000

然后访问 http://localhost:8000/ 查看主页,访问 http://localhost:8000/explore/ 查看图谱,或访问 http://localhost:8000/diagnose/ 进行诊断。演示目标位于 http://localhost:8000/diagnose/?target=cnm_221&demo=1。

可以在本地运行验证和引擎测试:

python3 scripts/validate.py
node tests/test_engine.js

验证器会检查 JSON 有效性、ID 唯一性、必需字段、边的端点是否有效、重复边、环路、孤立节点和标准引用。设置 STRICT_STANDARDS=1 后,缺少标准映射会从警告变为错误。诊断引擎使用不依赖外部库的 JavaScript 编写,可同时在浏览器和 Node 中运行。

应将其视为研究原型,而非开箱即用的测评工具

该代码库对自身局限的说明格外明确,开发者在使用时也应保持同样谨慎。**内容是由 AI 生成的初稿,尚未经过教师审阅。**在将图谱用于教学或自动化学习建议之前,主题粒度、掌握标准、答案质量,尤其是前置依赖关系是否存在及其强度,都需要专家审核。

不同内容的验证覆盖程度也不尽相同。小学和初中数学题接受了自动检查,初中数学还经过独立的第二轮审核。小学英语和高中数学题经过自动验证,但答案未由独立人员盲测;验证表达式和答案可能来自同一生成流程。英语题目和课程映射未经教师审阅。英语题目不包含听力和口语。

与课程标准对齐并不等于获得官方认证。部分标准条目是公开内容的转述,标记为 verbatim: false 和“待核”(需要核实)。若干教材章节列表依赖第三方来源,而非出版社官方目录。尤其是部分小学和高中映射,以及预计的九年级下册数学内容,明确标注为暂定。代码库还提醒,高中年级标签仅用于组织归类:工具中高中数学必修第二册标为高二,但该册通常在高一第二学期教学。

以测评标准来看,题库规模较小:大多数主题只有四道题,诊断对每个主题最多只会提问两道。项目没有学生作答数据,因此无法校准题目难度、干扰项或诊断准确度。该工具可以帮助探索课程图谱,并对学习缺口提出假设;但它不能取代教师、经过验证的考试或对掌握程度的完整测量。

为审查与实验提供有用的基础

尽管存在这些限制,该代码库仍为开发者提供了一个具体、可检查的示例,展示如何将课程体系表示为数据:概念成为节点,依赖关系成为带类型的边,标准成为映射,诊断行为则成为可测试的算法。它还支持两个按学科划分的独立图谱,不会将英语和数学连接起来,同时允许初中英语的前置知识指向小学英语。

项目中的数据、工具和文档采用 CC BY-NC 4.0 许可发布。注明出处后,允许个人学习、教学、研究、修改和再分发;商业用途需另行获得许可。随仓库附带的 Cytoscape 相关库仍采用各自的 MIT 许可。

对于从事学习分析、课程工具,或教育领域 RAG 与图谱系统开发的开发者来说,最有价值的下一步不是继续增加 AI 生成的节点,而是与教师一起审核现有依赖关系和题目、依据官方文件核实课程标准,并最终使用真实学习者数据测试诊断效果。图谱是否具有教育价值,不取决于它有多大,而取决于其中的关系和结论是否可信。

来源

xiaoyang111222/cn-math-taxonomy:中小学知识图谱 + 前置诊断:数学(一–九年级、高中必修与选择性必修)+ 英语(小学、初中),课标对齐、人教版,1244 知识点、5123 题、自适应诊断