一种基于学习依赖关系的学习序列生成方法与流程

文档序号:18547647发布日期:2019-08-27 21:50阅读:181来源:国知局
一种基于学习依赖关系的学习序列生成方法与流程

本发明涉及计算机科学与技术中的人工智能、图数据分析挖掘领域,特别涉及一种基于学习依赖关系的学习序列生成方法。



背景技术:

知识的学习是一个渐增的过程,并且新知识的学习依赖于学习者已掌握的知识。这种学习依赖关系表现为在学习某项知识点之前必须掌握该知识点的前提知识。根据现代认知科学理论,基于学习依赖关系的导航学习是降低认知负荷的有效手段。其中的关键问题就是如何根据知识点之间的学习依赖关系与学习者要学习的目标知识点,自动生成一个最短学习序列。

现有技术中关于发明名称为学习路径规划方法和装置;申请号:201610600544.0的发明公开了一种学习路径规划方法和装置,该学习路径规划方法包括:收集学生对每个知识点的做题记录;根据所述做题记录,构建学生学习的知识图谱;根据所述知识图谱,规划以知识点为基本单元的学习路径。该方法能够以知识点为粒度,对学习路径进行规划,从而保证了学生从易到难的学习顺序,更有效的提升学生的学习能力;但不考虑两类学习依赖关系,且不能实现生成的学习序列最短。



技术实现要素:

为了解决现有技术中存在的问题,本发明公开一种基于学习依赖关系的学习序列生成方法,能够针对学习者要学习的知识点,生成一个由一系列知识点构成的最短学习序列,该序列满足学习依赖关系约束。

为了实现上述目的,本发明采用的技术方案是,

一种基于学习依赖关系的学习序列生成方法,包括如下步骤:

s1,学习依赖关系图转换

学习依赖关系图g可表示为二元组(k,ld),其中,k={k1,k2,...,ki,...,kn}为某一课程的知识点集合,为知识点之间的学习依赖关系集合;t={and,or}表示学习依赖关系的两种类型,(ki,kj,and)∈ld表示要学习知识点kj,必须先要完成知识点ki的学习,(ki,kj,or)∈ld表示学习知识点ki后,就能学习知识点kj;

采用图转换算法将学习依赖关系图g=(k,ld)转换为只包含or类型学习依赖关系的学习依赖关系图g′=(k′,ld′),其中,k′包含了k中部分知识点以及某一组知识点形成的知识点簇,对于一个知识点簇c,对于为k′中元素之间的or类型学习依赖关系,n为整数集;(kx,ky,w)∈ld′表示知识点kx或知识点簇ky,存在or类型学习依赖关系,在所述学习依赖关系图g′中对应的边的权重为w;

s2,层次结构生成

根据s1所得学习依赖关系图g′中知识点或知识点簇结点到学习者要学习的知识点结点kg∈k′的距离,将图中所有结点划分为层次结构,同层内的结点到kg的距离相同;在同层中补充双向的学习依赖关系,并添加k0,k0是一个虚拟起始知识点,从而生成边上带有权重的学习依赖关系图g″=(k″,ld″);

s3,学习序列生成

找出g″中起始知识点k0到要学习的知识点kg的最短路径,将所述最短路径中的知识点依次排列,用知识点簇包含的知识点替换到知识点簇,形成知识点组成的序列s′,去除s′中首个知识点k0,再去掉重复知识点,最终生成最短学习序列。

特别地,所述s1中的图转换算法包括以下步骤:

s11,初始化

s12,若k不为至少存在一个出度为0的结点,设为k,若k是k′中某个知识点簇内的结点,则转向step1.3;否则,执行以下步骤:

s121,k′=k′∪{k};

s122,若kor={kor|(kor,k,or)∈ld}不为则k′=k′∪kor,ld′=ld′∪{(kor,k,1)|(kor,k,or)∈ld};该步骤把与结点k具有or类型依赖关系的知识点加入k′,把or类型依赖关系加入ld′,并设置边的权重为1;

s123,若kand={kand|(kand,k,and)∈ld}不为则k′=k′∪{kand},ld′=ld′∪(kand,k,|kand|);把结点k具有and类型依赖关系的知识点作为一个知识点簇kand加入k′,把kand与k的学习依赖关系加入ld′,并设置边的权重为kand内的知识点数目;

s124,转向s14;

s13,设k是k′中知识点簇c内的结点,执行以下步骤:

s131,若kor={kor|(kor,k,or)∈ld}不为则k′=k′∪kor,ld′=ld′∪{(kor,c,1)|(kor,k,or)∈ld};把结点k具有or类型依赖关系的知识点加入k′,把指向结点k的or类型依赖关系改为指向c,然后加入ld′,并设置边的权重为1;

s132,若kand={kand|(kand,k,and)∈ld}不为则k′=k′∪{kand},ld′=ld′∪(kand,c,|kand|);该步骤把结点k具有and类型依赖关系的知识点作为一个知识点簇kand加入k′,把kand到k的学习依赖关系改为kand到c,然后加入ld′,并设置边的权重为kand内的知识点数目;

