一种基于提交消息以及代码的学生作业批改方法

未命名 08-02 阅读:116 评论:0


1.本发明涉及计算机技术领域,具体是一种基于提交消息以及代码的学生作业批改方法。


背景技术:

2.随着计算机技术以及教育的飞速发展,越来越多的人投入到计算机领域的研究当中,尤其值得考量的是文本相似度的研究。文本相似度的计算方式分为两种,一种是基于关键词的匹配,如n-gram相似度,二是基于向量以及余弦相似度的匹配方法。doc2vec与word2vec都是属于后者,但doc2vec优于word2vec,因为doc2vec不仅利用了词语的语义信息而且还综合了上下文语序的信息,而word2vec则通过向量相加求平均丢失了语序信息,word2vec计算长文本相似度时,关键词提取算法准确度不高,丢失了很多关键信息。
3.随着互联网的不断发展和软件开源精神的发扬,代码开源成为了一种潮流。软件开发人员在开发过程中可以快速地在开源代码库github中搜索到相关项目的源代码。复制源代码后,软件系统中某一文件的代码与其他文件中的代码相同或相似,这种现象被称为代码克隆。当且仅当两个代码段是相似序列时,它们之间存在克隆关系,这一对代码段被称作克隆对,由克隆对组成的集合称为克隆类。如今在代码克隆检测方面的研究也如火如荼,其中simian工具在代码检测方面的精确度很高。利用simian可以更加快速的对比出多个代码文件之间重复的行数,效率更高,而且还省去了训练和匹配的时间和成本。
4.现如今高校已经自行开发出了类似github的平台用来监测和管理学生作业的提交以及完成情况,教师会给出作业完成的步骤,学生可以按照教师提供的步骤分步完成作业,在每次提交部分作业的时候要填写提交消息以及代码。这样分步进行代码编程有利于学生更加了解和完成编程任务,形成任务链,使得目标更加清晰,同时方便自己日后复盘以及教师评分。现如今只有少部分高校利用这种平台来管理学生的作业完成情况,因此,本发明的主要目标是研究一种基于提交信息以及代码程序对参考程序以及学生程序进行处理,粗粒度的追踪学生的提交过程,从而有效的批改学生程序的方法。
5.在文件cn 115168192 a中,公开了一种基于提交历史信息的学生作业批改方法,对于代码处理方面,只用了文本信息,忽略了语义信息,而且需要长时间的训练,再去匹配,过程很繁琐,且精确度不高,需要依赖人工审查,另外在评价分数线性模型时的参数是自定义的,不够严谨。


技术实现要素:

