论文部分内容阅读
随着信息技术的发展以及新工科、新文科等教育教学理念的提出,应用新技术支持教学过程的设计、互动分析与评价已经成为一个重要的方向。对于计算机学科的程序设计类课程而言,大量编程练习可以有效地培养学生编程思维、提升学生动手实践能力、促进课程目标的实现。但是依托传统的人工评阅方式很难保证评阅结果的时效性和评价标准的客观性、统一性。因此,利用计算机辅助评价技术实现无纸化作业评阅、反馈已成为计算机学科发展的必然趋势。本文的研究是在程序动态测评基础下,对程序编译错误信息进行收集整理,静态分析程序编译错误信息数据,最终应用动态测试和静态分析相结合的方式构建程序自动评分模型,实现编程题自动评阅技术。主要完成了以下三个方面的工作:1.程序编译错误信息特征提取。这一部分工作主要包括三个方面:(1)使用Word2Vec工具的Skip-gram模型训练程序编译错误信息文本数据集;(2)利用TF-IDF算法计算编译错误信息的词汇权重,将编译错误信息的Word2Vec向量乘以对应的TF-IDF权重得到加权的Word2Vec词向量;(3)将数据集中所有加权Word2Vec词向量输入到卷积神经网络模型,深度挖掘文本特征,最终得到能够表示文本关联性的特征向量。通过实验验证,该方法能深入挖掘程序编译错误信息之间关联性,更加准确地获得程序编译错误信息的特征向量。2.提出了一种改进的基于K-means算法的编译错误信息聚类分析模型。这一部分工作主要包括两个方面:(1)计算文本语义相似度。运用RWMD距离算法计算词汇之间的语义相似度,用以代替传统K-means算法中距离计算公式;(2)使用K-means算法进行编译错误信息聚类分析。利用肘部法则确定最优聚类簇,得到最优簇值为3。通过分析将这三类分别定义为语法错误、语义错误和逻辑错误。经过实验验证,改进的K-means算法在聚类结果上准确性更高。3.构建程序自动评分模型。这一部分工作主要包括三个方面:(1)动态测试。将源程序输入在线自动测评系统中,若源程序编译且测试用例通过,则直接得满分;(2)静态分析。源程序编译未通过则进入静态分析环节,如果是由于未严格按照输出格式要求而引起的解答错误,则按照总分的5%扣除输出错误分,否则将进入自动评分模型。(3)自动评分模型。首先依赖人工评分的大量数据进行训练,明确聚类结果中每个类别对应的权重值大小。最后将该权重乘以对应类别的基础分,计算程序最终得分。通过实验验证,应用该方法评阅程序更接近人工评分。