s133,若k还属于k′中其它知识点簇,对于每个知识点簇,重复执行s131与s132;

s14,k=k-{k};ld=ld-k×{k};从图g=(k,ld)中去除知识点k以及连接k的学习依赖关系;

s15,若k为输出g′=(k′,ld′),算法结束;否则转向s12。

特别地,所述s2中层次结构生成,具体包括以下步骤:

s21,在s1所得学习依赖关系g′中,以学习者要学习的知识点kg∈k′为起点,沿着ld′中学习依赖关系反方向进行广度优先遍历,得到k′中每个知识点与知识点簇在g′中到kg的距离;设未被遍历到的知识点或知识点簇结点构成的集合为k′_,令k″=k′-k′_,ld″=ld′-k′×k′_-k′_×k′,g″=(k″,ld″)为学习知识点kg前必须要学习的知识点或知识点簇及其学习依赖关系构成的图结构;在g″中根据到kg距离将k″中每个知识点与知识点簇划分到不同层次l0,l1,...,ll,...,lm中,其中,l0是kg本身构成的集合,ll为到kg距离为l的知识点与知识点簇构成的集合;lm为到kg距离为m的知识点与知识点簇构成的集合;

s22,对于每个ll,检测其中任意两个知识点或知识点簇ki、kj之间是否存在学习依赖关系,如果不存在,则ld″=ld″∪{(ki,kj,1),(kj,ki,1)};

s23,设k0是一个虚拟的起始知识点,在学习中不依赖其它任何知识点,将k0加入g″中,并建立k0与lm中知识点与知识点簇之间的学习依赖关系,即k″=k″∪{k0},ld″=ld″∪{(k0,kj,1)|kj∈lm};生成的g″=(k″,ld″)是一个边上带有权重的学习依赖关系图结构。

s3找出s2所得加权学习依赖关系图中起始知识点到要学习的知识点的最短路径,还原最短路径中的知识点簇,并去除首个知识点和重复知识点,最终生成学习序列,具体包括以下步骤:

s31,采用dijkstra算法找出s2所得加权学习依赖关系图g″中起始知识点k0到要学习的知识点kg的最短路径;将所述最短路径中的知识点依次排成序列s;

s32,s31所得序列s中如果包含知识点簇,则用所述知识点簇包含的知识点替换到知识点簇,不用考虑簇内知识点在序列中的次序;得到全是由知识点组成的序列s′;s31所得序列s中如果序列s中如果不包含知识点簇,则令s′=s;

s33,去除序列s′中的首个知识点k0,得到s″;

s34,从序列s″中的首个知识点开始,检测每个知识点在s″中是否重复,若重复,这去掉后出现的知识点;最终生成的知识点序列就是要学习特定知识点的最短学习序列。

与现有技术相比,本发明至少具有以下有益效果:本发明将包含and与or两类依赖关系的学习依赖关系图,转换为由知识点或知识点簇为结点,以or类型依赖关系为边的加权图;根据加权图中知识点或知识点簇结点到学习者要学习的知识点的距离,将图中所有结点划分为层次结构;在同层中补充双向学习依赖关系,并添加虚拟起始知识点;找出加权图中起始知识点到要学习的知识点的最短路径,还原路径中的知识点簇,并去除首个知识点与重复知识点,最终生成学习序列;能够针对学习者要学习的知识点,生成由一系列知识点构成的满足学习依赖关系约束且长度最短的学习序列;现有技术往往没有区分and与or两类依赖关系在生成学习序列中的作用,与现有技术相比,本发明所生成的学习序列更准确反映导航学习中知识点间的约束关系。

附图说明

图1为基于学习依赖关系的学习序列生成过程示意图。

具体实施方式

下面结合附图对本发明进行解释。

参照图1,本发明所述方法的具体实施方案可分为学习依赖关系图转换、层次结构生成、学习系列生成三个步骤。

本发明所述方法的输入为:学习依赖关系图g=(k,ld),其中,k={k1,k2,...,ki,...,kn}为特定课程的知识点集合,为知识点之间的学习依赖关系集合;

t={and,or}表示学习依赖关系的两种类型;若(ki,kj,and)∈ld表示要学习知识点kj,必须先要完成知识点ki的学习,若(ki,kj,or)∈ld表示学习知识点ki后,就能学习知识点kj。

①学习者要学习的知识点kg∈k。

输出为:一个以由知识点构成的、以kg结尾的序列,满足两个条件:①对于序列中的任意一个知识点k,如果学习完序列中k之前的知识点,则能够学习知识点k;②满足条件①的所有序列中最短的序列,即包含知识点数量最少的序列。

本发明所述方法具体包括以下步骤:

s1,学习依赖关系图转换