6.为了解决上述问题,本发明公开了一种基于提交消息以及代码的学生作业批改方法,有效减少人力的付出,提高严谨性和精确度,以及可以提高效率。
7.可以实现粗粒度的追踪学生的提交过程,实现自动化的批改学生程序,帮助教师提高批改作业的效率。首先对提交历史信息进行处理,分别对学生程序和参考程序提取各自的提交消息并对提交消息进行简单过滤;接着利用doc2vec计算学生提交消息以及参考
程序之间的相似度;接着利用回溯试探法计算出提交消息的匹配关系以及相似度,然后将学生的每次提交消息文本求平均得出学生程序提交消息总相似度;然后利用代码克隆检测工具simian对学生程序代码以及参考程序代码中的每个文件进行检测,计算出匹配的总行数,根据行数占比算出每个文件代码相似度,然后将学生的每次提交消息文本求平均得出学生程序代码总相似度;最后依据得到的学生提交消息总相似度以及代码总相似度建立线性模型,同时利用最小二乘法线性回归得到最终的参数从而计算出最后的学生分数。首先对提交历史信息进行处理,分别对学生程序和参考程序提取各自的提交消息并对提交消息进行简单过滤;接着利用doc2vec计算学生提交消息以及参考程序之间的相似度;接着利用回溯试探法计算出提交消息的匹配关系以及相似度,然后将学生的每次提交消息文本求平均得出学生程序提交消息总相似度;然后利用代码克隆检测工具simian对学生程序代码以及参考程序代码中的每个文件进行检测,计算出匹配的总行数,根据行数占比算出每个文件代码相似度,然后将学生的每次提交消息文本求平均得出学生程序代码总相似度;最后依据得到的学生提交消息总相似度以及代码总相似度建立线性模型,同时利用最小二乘法线性回归得到最终的参数从而计算出最后的学生分数。
8.本发明的技术方案为:一种基于提交消息以及代码的学生作业批改方法,包括下列步骤:步骤a:首先对提交历史信息进行处理,分别对学生程序和参考程序提取各自的提交消息并对提交消息进行简单过滤;步骤b:利用doc2vec计算学生提交消息以及参考程序之间的相似度;步骤c:利用回溯试探法计算出提交消息的匹配关系以及相似度,得出学生程序提交消息总相似度;步骤d:利用simian工具对学生程序代码以及参考程序代码中的每个文件进行检测,计算出每个文件代码相似度,然后得出学生程序代码总相似度;步骤e:利用得到的学生提交消息总相似度以及代码总相似度建立线性模型,结合最小二乘法线性回归得到最后的学生分数。
9.其中,步骤a中在提取提交消息时,依据git log对学生程序以及参考程序进行处理,之后对提交消息文本进行简单地过滤,删除一些默认提交消息以及非学生本人提交的消息。
10.其中,步骤b中在计算相似度中,首先对提交消息文本段落进行预处理,将提交消息文本段落进行分词处理,用空格进行连接,随后利用doc2vec进行词嵌入,将提交消息文本转换成相同维度的向量,之后计算两个向量之间的余弦相似度首先对提交消息文本段落进行预处理,将提交消息文本段落进行分词处理,用空格进行连接,随后利用doc2vec进行词嵌入,将提交消息文本转换成相同维度的向量,之后计算两个向量之间的余弦相似。
11.其中,步骤c中将学生以及参考程序提交消息集合记为a、b,其中ai与bj之间的相似度作为矩阵的第i行第j列的值,将m行n列权值矩阵作为回溯试探法的输入,步骤1进行初始化操作,i=0,j=0,段落相似度s=0,临时变量temp=0,同时创建空栈;步骤2把递归函数getbestmatch(i,weight)的入口地址,形参内部参数入栈,执行步骤4;步骤3如果栈不为空,函数出栈,执行步骤4,否则的话执行步骤6;步骤4判断i》m-1,若是执行步骤5,否则如果j《n,则判断b集合中的第j个元素是否匹配,若没有,则匹配,同时i++,转步骤2,没有匹配的
话则j++,重新执行步骤4;步骤5计算最大权值之和temp,如果s《temp/min(m,n),则s=temp/min(m,n),之后转步骤3;步骤6输出段落相似度s,将学生以及参考程序提交消息集合记为a、b,其中ai与bj之间的相似度作为矩阵的第i行第j列的值,将m行n列权值矩阵作为回溯试探法的输入,步骤1进行初始化操作,i=0,j=0,段落相似度s=0,临时变量temp=0,同时创建空栈;步骤2把递归函数getbestmatch(i,weight)的入口地址,形参内部参数入栈,执行步骤4;步骤3如果栈不为空,函数出栈,执行步骤4,否则的话执行步骤6;步骤4判断i》m-1,若是执行步骤5,否则如果j《n,则判断b集合中的第j个元素是否匹配,若没有,则匹配,同时i++,转步骤2,没有匹配的话则j++,重新执行步骤4;步骤5计算最大权值之和temp,如果s《temp/min(m,n),则s=temp/min(m,n),之后转步骤3;步骤6输出段落相似度s。
12.其中,步骤d中simian工具对学生程序代码以及参考程序代码中的每个文件进行检测,simian工具会对指定的文件格式的文件进行检测,其会自动过滤掉无用的代码,随后会显示文件之间某几行是重复的,根据重复的行数可以计算出每个文件匹配的总行数,根据行数占比算出每个文件代码相似度,最后将所有检测文件代码相似度求平均得出学生程序代码总相似度。
13.其中,步骤e中学生程序代码总相似度记为s1,将提交消息内容相似度记为s2,将学生分数记为g,则学生分数=,其中模型一是,模型二是2,然后利用最小二乘法线性回归确定最终的模型,得到最终的学生分数,其中最小二乘法线性回归的思想是通过确定未知参数,来使得真实值和预测值的误差平方和最小,其计算公式为,其中是真实值,是对应的预测值。
14.本发明的有益之处:1、本发明基于最小二乘法线性回归的评价模型。采用了代码克隆检查工具,速度较快,其次考虑了语义信息,使得匹配更加准确,也减少了大量的人力,确定参数,能够更加有效合理的评估模型利用最小二乘法线性回归确定两个模型中最终适宜的模型,得到最终的学生分数。
15.2、本发明基于文本处理提交消息相似度的计算。对提交消息文本段落进行预处理,将提交消息文本段落进行分词处理,用空格进行连接,随后利用doc2vec进行词嵌入,将提交消息文本转换成相同维度的向量,之后计算两个向量之间的余弦相似度,形成提交消息相似度集合。
16.3、本发明基于回溯试探法的代码变化片段匹配,该方法主要通过试探方式找出所有包含边数最多的匹配然后求出所有极大匹配中权值之和最大的从而找到最佳匹配。
17.4、本发明基于simian工具的代码相似度计算。利用代码克隆检测工具simian工具对学生程序代码以及参考程序代码中的每个文件进行检测,计算出每个文件代码相似度,然后得出学生程序代码总相似度。
18.5、本发明基于提交历史的提交消息内容提取,依据git log对学生程序以及参考程序进行处理,之后对提交消息文本进行简单地过滤,删除一些默认提交消息以及非学生本人提交的消息得到学生以及参考程序提交消息内容。
附图说明
19.图1为本发明的流程示意图。
实施方式
20.下面将结合本发明实施例中的附图,对发明实施例中的技术方案进行清楚、完整地描述。
21.如图1所示,一种基于提交消息以及代码的学生作业批改方法,包括下列步骤:步骤a:首先对提交历史信息进行处理,分别对学生程序和参考程序提取各自的提交消息并对提交消息进行简单过滤,依据git log对学生程序以及参考程序进行处理,之后对提交消息文本进行简单地过滤,删除一些默认提交消息以及非学生本人提交的消息;步骤b:利用doc2vec计算学生提交消息以及参考程序之间的相似度,首先对提交消息文本段落进行预处理,将提交消息文本段落进行分词处理,用空格进行连接,随后利用doc2vec进行词嵌入,将提交消息文本转换成相同维度的向量,之后计算两个向量之间的余弦相似度,对应一个n维向量,然后根据公式a计算两个向量之间的余弦相似度;a步骤c:利用回溯试探法计算出提交消息的匹配关系以及相似度,得出学生程序提交消息总相似度,将学生以及参考程序提交消息集合记为a、b,其中ai与bj之间的相似度作为矩阵的第i行第j列的值,将m行n列权值矩阵作为回溯试探法的输入,步骤1进行初始化操作,i=0,j=0,段落相似度s=0,临时变量temp=0,同时创建空栈;步骤2把递归函数getbestmatch(i,weight)的入口地址,形参内部参数入栈,执行步骤4;步骤3如果栈不为空,函数出栈,执行步骤4,否则的话执行步骤6;步骤4判断i》m-1,若是执行步骤5,否则如果j《n,则判断b集合中的第j个元素是否匹配,若没有,则匹配,同时i++,转步骤2,没有匹配的话则j++,重新执行步骤4;步骤5计算最大权值之和temp,如果s《temp/min(m,n),则s=temp/min(m,n),之后转步骤3;步骤6输出段落相似度s;步骤d:利用simian工具对学生程序代码以及参考程序代码中的每个文件进行检测,simian工具会对指定的文件格式的文件进行检测,其会自动过滤掉注释等一些无用的代码,随后会显示文件之间某几行是重复的,根据重复的行数可以计算出每个文件匹配的总行数,根据行数占比算出每个文件代码相似度,最后将所有检测文件代码相似度求平均得出学生程序代码总相似度;步骤e:首先将学生程序代码总相似度记为s1,将提交消息内容相似度记为s2,将学生分数记为g,则学生分数=,其中模型一是,模型二是2,然后利用最小二乘法线性回归确定最终的模型,得到最终的学生分数,其中最小二乘法线性回归的思想是通过确定未知参数,来使得真实值和预测值的误差平方和最小,其计算公式为,其中是真实值,是对应的预测值。
22.本领域的技术人员应理解,上述描述及附图中所示的本发明的实施例只作为举例而并不限制本发明,本发明的目的已经完整有效地实现。本发明的功能及结构原理已在实施例中展示和说明,在没有背离所述原理下,本发明的实施方式可以有任何变形或修改。

