当前位置: 首页 > 专利查询>东华大学专利>正文

一种基于随机森林模型的代码抄袭嫌疑检测的方法技术

技术编号:20044688 阅读:33 留言:0更新日期:2019-01-09 04:05
本发明专利技术涉及一种基于随机森林模型的代码抄袭嫌疑检测的方法。本发明专利技术从大的方面来说可分为两个阶段,第一个是特征提取阶段,第二个为模型的训练和预测阶段。本发明专利技术收集两份待检测代码的相关特征数据,待检测用户的特征数据以及相关题目的属性,通过引入随机森林算法进行建模,最终得出当前用户是否具有抄袭嫌疑。

【技术实现步骤摘要】
一种基于随机森林模型的代码抄袭嫌疑检测的方法
本专利技术涉及一种基于随机森林模型的代码抄袭嫌疑检测的方法,属于机器学习技术应用领域。
技术介绍
现如今,随着计算机技术的快速发展,大量人员涌入计算机行业,从业人员激增带来的一系列诚信问题不容忽视。小到计算机专业的程序设计论文,大到关键性软件工程产品,程序代码中的克隆和抄袭现象愈发严重。抄袭手段主要有以下几种:(1)未更改;(2)修改注释;(3)修改标识符;(4)调整变量的位置;(5)过程组合;(6)调整语句的位置;(7)调整控制结构逻辑等。此外,还有学者在研究过程中推测构拟出其他的一些抄袭手段。虽然抄袭者的抄袭手段各有千秋,但在不了解程序内部逻辑的情况下,抄袭者若想程序正常运行并避过检测,难免要对代码作出改动,代码改动的三种方式可描述为:(1)代码的布局;(2)语法的理解;(3)语义的分析。对于前两种改动方式,可采用代码重新排序、标识符换名以及关键字等价替换等方式,所做的改动相对较容易。至于最后一种语义分析改动方式,如函数分解与结合、语句块的等价替换等,代码改动难度相对较大。国外对于程序抄袭检测技术的研究始于70年代,如今存在多个行之有效的抄袭检测系统,如斯坦福大学的MOSS、德国Karlsruhe大学的JPlag、威奇塔州立大学的SIM、悉尼大学的YAP3以及伊利诺伊大学的GPLAG等。目前,国内可考证的抄袭检测系统有:北京航空航天大学的BUAASIM系统,中国人民警官大学的PASCAL代码抄袭检测系统等。其中,MOSS系统是AlexAiken于1994年开发的,主要用于检测C,C++,Java,Pascal,Ada,ML,Lisp,Scheme等编写的源程序的相似性;MichaelWise于1992年开发了YAP1,随后又陆续开发了更为优越的YAP2和最终版本的YAP3,前两个版本用于代码抄袭检测,最终版YAP3不仅可以用于代码抄袭检测,还可以用于自然语言文本间的相似性检测;JPlag是采用Java语言编写的在互联网上提供服务的系统,使用的比较算法与YAP3相同,同样也是GreedyStringTiling,但在时间复杂度上比YAP3略胜一筹。经实验测试验证,JPlag的功能在很多方面与MOSS和YAP3一样强大,但在提交更为复杂的程序时,JPlag明显比MOSS更为出众。然而,大部分抄袭检测系统都是针对程序代码相似度的度量进行检测,即通过计算机计算两个程序代码文件的接近程度,并根据计算结果在一定范围内给出一个度量值,继而根据此度量值进一步检测程序代码是否存在抄袭现象。经调查发现,目前也存在具有不同检测路径的抄袭检测系统,其基本思想是:搜集待检测的两份代码在不同方面的相似值并以此作为神经网络的输入向量,继而通过BP神经网络学习得出是否抄袭的结论。此专利技术分为两个阶段,一:特征发生阶段。此阶段主要引入代码注释分离技术、编译技术、优化编译和反汇编技术,将代码集分解或变换成比较样本集,剔除样本中的无关信息,再通过计算公式得出检测程序对的七种相似性结果组成特征向量。二:BP神经网络训练阶段。首先将比较代码的特征向量输入至BP神经网络,输出即为两份代码是否抄袭的预测值。但BP神经网络作为传统的神经网络,其隐藏层中只设立了一层,在训练特征集的过程中,对于神经网络调优输出的各个特征的权重值并不能达到理想的预测效果,准确率也有待考证。且该专利技术的BP神经网络模型收集的7个特征值中,部分数据具有不稳定性,例如代码风格相似性、统计属性相似性等特征,这些特征本身对于程序语法而言差异相对较小,再加上算法练习所需的代码量较少,因而在模型分类过程中,最终实现的区分度不大,不能较好地发挥模型应有的性能。
技术实现思路
本专利技术的目的是:用于教学过程当中检测学生抄袭的代码,同时也为了能提高检测的精准度。为了达到上述目的,本专利技术的技术方案是提供了一种基于随机森林模型的代码抄袭嫌疑检测的方法,其特征在于,包括以下步骤:步骤1、获取针对同一题的所有代码,将所有代码的代码内容和注释内容分离,并剔除代码内容的首尾中的无关信息;步骤2、提取经过步骤1处理的代码的特征值CPMS,特征值CPMS为当前用户的代码与其他用户代码的最大相似度MSR是否超过相似度阈值SRT的值;步骤3、提取经过步骤1处理的代码的CPMSP,CPMSP为当前用户的代码与其他用户代码的最大相似度低于阈值的百分比:步骤4、将CPMSP离散化,求得类别值CPMSPC;步骤5、提取当前用户的代码的IE值:若当前用户的代码所对应的题为考试题,则IE=1,若当前用户的代码所对应的题为练习题,则IE=0;提取当前用户的代码的CPTC值:CPTC值表示当前用户与最大相似度用户所提交的代码通过的测试用例是否相同,若相同,CPTC值设为1,若不同,CPTC值设为0;提取当前用户的代码的代码风格相似度ASSR:代码风格相似度ASSR表示当前用户与最大相似度用户所提交的代码风格相似度;步骤6、提取当前用户的代码所对应题目的难易程度值DL;提取当前用户的抄袭率值PR,包括以下步骤:统计当前用户提交代码总数sum(TNE)及当前用户确认抄袭的提交总数sum(TNPE),则有:提取当前用户的抄袭集中度PCR,包括以下步骤:统计当前用户每一道题可能抄袭的其他用户的Id值,设该用户提交题目的数量为n,集合R={r1,r2,…,rn},其中集合元素ri表示该用户的第i题的最大相似度的对象用户的Id值。用PCR表示用户抄题对象Id的集中程度。PCR可用熵或基尼系数等公式进行计算。提取当前用户的成绩排名RRB,包括以下步骤:用户每提交成功一道题,就会实时统计当前总得分,然后根据一个班所有用户的总得分值进行排名;步骤7、利用随机森林模型来判定是否存在抄袭嫌疑,包括以下步骤:步骤701、通过步骤2至步骤6得到不同特征的特征集,再获取各特征集的标签数据组成标签数据集,再进行连续值与缺失值的处理得到训练集;步骤702、构造n棵决策树从而形成随机森林,在构造决策树时,从训练集中有放回地随机选取样本,同时,无放回地随机选取总特征量中的部分特征量;步骤703、将实时获取的相关特征输入随机森林,n棵决策树的预测结果为T={t1,t2,…,tn},则随机森林的预测结果为M(T),M(T)表示一组数据当中的众数,若M(T)的值为1的话,则表示最终的预测结果为当前用户本次提交的代码具有抄袭嫌疑,抄袭的对象为代码相似度最大的其他用户;否则,当前用户不具有抄袭嫌疑。优选地,所述步骤2中,所述特征值CPMS的提取步骤包括:步骤201、计算最大相似度MSR经过步骤1处理的所有代码的集合表示为S={S1,S2,…,Sn},经过步骤1处理的第i个用户的代码为Si,则Si与第j个用户的代码Sj的相似度为sim(Si,Sj),则最大相似度MSR的计算公式表示为:MSR=max(sim(S1,S2),sim(S1,S3),…,sim(S1,Sn))步骤202、出题人根据题目的难易程度来设定相似度阈值SRT,该阈值也可以通过机器学习的方法动态调整。步骤203、计算CPMS的逻辑如下:如果最大相似度MSR大于相似度阈值SRT,则将CPMS设为1;否则设为0。优选地,步骤4中,所述类别值CPMSPC的计算方本文档来自技高网
...

