论文部分内容阅读
在线测评系统的普及和推广,一方面给高校带来了教学和评估的便利,另一方面却也逐渐暴露出一些弊端,譬如它不能很好地给学生提供一些相似类型的题进行巩固,也不能依靠系统评判出学生偏于薄弱的知识点,并且代码抄袭在学业评估过程中也频繁发生。本文针对上述问题,提出了基于抽象语法树的编程题分类方法和基于XGBoost增量学习的代码抄袭检测方法。
(1)对于基于抽象语法树的编程题分类方法,本文的研究内容有:首先,提取源代码的抽象语法树特征,通过GCC来构建AST,引入并改进AST结点信息的冗余消除和标准化算法,消除AST初始状态下存在的环;然后,优化传统的树编辑距离算法,使用树结构相似度算法对AST展开语义分析,求出AST树结构相似度;紧接着,提出并使用了题目集合的相似度矩阵来表示出两两编程题的AST树结构相似度,并基于K-Means算法对编程题相似度向量进行聚类,以实现对编程题的精准分类;最后,完成相应的数据分析和实验,寻找解决上述问题的解决方案。
(2)对于基于XGBoost增量学习的代码抄袭检测方法,本文的研究内容有:首先,本文描述了教学评测系统下的代码提交记录的相关特征定义以及具体的算法实现,如代码相似度、代码风格相似度以及抄袭集中度等,针对这些相关特征,本文采用了高效的算法去实现和优化。之后,本文采用信息增益过滤掉一些相关性较弱的特征,并且采用Accuracy、Macro F1Score、AUC和ROC curve等性能度量指标对模型进行评估和选择。最后,本文采用XGBoost增量学习算法去优化系统实现,经过运行测试集数据,并验证测试结果,得出该模型准确率高达98.0%。
(3)本文开发和实现了基于抽象语法树的编程题分类和基于XGBoost增量学习的代码抄袭检测的系统。结合OJ系统内的数据,本文对这两个功能分别进行了测试。测试结果表明该系统可为学生推荐相似题型以进行巩固学习,还能评判出学生的薄弱知识点,同时也能为教师检测出学生的抄袭代码。
本文立足于机器学习理论算法,旨在全方位地展现OJ系统辅助教学的特点,并为基于在线测评如何提升学习成效的相关研究提供一定的参考和借鉴。
(1)对于基于抽象语法树的编程题分类方法,本文的研究内容有:首先,提取源代码的抽象语法树特征,通过GCC来构建AST,引入并改进AST结点信息的冗余消除和标准化算法,消除AST初始状态下存在的环;然后,优化传统的树编辑距离算法,使用树结构相似度算法对AST展开语义分析,求出AST树结构相似度;紧接着,提出并使用了题目集合的相似度矩阵来表示出两两编程题的AST树结构相似度,并基于K-Means算法对编程题相似度向量进行聚类,以实现对编程题的精准分类;最后,完成相应的数据分析和实验,寻找解决上述问题的解决方案。
(2)对于基于XGBoost增量学习的代码抄袭检测方法,本文的研究内容有:首先,本文描述了教学评测系统下的代码提交记录的相关特征定义以及具体的算法实现,如代码相似度、代码风格相似度以及抄袭集中度等,针对这些相关特征,本文采用了高效的算法去实现和优化。之后,本文采用信息增益过滤掉一些相关性较弱的特征,并且采用Accuracy、Macro F1Score、AUC和ROC curve等性能度量指标对模型进行评估和选择。最后,本文采用XGBoost增量学习算法去优化系统实现,经过运行测试集数据,并验证测试结果,得出该模型准确率高达98.0%。
(3)本文开发和实现了基于抽象语法树的编程题分类和基于XGBoost增量学习的代码抄袭检测的系统。结合OJ系统内的数据,本文对这两个功能分别进行了测试。测试结果表明该系统可为学生推荐相似题型以进行巩固学习,还能评判出学生的薄弱知识点,同时也能为教师检测出学生的抄袭代码。
本文立足于机器学习理论算法,旨在全方位地展现OJ系统辅助教学的特点,并为基于在线测评如何提升学习成效的相关研究提供一定的参考和借鉴。