寿周翔+鲁文科
随着计算机的大量普及,高校的日常管理效率显著提高,但在教学管理上,效率改变还不是十分明显,特别是针对计算机专业学生的作业评分还是完全人工的方式,教师需要花大量的时间和精力在作业批改上,且评分主观性大,效率低。如何改变这一现状呢?能不能采用算法来提高评分的客观性,减少主观性呢?针对上述问题,笔者提出了借助教育云平台(ITbegin)的作业自动评分技术,以期帮助教师减少作业批改时间,降低评分主观性,提高工作效率。
ITbegin云教育平台作业自动评分
ITbegin是一个云教育平台,它已集成了编程知识库、在线编程、在线运行、实时互动等多项要素。同时,该平台已具备整合在线作业自动评分的两个条件:①能支撑各种语言编译。②能实现程序的运行并取得结果。因此,我们只要实现评分的正确性、客观性,便能完成作业的自动评分。所以,我们需要建立一个评分模型来验证评分的正确性、客观性。
评分模型
从正确性、客观性出发,代码运行正确、代码运行结果与答案结果匹配、代码与答案代码匹配、做作业时的敲键次数、做作业时的运行次数等五个指标会影响评分。
評分模型设计可分为严格型、标准型、宽松型三种,教师可以根据不同的评分模型进行评分。
严格型的评分模型必须代码运行正确,且代码运行结果与答案结果完全匹配(如表1)。
标准型的评分模型必须代码运行正确,降低代码与答案代码匹配的权重,提高代码与答案代码匹配的权重(如表2)。
宽松型的评分模型中,代码运行正确不是唯一标准,所以会提高敲键次数、运行次数的权重(如表3)。
作业自动评分的技术分析
评分模型各指标需要使用各种算法去匹配,这里主要介绍运行结果算法和代码相似度算法。
1.运行结果算法分析
由于程序运行的结果一般都以字符串的形式出现,所以可以将代码运行的结果字符串与答案运行的结果字符串进行相似度比较。运行结果算法常采用距离算法来比较作业的运行结果与答案的运行结果。
距离算法是指从原串转换到目标串所需要的最少插入、删除和替换的操作次数。它们的距离越大,说明它们越不同。
将字符串1转成字符串2的距离算法说明如表4所示。
距离算法过程:
(1)如果字符串1或字符串2长度为0,则返回另一个字符串的长度。
(2)初始化(字符串1长度+1)*(字符串2长度+2)的矩阵m,矩阵的下标从零开始。
(3)扫描整个矩阵,如果str1 [i]==str2[j],则temp=0,否则temp=1,然后矩阵m[i][j]=(上方值+1,左边值+1,左上方值+temp)三者的最小值。
(4)扫描完后,返回矩阵m的最后一个值是它们的距离。
(5)相似度的计算公式:相似度=1-(距离/两字符串的最大长度)。例如,abc和abcd的相似度为1-(1/4)=0.75。
2.代码相似度算法分析
由于代码中可能存在英文或中文的单词,所以笔者在代码相似度算法中,基于Lucene实现了中英文分词。Lucene提供了几个常用的分词器,如StandardAnalyzer(标准分析器,去除标点符号)、IKAnalyzer(一个独立的开源中文分词工具包,提供了语义级的分词,更加智能)等。
相似度计算可以用向量空间模型,向量可以解释为一组坐标,一个坐标表示空间中的一个点,而向量本身是从空间原点到该点的向量。两个向量的夹角越小,方向就越一致,相似度就越高,夹角的计算用余弦公式。
相似度算法过程:
(1)字符串分词(如上页表5)。
(2)合并分词集合并计算每个词的相似度(值为0~1之间,如上页表6)。
(3)计算各点的向量(如上页表7)。
(4)用余弦定理计算相似度。
相似度=sum/Math.sqrt (s1*s2)=0.73706。
作业自动评分的技术实现
作业自动评分技术采用Java语言编写及实现。
1.运行结果算法实现
核心代码如上页图1所示。
2.代码相似度算法实现
核心代码如图2所示。
作业自动评分技术的优点
(1)高效率。作业由原来的人工评分变为计算机自动评分,大大缩短了教师批改作业的时间,提高了他们的工作效率。
(2)客观性。作业自动评分以评分模型为标准,评分较客观,适用于所有学生。
(3)公平性。作业自动评分减少了人为的主观因素,提高了评分的公平性。
作者简介:寿周翔(1974—),男,浙江省诸暨市人,硕士研究生,讲师,主要研究方向为人工智能。
基金项目:浙江省教育技术研究规划课题(项目编号:JB049);浙江省高等教育教学改革项目(项目编号:jg2015244)。