knowledge-map

  今年三月底介入新业务线进行 hybird 开发至今,总算告一段落,期间经历了
许多,也成长了许多,其中经历最深刻的一个功能点就是个性化作业的知识图谱的模块,下
面就简单的记录一下知识图谱相关的知识。   知识图谱顾名思义就是将知识点
之间的关系通过关系图的方式进行展示,包括前置后置节点,以及学生掌握程度等信息。如
下图所示
知识图谱

图谱的特点

  图谱的实现是需要经过多方同事的共同努力 ,其主要特点如下:

  1. 构建
    • 多学科教研老师梳理得到
    • 知识点颗粒细、数量多、覆盖广,配备习题,支持多版本教材
    • 知识点间有着前驱后继关系,表示学习的先后顺序
  2. 定量描述
    • 可从图谱展示平台上直接展示结构
    • 图谱连接边上有预先设计的权重,为知识点跳转概率
    • 根据图谱结构,通过 pageRank 计算出每个知识点的重要程度
  3. 更新优化
    • 教研可在图谱展示平台动态观看图谱并改动
    • 使用学生答题数据生成动态模型,反映了知识点间的隐含关系。可以提供教 研进行
      参考并直接用于推荐

图谱的组成

  1. 锚点关系图谱
  • 有向无环图
  • 锚点重要程度定量化描述(PageRank)
  1. 锚点关系
  • 根据学习先后顺序分为前驱、后继
  • 关系边上有设定转移权重
  1. 锚点
  • 教研以试题分类角度设定
  • 表示一类题型相似、难度相近题目

图谱数据分析

  具体分析如下图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
{
"code": 200,
"info": "操作成功",
"result": {
// 所有学生数量
"studentTotalCount": 16,
// 已覆盖知识点的掌握程度
"coverdAnchorPointMastery": 0.3051658455,
// 已掌握知识点数量
"masterAnchorPoint": 40,
// 知识点总数
"totalAnchorPoint": 50,
// 知识点数组
"anchorMappingData": [
{
"anchorPointId": "02_05_347",
"name": "已知解析式求函数定义域",
// 所属知识点类型 必会 拔高 高阶
"topicLayer": "definite",
"anchorTopicId": "6d72e77d-f865-403f-906f-cf95eac6f637",
// 前置知识点数组
"precursors": [
{
"anchorPointId": "02_05_346",
"weight": 0.0,
"name": null
}
],
// 后置知识点数组
"postcursors": null,
"catalogs": [
{
"code":
"233_12020300128-968_12020300128-968-36327_12020300128-968-36328",
"name": null
},
{
"code": "09_19020501-003_003_001",
"name": null
},
{
"code": "08_19020501-002_02_002",
"name": null
}
],
"knowledges": null,
"phase": null,
"subject": null,
"level": null,
"cards": null,
"videos": null,
"anchorMastery": -1.0,
"anchorUserNum": 0,
"x": 5,
"y": 5
}
],
// 包含的知识点类型数组 必会、拔高、高阶
"examinationTypeList": [
{
"totalAnchorPoint": 22,
"masterAnchorPoint": 22,
"coverdAnchorPointMastery": 0.3479859241,
"examinationTypeCode": "definite",
"examinationTypeName": "必会题",
"sort": 1,
// 包含知识点数组
"anchorPoints": [
{
"anchorTopicId": "6d72e77d-f865-403f-906f-cf95eac6f637",
"name": "已知解析式求函数定义域"
}
]
},
{
"totalAnchorPoint": 15,
"masterAnchorPoint": 15,
"coverdAnchorPointMastery": 0.2627470402,
"examinationTypeCode": "raise",
"examinationTypeName": "拔高题",
"sort": 2,
"anchorPoints": [
{
"anchorTopicId": "3bea88ba-14d9-4060-a7df-635508adf1bd",
"name": "函数创新类问题—特殊点问题"
}
]
},
{
"totalAnchorPoint": 3,
"masterAnchorPoint": 3,
"coverdAnchorPointMastery": 0.2032459627,
"examinationTypeCode": "higher",
"examinationTypeName": "高阶题",
"sort": 3,
"anchorPoints": [
{
"anchorTopicId": "b5b43871-038e-40ca-bc8e-84df51264f2f",
"name": "数形结合的应用"
}
]
}
]
}
}

图谱的最终效果

  代码中其实还是有很多业务逻辑,并没有很完全的去抽离,以后有机会再来做的。
  最终效果如下图所示:
图谱
  详细代码请移步codepen上去看。

See the Pen knowledge-map by illuSioN4ng (@illuSioN4ng) on CodePen.