一种应用于多元编程习题的深度知识追踪方法及系统技术方案

技术编号:39066585 阅读:20 留言:0更新日期:2023-10-12 19:59
本发明专利技术涉及一种应用于多元编程习题的深度知识追踪方法及系统,包括:接收编程平台系统的用户做题数据和编译日志数据,进行数据预处理;对错误信息进行日志模式聚类;构建题型特征矩阵;基于时间间隔和学习能力的位置编码;对答题交互序列进行one

【技术实现步骤摘要】
一种应用于多元编程习题的深度知识追踪方法及系统


[0001]本专利技术涉及一种应用于多元编程习题的深度知识追踪方法及系统,具体而言,是一种基于多头注意力机制的知识追踪技术,在编程学习领域中应用,可对学习者做题产生的多元习题数据进行模型预测。

技术介绍

[0002]知识追踪技术是通过学习者的历史答题记录,挖掘潜在的学习规律,捕获知识状态的变化,并预测学习者在未来的解题表现,进行因材施教,实现为学习者免费提供高质量个性化教学。传统的知识追踪模型有项目反应理论模型,贝叶斯模型以及因子分析模型,这些模型解释性较好,但模型的预测效果一般。随着人工智能技术的不断发展,深度学习技术被广泛应用于知识追踪领域。相较于传统的知识追踪模型,利用循环神经网络、记忆网络、注意力机制等深度学习技术的知识追踪模型,可以捕获学生知识的更复杂表示,精度有了更显著的提升。因此,深度知识追踪技术在线学习平台、智能辅导系统等信息化教学平台中得到广泛应用,旨在帮助教育者获取和了解学生的知识水平,进行个性化教学。此外,该技术还在职业测评、学生编程、语言学习等领域得到了探索和应用。在学生编程场景中,深度知识追踪技术经过不断的研究发展,被应用于编程学习平台,相关研究围绕编程学情分析、预测与个性化导学等方面进行了有益的探索。
[0003]具体的说,在编程学情预测领域,深度知识追踪是从学生的编程习题练习序列和提交的历史代码中,追踪预测学生的知识掌握情况。分析学生提交的源代码中包含的知识点,来判断学生的掌握程度。因此很多研究者研究了各种方法提取学生代码特征,并用不同的方式融入知识追踪模型,来预测学生在编程学习过程中的答题表现,帮助学习者理解编程语言和编程思想,提高编程能力和解决问题的能力。
[0004]需要提及的是,编程习题答题方式与普通的“一过式”习题答题不同,编程学习行为有几点特殊性:一、基本上编程题目没有唯一的标准答案,考察内容较多,知识点关联较密切。二、学生给出的编程代码和编译过程中产生的编译日志包含有大量的信息,能够体现学生对编程语言知识内容的掌握程度。三、对于大部分编程习题,学生在练习过程中会进行多次修改和提交源代码,直至结果正确或者达到满意的效果。
[0005]因此,在当前的编程学情预测领域,现有的深度知识追踪模型和方法还存在一些不足之处,具体有以下几点:
[0006]第一,编程题型的特征利用不足,仅考虑了编程题的题目、代码等特征,忽略了代码编译后丰富的日志信息。第二,模型特征输入不足,现有的知识追踪模型和方法大部分仅考虑了题目和答题结果特征,而忽略了习题类型和多知识点特征对知识掌握程度的影响。第三,适用题型单一化,常规题和编程题不能一起作为模型的输入,而是分别作为不同模型的输入进行训练和预测,两者独立不利于模型准确率的提高,同时也不适用于实际的编程学习环境。

技术实现思路

[0007]针对以上所阐述的关于深度知识追踪在编程学习领域应用所出现的问题,本专利技术提供了一种应用于多元习题的,基于多头注意力的编程知识追踪方法及系统。第一目的在于解决现有的编程知识追踪模型仅单独考虑编程题型,而忽略了同时对常规题型的预测。提出一种对多元习题(单项选择题、多项选择题、填空题、判断题、编程题)同时进行编程知识追踪的方法,通过将学习者产生的多元做题数据进行统一化处理,尤其对编程题型进行日志