技术特征:
1.一种基于提交消息以及代码的学生作业批改方法,其特征在于,包括下列步骤:步骤a:首先对提交历史信息进行处理,分别对学生程序和参考程序提取各自的提交消息并对提交消息进行简单过滤;步骤b:利用doc2vec计算学生提交消息以及参考程序之间的相似度;步骤c:利用回溯试探法计算出提交消息的匹配关系以及相似度,得出学生程序提交消息总相似度;步骤d:利用simian工具对学生程序代码以及参考程序代码中的每个文件进行检测,计算出每个文件代码相似度,然后得出学生程序代码总相似度;步骤e:利用得到的学生提交消息总相似度以及代码总相似度建立线性模型,结合最小二乘法线性回归得到最后的学生分数。2.根据权利要求1所述的一种基于提交消息以及代码的学生作业批改方法,其特征在于:所述步骤a中在提取提交消息时,依据git log对学生程序以及参考程序进行处理,之后对提交消息文本进行简单地过滤,删除一些默认提交消息以及非学生本人提交的消息。3.根据权利要求1所述的一种基于提交消息以及代码的学生作业批改方法,其特征在于:所述步骤b中在计算相似度中,首先对提交消息文本段落进行预处理,将提交消息文本段落进行分词处理,用空格进行连接,随后利用doc2vec进行词嵌入,将提交消息文本转换成相同维度的向量,之后计算两个向量之间的余弦相似度首先对提交消息文本段落进行预处理,将提交消息文本段落进行分词处理,用空格进行连接,随后利用doc2vec进行词嵌入,将提交消息文本转换成相同维度的向量,之后计算两个向量之间的余弦相似。4.根据权利要求1所述的一种基于提交消息以及代码的学生作业批改方法,其特征在于:所述步骤c中将学生以及参考程序提交消息集合记为a、b,其中ai与bj之间的相似度作为矩阵的第i行第j列的值,将m行n列权值矩阵作为回溯试探法的输入,步骤1进行初始化操作,i=0,j=0,段落相似度s=0,临时变量temp=0,同时创建空栈;步骤2把递归函数getbestmatch(i,weight)的入口地址,形参内部参数入栈,执行步骤4;步骤3如果栈不为空,函数出栈,执行步骤4,否则的话执行步骤6;步骤4判断i>m-1,若是执行步骤5,否则如果j<n,则判断b集合中的第j个元素是否匹配,若没有,则匹配,同时i++,转步骤2,没有匹配的话则j++,重新执行步骤4;步骤5计算最大权值之和temp,如果s<temp/min(m,n),则s=temp/min(m,n),之后转步骤3;步骤6输出段落相似度s,将学生以及参考程序提交消息集合记为a、b,其中ai与bj之间的相似度作为矩阵的第i行第j列的值,将m行n列权值矩阵作为回溯试探法的输入,步骤1进行初始化操作,i=0,j=0,段落相似度s=0,临时变量temp=0,同时创建空栈;步骤2把递归函数getbestmatch(i,weight)的入口地址,形参内部参数入栈,执行步骤4;步骤3如果栈不为空,函数出栈,执行步骤4,否则的话执行步骤6;步骤4判断i>m-1,若是执行步骤5,否则如果j<n,则判断b集合中的第j个元素是否匹配,若没有,则匹配,同时i++,转步骤2,没有匹配的话则j++,重新执行步骤4;步骤5计算最大权值之和temp,如果s<temp/min(m,n),则s=temp/min(m,n),之后转步骤3;步骤6输出段落相似度s。5.根据权利要求1所述的一种基于提交消息以及代码的学生作业批改方法,其特征在于:所述步骤d中simian工具对学生程序代码以及参考程序代码中的每个文件进行检测,simian工具会对指定的文件格式的文件进行检测,其会自动过滤掉无用的代码,随后会显示文件之间某几行是重复的,根据重复的行数可以计算出每个文件匹配的总行数,根据行
数占比算出每个文件代码相似度,最后将所有检测文件代码相似度求平均得出学生程序代码总相似度。6.根据权利要求1所述的一种基于提交消息以及代码的学生作业批改方法,其特征在于:所述步骤e中学生程序代码总相似度记为s1,将提交消息内容相似度记为s2,将学生分数记为g,则学生分数=,其中模型一是,模型二是2,然后利用最小二乘法线性回归确定最终的模型,得到最终的学生分数,其中最小二乘法线性回归的思想是通过确定未知参数,来使得真实值和预测值的误差平方和最小,其计算公式为,其中是真实值,是对应的预测值。

技术总结
本发明涉及计算机技术领域,公开一种基于提交消息以及代码的学生作业批改方法。对提交历史信息进行处理,分别对学生程序和参考程序提取各自的提交消息并对提交消息进行简单过滤;计算学生提交消息以及参考程序间的相似度;计算提交消息的匹配关系和相似度,将学生的每次提交消息文本求平均得出学生程序提交消息总相似度;对学生程序代码以及参考程序代码中的每个文件进行检测,计算出匹配的总行数,根据行数占比算出每个文件代码相似度,将学生的每次提交消息文本求平均得出学生程序代码总相似度;依据得到的学生提交消息总相似度以及代码总相似度建立线性模型,同时利用最小二乘法线性回归得到最终的参数从而计算出最后的学生分数。最后的学生分数。最后的学生分数。


技术研发人员:吴朝阳 张乔乔 刘志兰 戴俭 姜一鸣 张卫丰
受保护的技术使用者:南京邮电大学
技术研发日:2023.03.21
技术公布日:2023/7/31
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