System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于计算机教育学,具体涉及一种基于抽象语法树的多种编程语言的导学编程练习系统。
技术介绍
1、学习从根本上说是人类认知的反映,而人类认知是一个高度复杂的过程。认知科学领域有两个特别相关的主题,即人类思维及其学习过程是递归的和由类比驱动的。知识追踪问题是智能辅导领域首次提出并进行了大量研究的问题。面对上述挑战,知识追踪的首要目标是建立一种模型,这种模型可能无法捕捉到所有的认知过程,但却非常有用。
2、知识追踪,即在学生与课程作业互动时,由机器对其知识进行建模--是计算机辅助教育中一个成熟的问题。知识追踪对学生在一段时间内的知识进行建模,这样模型就能预测学生在未来互动中的表现。这项任务的改进意味着可以根据学生的个人需求向他们推荐新的学习资源,在这个过程中可以跳过或推迟那些被预测为太容易或太难的内容。受到一对一的人工辅导的学生相比于那些没有受到一对一辅导的学生平均会有两个标准差数量级的学习效果提升,目前,尝试定制内容的人工调整智能辅导系统已经取得了有效的成果。而机器学习解决方案可以免费为世界上的任何人提供高质量的个性化教学。知识追踪问题本质上是一个难题,因为人类的学习是以人脑和人类知识的复杂性为基础的。对学生的知识进行有效建模会产生很大的教育影响,但这项任务也面临着许多固有的挑战,其中之一就是对于编程题目的知识追踪。编程题目本身蕴含的更多信息在传统的知识追踪模型中无法被使用。
3、深度学习最初被应用在知识追踪领域是chris piech在《deep knowledgetracing》中使用循环神经网络
4、以往的知识追踪任务只使用学生的题目或者题目文本信息作为训练输入信息。然而对于目前被大众使用的编程题目练习平台来说,一个题目提交通过的代码同样能够代表本题目。并且由于多位学习者提交代码的个体差异,这些提交的代码能更全面地覆盖题目所涉及的知识点(显式的和隐式的),目前的知识追踪算法对这些代码的处理还尚待开发。
5、基于lstm、基于树的卷积神经网络(tcnn)等之前的模型,不能充分利用树的层次结构对源代码进行分析、也不能利用ast的分层结构来捕捉丰富的语义信息,从而实现更有效的代码分析和下游任务。
6、在当前的编程题目练习平台中,普遍使用的是扁平化的题目选择展示,缺少基于ai的题目推荐算法实现。这种编程题目练习平台虽然可以实现教师所需的统一的练习题目布置,但对于学习者的个体差异无法做出个性化的练习推荐,仍然存在局限性。
技术实现思路
1、鉴于上述,本专利技术的目的是提供一种基于抽象语法树的多种编程语言的导学编程练习系统,通过构建带有位置信息的astpb树来专注捕捉树内的局部和全局相对位置关系,astpb树在代码克隆检测和代码分类任务中实现了卓越的学习精度。在知识追踪任务中,通过使用astpb使学习者的编程练习提交进行更完备和更精准的知识追踪,解决了编程题目在知识追踪系统中难以被有效利用的问题,同时,推理任务中所需运算量较小,对于服务器计算性能要求较低。
2、为实现上述专利技术目的,实施例提供的基于抽象语法树的多种编程语言的导学编程练习系统,包括:
3、编程代码特征提取模块,用于使用预训练的astpb模型提取编程代码的特征表示,具体将编程题目的编程代码构建成带有位置信息的抽象语法树,抽象语法树的节点包括属性信息和位置信息,对抽象语法树进行多层节点的层卷积以增强邻近节点位置关系特征,对层卷积后的节点进行特征编码得到编程题目的特征表示;
4、知识追踪模块,用于记录学习者历史编程题目的学习情况,该学习情况包括编程题目的特征表示,采用知识追踪模型基于学习情况预测未完成编程题目的完成正确率;
5、推荐模块,用于将所有编程题目按照课程章节和知识相关性分成若干层级,每个层级的编程题目知识点在对应学科中相关度高且学习顺序相邻,且下个层级的知识点包含上一层级的知识点,推荐时确定完成正确率最低的编程题目,并将该编程题目所属层级的其他编程题目做自动推荐,当前层级的编程题目平均完成正确率高于阈值时,进行下一层级编程题目的推荐。
6、优选地,所述将编程题目的编程代码构建成带有位置信息的抽象语法树,包括:
7、为每个编程题目的编程代码生成抽象语法树,抽象语法树中每个节点包含源代码中标记的特定信息、节点特征的属性单词,对每个节点的所有属性单词的词向量进行累加平均作为节点的属性向量;
8、根据节点在抽象语法树中的位置为每个节点绑定位置信息,该位置信息包括四个参数,分别为节点在抽象语法树中的深度、节点在抽象语法树本层中的序号、节点的父节点在抽象语法树中的深度、节点在的父节点抽象语法树本层中的序号;
9、为每个节点的位置信息进行编码得到位置向量使得位置向量维度与属性向量相同,将位置向量与属性向量进行维度叠加得到节点的初始向量。
10、优选地,采用以下公式为每个节点的位置信息进行编码得到位置向量使得位置向量维度与属性向量相同:
11、
12、
13、其中,value表示位置信息中的每个参数值,pos(value,2i)表示针对每个参数值的编码向量中处于偶数位置的编码值,xdim表示属性向量维度,i表示位置计数,取值为0,1,2,…,xdim/8;
14、将四个参数值的编码向量拼接得到位置信息的位置向量。
15、优选地,所述将位置向量与属性向量进行维度叠加得到节点的初始向量,用公式表示为:
16、wn″ode=pb+wn′ode
17、其中,wn″ode表示节点的初始向量,pb表示节点的位置向量,wn′ode表示节点的属性向量。
18、优选地,所述对抽象语法树进行多层节点的层卷积以增强邻近节点位置关系特征,包括:
19、
20、
21、其中,lfn表示层卷积的深度,l表示层数索引,表示进行层卷积后每个节点的向量表示,conv(l,j)表示卷积操作中第l层第j个卷积核,cn表示第l层中的节点的个数,wn″odeat(l,j)表示卷积操作中第l层中第j个节点的初始向量,wllevelfuse表示第l层卷积后的向量表示。
22、优选地,所述对层卷积后的节点进行特征编码得到编程题目的特征表示,包括:
23、对层卷积后的抽象语法树进行路由遍历得到遍历到节点的向量表示,并组成由向量表示组成的节点序列;
24、使用tide模型提取节点序列的特征表示,具体包括对节点序列进行压缩处理得到融合位置矢量,然后对融合位置矢量进行编码和解码得到解码特征,本文档来自技高网...
【技术保护点】
1.一种基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,包括:
2.根据权利要求1所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,所述将编程题目的编程代码构建成带有位置信息的抽象语法树,包括:
3.根据权利要求2所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,采用以下公式为每个节点的位置信息进行编码得到位置向量使得位置向量维度与属性向量相同:
4.根据权利要求2所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,所述将位置向量与属性向量进行维度叠加得到节点的初始向量,用公式表示为:
5.根据权利要求1所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,所述对抽象语法树进行多层节点的层卷积以增强邻近节点位置关系特征,包括:
6.根据权利要求1所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,所述对层卷积后的节点进行特征编码得到编程题目的特征表示,包括:
7.根据权利要求6所述的基于抽象语法树的多种编程语言的导学编程练习系
8.根据权利要求1所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,所述学习情况还包括题目编号、题目完成率。
9.根据权利要求1所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,所述采用知识追踪模型基于学习情况预测未完成编程题目的完成正确率,包括:
10.根据权利要求1所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,所述PE和TE通过以下方式计算:
...【技术特征摘要】
1.一种基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,包括:
2.根据权利要求1所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,所述将编程题目的编程代码构建成带有位置信息的抽象语法树,包括:
3.根据权利要求2所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,采用以下公式为每个节点的位置信息进行编码得到位置向量使得位置向量维度与属性向量相同:
4.根据权利要求2所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,所述将位置向量与属性向量进行维度叠加得到节点的初始向量,用公式表示为:
5.根据权利要求1所述的基于抽象语法树的多种编程语言的导学编程练习系统,其特征在于,所述对抽象语法树进行多层节点的层卷积以增强邻近节点位置关系特征,包括:
6...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。