知识点映射,转化为符合模型输入的格式,并与习题类型特征融合,进行学习者知识点掌握程度的预测。
[0008]术语解释:
[0009]1、DKT:基于深度学习的知识追踪技术,用于对学生的知识掌握程度进行评估和预测。
[0010]2、多头自注意力:一种在深度学习中广泛应用的注意力机制,它能够同时对输入序列中不同位置的信息进行加权融合,从而更好地捕捉序列中的重要特征。
[0011]3、Python:一种高级的解释性编程语言,被设计用于简单易读的代码编写和快速开发。Python以其简洁的语法、可读性和广泛的应用领域而闻名。
[0012]4、re.findall模块:re模块中的函数,用于在给定的字符串中查找并返回所有与正则表达式模式匹配的部分。它的作用是找到字符串中所有匹配模式的结果,并以列表的形式返回。
[0013]5、group方法:re模块中的方法,用于匹配对象,返回与正则表达式模式匹配的字符串。
[0014]6、日志模式聚类:一种针对日志数据的分析技术,用于将具有相似模式或特征的日志条目归类到同一类别中。在大规模的日志数据集中,日志条目往往呈现出多样的格式和结构,而日志模式聚类旨在发现其中的共性和重复性,以便进行更有效的日志分析和故障排查。
[0015]本专利技术的技术方案为:
[0016]一种应用于多元编程习题的深度知识追踪方法,包括:
[0017]接收编程平台系统的用户做题数据表和编译日志数据文件;其中,用户做题数据表包括习题ID、用户ID、答题结果、知识点、时间信息、习题难度和习题类型。编译日志数据包括用户信息、代码信息、编译命令、错误和警告信息、编译结果和时间信息。
[0018]对用户做题数据表和编译日志数据进行数据预处理;数据预处理包括:对用户做题数据表中的用户做题数据进行预处理,包括数据集成、数据格式转换和数据清洗;以及对用户编译日志数据文件预处理进行错误信息提取;
[0019]具体的,数据集成是将多个节点或数据库中的用户做题数据整合到一个用户做题数据表中。针对用户做题数据进行数据格式转换,是将时间信息从标准的时间表示格式转为相应的数字序列。数据清洗是将用户做题数据中较长的用户ID信息进行简化和脱敏处理,提高数据的简洁性和可用性。以及对用户做题数据中包含的控制进行删除处理。其次是对答题结果进行一个标准化处理,具体为使用最小最大归一化方法,将每种题型的数据处理为[0,1]区间内递增的无量纲值。
[0020]对错误信息进行日志模式聚类;对每一类编译错误进行分析,建立编译错误知识
库,并进行相关知识点映射和提取编译错误关键字,其中,知识点映射是依据错误类型和错误发生代码行包含的代码信息进行相关的知识点映射;
[0021]从处理后的用户做题数据表中提取习题ID、用户ID、答题结果、知识点、时间信息、习题难度和习题类型,并存储在用户做题数据表中;以用户ID和时间信息为标签进行序列的排序;
[0022]构建题型特征矩阵;
[0023]基于时间间隔和学习能力的位置编码;
[0024]输入至训练好的深度知识追踪模型中实现深度知识追踪。
[0025]根据本专利技术优选的,深度知识追踪模型包括编码器、解码器与预测层;
[0026]编码器包括一个多头自注意力层和前馈神经网络层;多头自注意力层、前馈神经网络层之间使用残差连接和分组归一化进行处理;
[0027]多头自注意力层的输入来自于交互嵌入的不同投影,输出的Score值经过残差连接和分组归一化处理作为前馈神经网络的输入;前馈神经网络的输出再经过残差连接和归一化处本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用于多元编程习题的深度知识追踪方法,其特征在于,包括:接收编程平台系统的用户做题数据表和编译日志数据文件;对用户做题数据表和编译日志数据进行数据预处理;数据预处理包括:对用户做题数据表中的用户做题数据进行预处理,包括数据集成、数据格式转换和数据清洗;以及对用户编译日志数据文件预处理进行错误信息提取;对错误信息进行日志模式聚类;对每一类编译错误进行分析,建立编译错误知识库,并进行相关知识点映射和提取编译错误关键字,其中,知识点映射是依据错误类型和错误发生代码行包含的代码信息进行相关的知识点映射;从处理后的用户做题数据表中提取习题ID、用户ID、答题结果、知识点、时间信息、习题难度和习题类型,并存储在用户做题数据表中;以用户ID和时间信息为标签进行序列的排序;构建题型特征矩阵;基于时间间隔和学习能力的位置编码;输入至训练好的深度知识追踪模型中实现深度知识追踪;进一步优选的,深度知识追踪模型包括编码器、解码器与预测层;编码器包括一个多头自注意力层和前馈神经网络层;多头自注意力层、前馈神经网络层之间使用残差连接和分组归一化进行处理;多头自注意力层的输入来自于交互嵌入的不同投影,输出的Score值经过残差连接和分组归一化处理作为前馈神经网络的输入;前馈神经网络的输出再经过残差连接和归一化处理,作为编码器的输出以及解码器第二个多头自注意力层的输入;解码器包括两个多头自注意力层和前馈神经网络层;两个多头自注意力层包括第一层多头自注意力层和第二层多头自注意力层;编码器的输出作为解码器的输入,输入到第二层多头自注意力层中;第一层多头自注意力层的输入来自于知识点嵌入矩阵k
t
的不同投影,输出的score值经过残差连接和分组归一化处理作为第二层多头自注意力层的输入;解码器的输出经过预测层处理后得到最终的预测结果;预测层包括两个全连接层,先使用ReLU激活函数,最后使用sigmoid激活函数。2.根据权利要求1所述的一种应用于多元编程习题的深度知识追踪方法,其特征在于,多头自注意力层中,使用全为1的下三角矩阵作为掩码矩阵;多头自注意力层中,使用学生的做题正确率特征来代表学生的遗忘能力,因此,考虑学生遗忘行为和遗忘能力的编码器的多头自注意力层和解码器的第一个多头自注意力层的计算公式如式(I)、式(II)所示:Attention=Score
·
V(II)式(I)、式(II)中,Q,K,V为多头自注意力层的三个输入;具体的,在编码器和解码器的第一层自注意力层中,Q,K,V皆来自x
t
的不同投影;在解码器最后一层的注意力层中,Q来自解码器的第一层注意力的输出,K,V来自于编码器的输出;α,β为可学习的超参数,