【技术保护点】
1.一种基于随机森林模型的代码抄袭嫌疑检测的方法,其特征在于,包括以下步骤:步骤1、获取针对同一题的所有代码,将所有代码的代码内容和注释内容分离,并剔除代码内容的首尾中的无关信息;步骤2、提取经过步骤1处理的代码的特征值CPMS,特征值CPMS为当前用户的代码与其他用户代码的最大相似度MSR是否超过相似度阈值SRT的值;步骤3、提取经过步骤1处理的代码的CPMSP,CPMSP为当前用户的代码与其他用户代码的最大相似度低于阈值的百分比:

【技术特征摘要】
1.一种基于随机森林模型的代码抄袭嫌疑检测的方法,其特征在于,包括以下步骤:步骤1、获取针对同一题的所有代码,将所有代码的代码内容和注释内容分离,并剔除代码内容的首尾中的无关信息;步骤2、提取经过步骤1处理的代码的特征值CPMS,特征值CPMS为当前用户的代码与其他用户代码的最大相似度MSR是否超过相似度阈值SRT的值;步骤3、提取经过步骤1处理的代码的CPMSP,CPMSP为当前用户的代码与其他用户代码的最大相似度低于阈值的百分比:步骤4、将CPMSP离散化,求得类别值CPMSPC;步骤5、提取当前用户的代码的IE值:若当前用户的代码所对应的题为考试题,则IE=1,若当前用户的代码所对应的题为练习题,则IE=0;提取当前用户的代码的CPTC值:CPTC值表示当前用户与最大相似度用户所提交的代码通过的测试用例是否相同,若相同,CPTC值设为1,若不同,CPTC值设为0;提取当前用户的代码的代码风格相似度ASSR:代码风格相似度ASSR表示当前用户与最大相似度用户所提交的代码风格相似度;步骤6、提取当前用户的代码所对应题目的难易程度值DL;提取当前用户的抄袭率值PR,包括以下步骤:统计当前用户提交代码总数sum(TNE)及当前用户确认抄袭的提交总数sum(TNPE),则有:提取当前用户的抄袭集中度PCR,包括以下步骤:统计当前用户每一道题可能抄袭的其他用户的Id值,设该用户提交题目的数量为n,集合R={r1,r2,…,rn},其中集合元素ri表示该用户的第i题的最大相似度的对象用户的Id值,用PCR表示用户抄题对象Id的集中程度;提取当前用户的成绩排名RRB,包括以下步骤:用户每提交成功一道题,就会实时统计当前总得分,然后根据所有用户的总得分值进行排名;步骤7、利用随机森林模型来判定是否存在抄袭嫌疑,包括以下步骤:步骤701、通过步骤2至步骤6得到不同特征的特征集,再获取各特征集的标签数据组成标签数据集,再进行连续值与缺失值的处理得到训练集;步骤702、构造n棵决策树从而形成随机森林,在构造决策树时,从训练集中有放回地随机选取样本,同时,无放回地随机选取总特征量中的部分特征量;步骤703、将实时获取的相关特征输入随机森林,n棵决策树的预测结果为T={t1,t2,…,tn},则随机森林的预测结果为M(T),M(T)表示一组数据当中的众数,若M(T)的值为1的话,则表示最终的预测结果为当前用户本次提交的代码具有抄袭嫌疑,抄袭的对象为代码相似度最大的其他用户...

【专利技术属性】
技术研发人员:黄秋波方国正汤景东
申请(专利权)人:东华大学
类型:发明
国别省市:上海,31

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

1