论文部分内容阅读
在互联网飞速发展的时代,掌握计算机技能正在成为许多高校专业都必修的技能之一。随着教育的改革,高校中计算机教育模式也在改革,掌握计算机编程不仅是计算机相关专业的基础能力,对于许多非计算机专业的学生,也要求对基础编程有一定的了解。近年来,在线编程评测系统开始在高校中流行起来,学生在网页编程系统上便能够对课上所学的知识点进行习题的操练,并通过系统给出是否通过相应题目的反馈进行查漏补缺。当下,伴随着使用人数的增多,在线编程评测系统也开始暴露出一些弊端,这对编程教育提出了更高的要求。传统的在线编程评测系统已经能够满足大部分人群的编程学习需求,然而,在日常编程教学中,我们仍发现有一些不足。首先是缺少对于习题难度的合理区分,刚开始接触编程的新人,对于难度并没有清晰的认知,因为在线的评测系统并不会告诉你什么题目是适合新人的,题目往往以列表的形式呈现在学生的眼中。此外,学生在做题时往往会优先完成老师布置的课内作业,其次才会在有空余的精力下去完成课外的习题。而学生在花费大量的精力在完成课外习题时,他们往往会遇到题目缺乏营养,即获取不到有用的知识,或者题目难度太难,无从下手的情况。当学生长时间处于这种现象的困扰下,可能会导致对编程的兴趣下降,也不会对学生的知识掌握有进一步的提升。因此,在在线编程系统上进行智能化的推荐是有必要的,这与传统的基于规则的推荐区别开来,因为对于不同的学生,编程能力跨度较大,使用传统的推荐方法并不能很好地解决上述问题。因此,本文提出基于深度学习,给学生提供个性化编程习题推荐,贡献如下:提出使用图模型建模编程场景下实体的表征。图模型近年来在许多推荐系统中得到应用,基于图结构数据的特征提取能够增强编程场景下不同实体(用户、习题、知识点)之间的交互信息表示能力,从而最终提取到用户的个性化特征。实验表明,基于图模型的实体表征能够增强最终习题推荐的效果。提出基于多头自注意力结构的用户知识能力建模。为了捕捉用户在做题序列中每个时刻的知识状态,采用了多头自注意力结构。相较于传统深度学习序列模型,该结构模型能够很好的解决长依赖距离问题。实验表明,基于该结构建模的知识能力更贴近用户的真实能力水平。基于知识协同过滤进行习题推荐。协同过滤在推荐上应用十分广泛,然而,以往的协同过滤推荐用到的特征函数并不适用于编程教育场景,习题的推荐应该以推动学生知识能力为目标。因此,本文提出基于知识能力状态来进行相似用户的协同过滤推荐。最后,本文成功将该推荐模型应用在实际的编程系统中。本文所提出的个性化编程习题推荐模型,在多个数据集上取得了领先的效果,并且能够在学院实际应用的编程系统上进行部署,并起到一定的推荐效果,为推荐在编程系统上的应用奠定了一定基础。