ij
为习
题i和j之间的做题时间间隔,为学生u
i
的学习能力,Score为注意力值,Attention为最终的输出,是为了避免参数过大而导致的softmax梯度过小,Mask()为掩码操作。3.根据权利要求1所述的一种应用于多元编程习题的深度知识追踪方法,其特征在于,对用户做题数据进行预处理,包括:数据集成:将多个节点或数据库中的用户做题数据整合到一个数据表中;数据格式转换:是将时间信息从标准的时间表示格式转为相应的数字序列;数据清洗:将用户做题数据中较长的用户ID信息进行简化和脱敏处理,以及对用户做题数据中包含的控制进行删除处理;最终得到所有用户的答题记录包括习题ID、用户ID、答题结果、知识点、时间信息、习题难度和习题类型。4.根据权利要求1所述的一种应用于多元编程习题的深度知识追踪方法,其特征在于,对编程日志数据进行错误信息提取,包括:使用正则表达式提取每个用户的编译错误信息;使用re.findall函数在编程日志数据中查找编译错误error匹配项,包括错误类型、错误描述、错误产生的时间和所在代码行信息,与题目和学习者信息一起存储到csv文件中。5.根据权利要求1所述的一种应用于多元编程习题的深度知识追踪方法,其特征在于,对错误信息进行日志模式聚类,包括:选择凝聚式层次聚类算法进行聚类,使用的聚类特征为错误类型、错误描述、错误发生代码行和所属习题,聚类后的结果包括多个聚类簇,每个聚类簇表示一类具有相似特征的错误,聚类簇中的每个元素表示一个具体的错误信息,包括错误类型、错误描述、错误发生代码行和所属习题信息;对每一类编译错误进行分析,建立编译错误知识库,包括:对每个聚类簇中的错误类型、错误描述和错误发生代码行进行专家分析,通过深入理解错误的性质和上下文信息,推测可能导致该错误的知识点或概念;将该知识点或概念与聚类簇进行关联,建立编译错误知识库。6.根据权利要求1所述的一种应用于多元编程习题的深度知识追踪方法,其特征在于,构建题型特征矩阵,包括:首先,对学生u
i
答题记录中的习题类型进行划分和标记;然后,选择占比最高的题型对输入序列进行标记,将该题型作为输入序列的特殊标记;通过对不同学生和时刻的答题记录进行统计,形成一个题型特征矩阵T
i
×
j
,该矩阵大小为i行j列;其中,i为学生的数量,j为输入的次数,每个元素表示对应学生在对应时刻所做题型的比重;计算题型比重的公式如式(III)、式(IV)所示:T
ijmax
=argmax(P1,P2,...P
type
)(IV)式(III)、式(IV)中,对于每次输入序列,假设有type种不同的题型;对于第ti种题型,
记为q
ti
,计算其在序列中的比重比例P
ti
,argmax函数表示选择使用参数取值最大的那个参数,T
ijmax
表示题型特征矩阵T
i
×
j
中第i行第j列的元素。7.根据权利要求1

6任一所述的一种应用于多元编程习题的深度知识追踪方法,其特征在于,实现深度知识追踪,包括:1)输入:将学生u
i
的答题记录中{习题ID,答题结果,知识点}对应表示为一个三元组将知识点kp
t
进行one

hot编码处理后得到知识点向量k'
t
,再与知识点投影矩阵W
k
相乘,得到最终的知识点嵌入矩阵k
t
;其中,W
k
∈R
E
×
d
,E是知识点总数,d是模型的维度;W
k
用于将知识点向量k'
t
映射到深度知识追踪模型的维度上;将答题结果和知识点记录(a
t
,kp
t
),根据a
t
包含的答题结果,将编码后的知识点嵌入矩阵k
t
进行相应位置连接零向量操作,零向量的长度与k
t
长度一致,再与交互投影矩阵W
x
相乘,得到最终的交互嵌入x
t
;W
x
用于答题结果和知识点记录x'
t
映射到深度知识追踪模型的维度上;如式(V)、式(VI)、式(VII)所示:x
t
=x'
t
·
W
x...

【专利技术属性】
技术研发人员:郭莹刘尚旭张秋萍杨美红吴晓明潘景山
申请(专利权)人:齐鲁工业大学山东省科学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1