基于数据驱动的学生程序代码推荐
发布时间:2021-10-14 10:25
本文研究了代码推荐的方法,针对高校C语言课程的编程练习,在学生编写程序过程中提供不同粒度的代码推荐方案。学生练习编写程序过程中会由于编程经验不足、语法不熟悉等原因突然暂停住,又因为不能及时得到老师同学的帮助,不知道下一步的编程思路,给学生的编程学习造成很大困难。一些集成开发环境(IDE)都包含了代码推荐功能,但是IDE通常是基于编程语言的静态类型分析对属性、方法和参数列表的推荐,所提出的代码方案往往与当前的编程上下文环境无关,并且这些推荐的结果是按照字母顺序排列的,没有考虑推荐结果与当前环境上下文的相关性。本课题利用人工智能技术和在线编程课程提供的大量参考代码,研究代码推荐方法及其在学生编程指导中的应用。利用大量正确的学生程序,通过人工智能算法,从单词、句子、和代码块三个不同粒度学习程序的内在结构逻辑和编程模式,从而根据程序的当前上下文,对编程困难的学生提供编程帮助。针对上述问题,本文完成了如下工作:基于循环神经网络的token词推荐。此方法根据当前程序上下文的token序列推荐下一个token词。利用词法分析将程序token化,对token进行标准化以减少代码多样性的影响。利用循环神...
【文章来源】:哈尔滨工业大学黑龙江省 211工程院校 985工程院校
【文章页数】:71 页
【学位级别】:硕士
【部分图文】:
代码推荐流程图
哈尔滨工业大学硕士学位论文2.2 相关技术与理论2.2.1 循环神经网络简介在最初的神经网络模型-全连接网络中,层与层之间是完全连接的,但是层内的节点是相互分开的。全连接网络对于一些序列问题不能很好的处理。例如,在处理一个句子中的下一个单词的预测的问题时,全连接网络就无能为力。因为句子中的单词通常不是相互无关独立的,当前单词的预测通常要用到前面的几个单词。循环神经网络是为了处理序列数据而提出的,表现的具体形式为网络能够记忆先前的信息并将其应用于当前输出的计算,即隐藏层之间的节点不再相互独立而是连接的,并且隐藏层的输入不仅包括输入层的输出,还包括前一时刻的隐藏层的输出[24]。理论上,RNN 可以处理任何长度的序列数据。然而在实际使用中,为了降低复杂性,通常假设当前状态仅与先前的几个状态相关,传统循环神经网络结构如图 2-1 所示。
哈尔滨工业大学硕士学位论文经网络中在 t 时间步内的运行流程如图 2-2 所示,输入藏层 ht-1和当前时间步的输入 xt的级联,其中 ht-1是一个开始的时间步 0 到上一时间步 t-1 的历史信息,xt是输入词向量 xt与以前的历史信息 ht-1相结合,生成当前的隐历史向量 ht,基于当前的 ht,可以预测下一个出现某个单出层 ot。总之,新的历史信息 ht被用于对未来的预测, xt进行更新。
【参考文献】:
期刊论文
[1]基于深度学习的程序生成与补全技术研究进展[J]. 胡星,李戈,刘芳,金芝. 软件学报. 2019(05)
[2]一种C程序代码相似度检测方法[J]. 王卉. 福建电脑. 2018(06)
[3]一种程序源代码相似度度量方法[J]. 古平,张锋,周海涛. 计算机工程. 2012(06)
[4]程序代码相似度度量的研究与实现[J]. 于海英. 计算机工程. 2010(04)
本文编号:3435975
【文章来源】:哈尔滨工业大学黑龙江省 211工程院校 985工程院校
【文章页数】:71 页
【学位级别】:硕士
【部分图文】:
代码推荐流程图
哈尔滨工业大学硕士学位论文2.2 相关技术与理论2.2.1 循环神经网络简介在最初的神经网络模型-全连接网络中,层与层之间是完全连接的,但是层内的节点是相互分开的。全连接网络对于一些序列问题不能很好的处理。例如,在处理一个句子中的下一个单词的预测的问题时,全连接网络就无能为力。因为句子中的单词通常不是相互无关独立的,当前单词的预测通常要用到前面的几个单词。循环神经网络是为了处理序列数据而提出的,表现的具体形式为网络能够记忆先前的信息并将其应用于当前输出的计算,即隐藏层之间的节点不再相互独立而是连接的,并且隐藏层的输入不仅包括输入层的输出,还包括前一时刻的隐藏层的输出[24]。理论上,RNN 可以处理任何长度的序列数据。然而在实际使用中,为了降低复杂性,通常假设当前状态仅与先前的几个状态相关,传统循环神经网络结构如图 2-1 所示。
哈尔滨工业大学硕士学位论文经网络中在 t 时间步内的运行流程如图 2-2 所示,输入藏层 ht-1和当前时间步的输入 xt的级联,其中 ht-1是一个开始的时间步 0 到上一时间步 t-1 的历史信息,xt是输入词向量 xt与以前的历史信息 ht-1相结合,生成当前的隐历史向量 ht,基于当前的 ht,可以预测下一个出现某个单出层 ot。总之,新的历史信息 ht被用于对未来的预测, xt进行更新。
【参考文献】:
期刊论文
[1]基于深度学习的程序生成与补全技术研究进展[J]. 胡星,李戈,刘芳,金芝. 软件学报. 2019(05)
[2]一种C程序代码相似度检测方法[J]. 王卉. 福建电脑. 2018(06)
[3]一种程序源代码相似度度量方法[J]. 古平,张锋,周海涛. 计算机工程. 2012(06)
[4]程序代码相似度度量的研究与实现[J]. 于海英. 计算机工程. 2010(04)
本文编号:3435975
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3435975.html