[发明专利]一种基于层级注意力神经网络的程序代码查重方法在审
| 申请号: | 202011250169.4 | 申请日: | 2020-11-10 |
| 公开(公告)号: | CN112230990A | 公开(公告)日: | 2021-01-15 |
| 发明(设计)人: | 刘瑞芳;张茜铭;易芃尧 | 申请(专利权)人: | 北京邮电大学 |
| 主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F16/2455;G06Q50/20;G06N3/04 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 100876 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 层级 注意力 神经网络 程序代码 方法 | ||
1.一种基于层级注意力神经网络的程序代码查重方法,其特征在于,包括以下步骤:
搭建代码查重系统步骤:搭建一个具有学生代码作业提交储存及教师访问管理功能的系统,应用于计算机类课程教学中,服务于程序语言课程教学老师;
程序代码预处理步骤:通过第一步的系统收集程序代码,对程序代码进行标注后构建训练、验证和测试数据集,对程序代码进行数据预处理,并根据词频生成令牌词典;
基于层级注意力网络的分类模型构建步骤:搭建由代码令牌级注意力神经网络和代码行级注意力神经网络构成的双层注意力神经网络表征程序代码的分类模型;
基于层级注意力网络的代码查重模型训练评估及预测步骤:利用第二步构建的训练集数据对第三步所述模型进行训练,并利用验证集和测试集进行模型选择与评估。
2.如权利要求1所述的方法,其特征在于,搭建代码查重系统步骤中,我们对代码查重系统进行了用户需求分析,总结出系统所需功能,进行数据库搭建、系统架构和系统流程设计,代码查重系统搭建具体过程如下:
1)根据系统的两类用户对系统功能的不同需求,为学生和教师提供登录以及个人信息管理功能并提供学生注册功能,针对学生用户提供作业代码上传和管理功能,针对教师用户提供学生代码管理、学生代码查重等功能;
2)本系统需要与数据库交互内容,利用基于MVC(Model、View、Controller)模式的Web开发框架Django,将Django中定义的类及类的属性同步到数据库中的表和字段,通过在Python的函数中调用类来操作数据库;
3)基于MYSQL建立数据库所需要的表,包括教师信息表、学生信息表、项目信息表等;教师信息表,包括姓名,教工号等,学生信息表包括学生学号、姓名、班级等,项目信息表包括如项目ID,文件位置等;
4)系统功能实现,允许学生进行注册、登陆、作业提交等功能,允许教师进行学生作业查询、作业下载、相似作业检索等功能,并保证仅教师可查询全量作业,学生仅可查询本人提交作业。
3.如权利要求1所述的方法,其特征在于,程序代码预处理步骤中,将第一步收集的程序代码进行标注后,构建程序代码数据集用于后续模型训练任务,具体过程如下:
1)从系统中下载学生提交的代码作业文本,将下载的K篇程序代码表示为Y={y1,y2,y3,…,yk},将程序代码两两对比进行人工标注,互为抄袭标为1,反之标为0,构建由多个形如(yi,yj,s)样例构成的代码查重数据集,并按6:2:2的比例划分为训练集、验证集、测试集,其中yi,yj∈Y,S∈{0,1};
2)对程序代码进行数据预处理:
a)统一代码中的缩进风格,将Python中的缩进方式修改为{};
b)移除程序代码中的连续空白(空白大于1行)、注释、import声明、包调用声明、访问权限修饰词、范围修饰词;
c)将所有数字常量替换为一个标记串,将常量字符串与常量文字替换为另一个标记串;
d)用统一的标记串替代每个变量名;分别用标记串替换定义的方法名和类名;
e)将所有“int”、“float”等数据类型转化成一个标记串;
f)用一种循环结构替代所有循环变种(统一用for循环);
g)用一种条件判断替代所有条件判断变种(统一用if语句);
3)计算预处理后的代码查重数据集的所有令牌的出现次数,即词频,并依据词频大小为每个令牌赋予标识符,生成针对本代码查重数据集的专属令牌词典。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011250169.4/1.html,转载请声明来源钻瓜专利网。





