宋茂海,孔 玉,张乐平,李东方
医疗设备及其水平的飞速发展与工程技术和计算机技术的进步是分不开的,医工信结合是未来医学发展的趋势。像3D打印器官模型、医疗CT三维重建、流行病学信息处理、临床和医院信息系统等,都对医学生的计算机水平提出了更高的要求。医学生不仅要掌握医学专业知识,还要掌握与医学相关的计算机知识才能适应未来的医疗工作。目前的计算机考试,如医学院校医学生课程考核、医院人员招录、医生职称评定考试等,普遍采用了无纸化考试方案。因此,自动阅卷方案近年来受到越来越多的关注[1-2]。目前的自动阅卷方案主要关注Office文档改卷方法[3-4],一般通过VBA操作Office文档对象实现;针对网页文档改卷方法的研究较少,一般利用文档对象模型(简称DOM)或正则表达式来实现[5]。还有的阅卷方案定位于辅助改卷[6],仍需教师手工评判。这些改卷方案普遍存在的问题有:(1)标准答案规则定义不明确。有些复杂规则判定时需依赖其他条件,难以实现代码和规则分开[7-9]。很多方案以硬编码方式把标准答案规则直接写在代码里,下次使用前要修改规则后重新编译。(2)评分点定位不精确。不能发现类似把图片插到相邻单元格的错误,评分没有手工阅卷精确。我校生物医学工程系医学生计算机考核和附属医院职称评审开展无纸化考试已有多年,其自动阅卷方案历经多次修改后基本定型,现将方案中的技术要点作一介绍。
无纸化考试[10-12]的一般交卷形式是把试卷压缩后上传到考试服务器。本阅卷方案将压缩文件解压,再打开目录中的网页文件进行评分。根据文件名解析出姓名及学号,汇总评分成绩后逐行显示。对于分值异常的试题,可以手工打开网页进行人工复核。最后导出成绩到Excel文件,再和其他考试模块的成绩进行合并处理。整个阅卷流程如图1所示。
图1 基于JQuery的自动阅卷方案流程图
DOM是W3C发布的HTML应用编程接口规范。DOM将整个网页映射为一个由层次节点组成的节点树,HTML文档中的每个元素、属性、文本都代表着树上的一个节点。通常情况下,使用get Element ById()、get Elements ByName()和 get Elements-By Tag Name()3种方法可定位HTML文档中的任何DOM节点。但是,对于没有标注id和name属性的网页,这种定位方式无法奏效。
为解决这个问题,本方案使用CsQuery控件来遍历和存取DOM节点。该控件采用熟知的JQuery语法格式,简化了HTML与.NET程序之间的操作。变量CQ包含了网页的DOM结构,使用时只需定义一个CQ变量,并把网页文件路径作为构造函数的参数传入,即可进行节点的存取操作。
例如:
CQ dom=CQ.Create(html路径);
varstrBold=dom["div> b:first-child"].Text();//取得DIV标签里第一个B标签内的文本内容
var cell=dom.Select("tr:first>td:eq(2)"); //定位表格中第一行第二列单元格内容
直接使用Document对象,很难定位没有id属性和嵌套很深的节点。而使用CsQuery库的Select函数,配合JQuery选择语法可精确地定位任意节点。表1是几个常用定位方法。
表1 Select函数语法说明
网页中的样式表一般位于head区域style标签中或外置CSS文件中。CsQuery目前只能解析标签内部style属性的样式,尚不能解析head区域内及外部文件的样式表。因此,本方案用自定义CssParser类完成head区域CSS解析的功能。样式表的语法比较严谨,使用正则表达式可方便地把样式表转换为列表对象。本方案中样式类的定义如下:
然后使用类似csp.Styles[cls].Attributes[name].Value方法即可获得cls选择符下的name样式值。
针对无纸化考试场次多、试卷类型多的情况,将评分规则以外部数据的形式存放,实现了阅卷方案的通用性,采用JQuery语法方便了代码与规则的分离。本方案用XML文档存放评分规则,每个XML子元素存放一条评分规则,该记录包含了分值、DOM节点或CSS样式、节点属性、属性值等规则信息。评分规则除了节点名称和分值以外,还包含了复杂的节点定位规则、节点间依赖条件等信息。下面针对几种常见情况进行介绍。
需给出要定位的标签名称、标签包含的正确文本内容。
如:设置网页标题为“异地高考”的评分规则为
<rule score="1.0"element="title">
<attrib name=""value="异地高考"id="htm"/>
</rule>
其中,score="1.0"表示该项分值为1分,element="title" 表示定位网页的<title>标签,value="异地高考"表示<title>标签的文本内容应为“异地高考”,id="htm"表示判定标签文本内容的规则。
需给出要定位的标签名称、标签的属性及属性值。
如:设置表格属性“边框线宽度、单元格填充设为0、单元格间距设置为10”的规则为
<rule score="2.0"element="table">
<attrib name="border"value="0"id="dom"/>
<attrib name="cellpadding"value="0"id="dom"/>
<attrib name="cellspacing"value="10"id="dom"/>
</rule>
若规则中有多个属性,则计算出单项平均分值,再逐项给分。该题中每项分值约为0.7。id="dom"表示判定标签属性的规则。
如果样式选择符已知,设置“css”的属性为样式选择符名称。如果样式选择符未知,则给出样式所在的标签。
如:设置网页背景图片为bg.jpg的评分规则为
<rule score="1.0"element=""css="body">
<attrib name="background-image"value="url(images/bg.jpg)"id="css"/>;
</rule>
设置水平线的颜色为#8D7FE1的评分规则为
<rule score="1.0"element="hr">
<attrib name="color"value="#8D7FE1"id="css"/>;
</rule>
本方案先根据标签判定样式名称,再定位具体的样式值。id="css"表示判定样式表的规则。
如果答案不唯一,设置“type”的属性为逻辑“或”,评分过程中只要有一项满足要求即得分。type="OR"表示针对逻辑“或”的规则。
如:设置单元格内文字居中对齐,可以设置文字的text-align样式,也可以设置表格的align属性。
<rule score="1.0"element="tr:first>td:eq(1)"type="OR">
<attrib name="align"value="center"id="dom"/>;
<attrib name="text-align"value="center"id="css"/>;
</rule>
根据HTML语言规范,本方案其他常见的规则还有唯一性规则、嵌套性规则等。如判定表单元素时,所有表单元素要放置在一个<form>标签内,网页中如果存在多个<form>标签则扣分。判定flash对象的文件路径时,要先定位<object>标签再定位属性为movie的<param>标签,判定原理同上。
在常见的自动阅卷方案中,除了前面介绍的文档对象法,还有文本分析法。其原理是在HTML文档中用正则表达式来搜索特定的字符串,该方法的缺点是只能判断有无,不能精确定位。比如考生未按要求把图片插入到规定的单元格中,文本分析法不能发现这种错误,仍然给分。表2为本阅卷方案与基于文本分析方法的正则表达式阅卷方案以及手工阅卷的比较结果[9,13]。
表2 手工阅卷法、正则表达式法、JQuery法阅卷结果比较
通过比较3种阅卷方案的速度和得分情况可知:(1)在检出数量方面,手工阅卷可以找出命名不规范和放置文件夹错误的网页文件,因此,全部检出,而自动阅卷不能找出这些不规范的文件。(2)在运行时间方面,手工阅卷每份试卷耗时大约90 s,这其中包括解开压缩文件和记录成绩的时间。阅卷时间需一两个工作日,易出现评分尺度前后把握不匀的情况,阅卷主观性强。正则表达式阅卷方案耗时最少,而JQuery阅卷方案耗时介于二者之间,这与DOM解析耗时较多有关。(3)在平均得分方面,手工阅卷得分居中,这并不意味着准确率高,通常包含了部分感情分。正则表达式阅卷方案由于规则设置较宽,判分不够严格,得分偏高。JQuery阅卷方案规则设置较严格,得分偏低。
从测试结果可以看出,自动阅卷用时可以忽略不计,但是有漏检的情况,需配合人工复核。从得分情况看,JQuery阅卷方案相对客观准确,但对规则设置严格性要求较高,需反复调试。
本文在对比几种自动阅卷方案的基础上,提出一种基于JQuery语法的自动阅卷方案,在规则制定和评分点定位方面具有较好的扩展性和准确性。根据阅卷方案中的技术要点和阅卷流程,已用C#语言开发了相应的阅卷程序,并应用到实际阅卷过程中,阅卷效率和准确度大幅提高。本方案的应用实施,可有效提高医学院校学生和医院医护人员的计算机应用能力,对培养现代医学复合型人才起到一定的作用。在应用中应注意规则制定的严谨性,以免影响最终评分的准确性。还可以对方案作进一步的改进,如添加对外部样式表文件解析功能、在DOM树上直观显示每个得分点的评分情况以及扩展其他评估模块范围等,这将在以后实践的基础上进一步完善。
[1] 见伟平,卢虹冰,周智明,等.基于Ajax ASPVC++的教育考试平台的设计与实现[J].医疗卫生装备,2011,32(3):55-57.
[2] 王毅.计算机基础统考自动阅卷系统的实现[J].电脑编程技巧与维护,2009(10):128-129.
[3] 邓秀兰,李广振.基于VBA技术的Word自动判卷系统的实现[J].计算机与现代化,2012(9):219-221.
[4] 李桂英.基于XML和VBA的《计算机应用基础》在线考试系统[J].现代计算机,2005(9):57-60.
[5] 赵晓峰,肖丹.基于XML与ActiveX技术的Office操作自动评分系统[J].计算机与数字工程,2006,34(12):178-180.
[6] 胡开明,陈建华.基于.NET的辅助改卷器设计[J].现代计算机,2009(2):195-197.
[7] 陈永红.巧用EXCEL自动判卷[J].微计算机世界,2012(9):98.
[8] 彭作民.Excel文档自动阅卷评分算法设计[J].南京师范大学学报:工程技术版,2007,7(3):70-73.
[9] 贲黎明.Excel操作题自动阅卷系统的设计与实现[J].常熟理工学院学报,2011,25(8):115-120.
[10] 杜少杰.Word操作题的一个自动阅卷方案[J].曲靖师范学院学报,2005,24(6):100-101.
[11] 王读祥.Word操作题自动判卷关键性技术实现[J].计算机与现代化,2011(10):153-155.
[12] 朱克武.Office办公软件改卷系统的研究[J].计算机与现代化,2011(4):145-152.
[13] 丁俊辉,龚沛曾.基于XML的HTML自动阅卷算法设计与实现[J].计算机技术与发展,2012,22(1):1-4.