该步骤将学习依赖关系图g=(k,ld)转换为只包含or类型学习依赖关系的依赖图g′=(k′,ld′),其中,k′包含了k中部分知识点以及一组知识点形成的知识点簇,对于一个知识点簇c,对于(kc,k′,and)∈ld;为k′中元素之间的or类型学习依赖关系,n为整数集;(kx,ky,w)∈ld′表示知识点kx或知识点簇ky存在or类型学习依赖关系,在学习依赖关系图g′中对应的边的权重为w。

具体步骤如下:

s11,初始化

s12,若k不为至少存在一个出度为0的结点,设为k,若k是k′中某个知识点簇内的结点,则转向step1.3;否则,执行以下步骤:

s121,k′=k′∪{k}

s122,若kor={kor|(kor,k,or)∈ld}不为则k′=k′∪kor,ld′=ld′∪{(kor,k,1)|(kor,k,or)∈ld};该步骤把与结点k具有or类型依赖关系的知识点加入k′,把or类型依赖关系加入ld′,并设置边的权重为1;

s123,若kand={kand|(kand,k,and)∈ld}不为则k′=k′∪{kand},ld′=ld′∪(kand,k,|kand|);该步骤把结点k具有and类型依赖关系的知识点作为一个知识点簇kand加入k′,把kand与k的学习依赖关系加入ld′,并设置边的权重为kand内的知识点数目;

s124,转向s14;

s13,设k是k′中知识点簇c内的结点,执行以下步骤:

s131,若kor={kor|(kor,k,or)∈ld}不为则k′=k′∪kor,ld′=ld′∪{(kor,c,1)|(kor,k,or)∈ld};该步骤把结点k具有or类型依赖关系的知识点加入k′,把指向结点k的or类型依赖关系改为指向c,然后加入ld′,并设置边的权重为1;

s132,若kand={kand|(kand,k,and)∈ld}不为则k′=k′∪{kand},ld′=ld′∪(kand,c,|kand|);该步骤把结点k具有and类型依赖关系的知识点作为一个知识点簇kand加入k′,把kand到k的学习依赖关系改为kand到c,然后加入ld′,并设置边的权重为kand内的知识点数目;

s133,若k还属于k′中其它知识点簇,对于每个知识点簇,重复执行s131与s132;

s14,k=k-{k};ld=ld-k×{k};从图g=(k,ld)中去除知识点k以及连接k的学习依赖关系;

s15:若k为输出g′=(k′,ld′),算法结束;否则转向s12。

步骤二:层次结构生成

根据学习依赖关系图g′中知识点或知识点簇结点到学习者要学习的知识点结点kg∈k′的距离,将图中所有结点划分为层次结构,同层内的结点到kg的距离相同;在同层中补充双向的学习依赖关系,并添加k0是一个虚拟起始知识点k0,从而生成边上带有权重的图结构g″=(k″,ld″);

s21:在学习依赖关系图g′中,以学习者要学习的知识点kg∈k′为起点,沿着ld′中学习依赖关系反方向进行广度优先遍历,得到k′中每个知识点与知识点簇在图g′中到kg的距离;设未被遍历到的知识点或知识点簇结点构成的集合为k′_,令k″=k′-k′_,ld″=ld′-k′×k′_-k′_×k′,g″=(k″,ld″)为学习知识点kg前必须要学习的知识点或知识点簇及其学习依赖关系构成的图结构;在图g″中根据到kg距离将k″中每个知识点与知识点簇划分到不同层次l0,l1,...,ll,...,lm中,其中,l0是kg本身构成的集合,ll为到kg距离为l的知识点与知识点簇构成的集合;

s22:对于每个ll,检测其中任意两个知识点或知识点簇ki、kj之间是否存在学习依赖关系,如果不存在,则ld″=ld″∪{(ki,kj,1),(kj,ki,1)};

s23:设k0是一个虚拟的起始知识点,在学习中不依赖其它任何知识点,将k0加入图g″中,并建立k0与lm中知识点与知识点簇之间的学习依赖关系,即k″=k″∪{k0},ld″=ld″∪{(k0,kj,1)|kj∈lm};生成的g″=(k″,ld″)是一个边上带有权重的图结构。

步骤三,找出加权图中起始知识点到要学习的知识点的最短路径,还原最短路径中的知识点簇,并去除首个知识点和重复知识点,最终生成学习序列,具体包括以下步骤:

s31,采用dijkstra算法找出s2所得加权学习依赖关系图g″中起始知识点k0到要学习的知识点kg的最短路径;将所述最短路径中的知识点依次排成序列s;

s32,s31所得序列s中如果包含知识点簇,则用所述知识点簇包含的知识点替换到知识点簇,不用考虑簇内知识点在序列中的次序;得到全是由知识点组成的序列s′;s31所得序列s中如果序列s中如果不包含知识点簇,则令s′=s;

s33,去除序列s′中的首个知识点k0,得到s″;

s34,从序列s″中的首个知识点开始,检测每个知识点在s″中是否重复,若重复,这去掉后出现的知识点;最终生成的知识点序列就是要学习特定知识点的最短学习序列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1