随着计算机信息技术在教育教学中应用的深入,建立课程教学考试的试题库系统的需求多了起来。组卷是试题库系统的重要组成部分,而组卷策略(算法)是试题库系统的核心。许多文献[1]-][7]对计算机自动组卷策略及算法进行了有益的探讨,从最初的随机抽题到现今的智能组卷策略,诸如随机抽取法、回溯试探法和遗传算法等。笔者阅读这些文献时发现,许多算法存在一定的缺陷、并不太实用,而某些智能组卷算法如遗传算法有个收敛问题、存在无解的可能。事实上,组卷涉及两个问题:选取什么样的试题和如何选题。前者需要获取相关组卷约束、转换为所需的信息,而后者则是在这些信息的基础上实现抽取试题。本文结合课程考试的试题库系统的特点和笔者开发《数据结构》课程试题库系统的实践,从不同的角度探讨面向课程试题库系统新的组卷策略和算法。

1        试卷命题及分值分布

1.1 试卷命题的分值分布

课程考试(笔试)是课程教学效果检查的主要手段,人工试卷命题的过程,通常是由课程组(或教研室)根据教学大纲(或考试大纲)的要求、教学目标和学生的实际情况,划定命题范围(章)、试卷包含的题型及各类型试题所占的总分比例(或分值)、各章所占分值等;再由相关教师根据上述约定(即约束条件)进行试卷命题或选题,最后审定。这里的试题分类,主要指按答案将试题分为选择题、填充题、判断题和解答题,和按认知能力将试题分为概念、认知题、应用和综合应用。尽管不同课程对认知能力分类的结果不同,但均可分为类似的认知能力层次。

1

2

3

4

5

6

7

8

9

分值

4

8

12

8

12

16

18

10

12

表2  各章分值分布表

将上述试卷命题的分值分布以表格形式表示,可以得到相应的分值分布表,本文分别将这些分布称为题型分值分布表、各章分值分布表和认知能力分值分布表。如表1、表2和表的3示例所示。显然,这些分布表基本描述了试卷的总体框架,即试题的知识分布、题型结构和难易要求,是教师命题的依据。

表2  题型分值分布表

题型

选择题

填充题

判断题

解答题

分值

20

20

10

50

表3  认知能力分值分布表

认知能力

概念

认知

应用

综合应用

分值

20

20

40

20

1.2 多重分值分布的组卷模型

上述的分值分布从不同侧面对试卷提出约束要求,我们称为多重分值分布。这些分值分布对于试题库系统的组卷同样是有效和可行的,关键是如何转换为组卷时可操作的参数。分析题库中试题和标准化试卷的特点,不难发现,试卷通常将试卷的试题按表2组织成大题,且各大题的总分齐整,如“选择题”总分15分或20分、但不取19分或21分这样零碎的总分。其次,试卷中的选择题、填充题及判断题一般均分别取相等的分值,如每道选择题、判断题的分值为1分,填充题为2分;只有解答题的各题分值一般不相等。对于分值相等的试题,我们可以根据表2计算出这些试题的数目,再依据表1中各章的分值与总分的比率、以及表3中各认知能力分值与总分的比率,获得各章、各认知能力的相应试题数目;而解答题因其题分不等、仅据分布表还不能确知试题数目等信息。

但是,在标准化试卷中,选择题、填充题及判断题的答案简洁、所涉及的知识单元少,因此多为认知能力较低的试题;而综合应用、应用类试题的答案内容丰富、涉及知识单元较多,一般以解答题出现(有些概念题也可能是解答题)。因此,可以首先确定认知级最高的综合应用题(试题数目及其分值)。这样,问题便转化为如下更简单的数学问题:从取值不等的n(n>0)个正整数集合Q中,选取k(k>0)个正整数,且它们的和等于(或最接近)给定的正整数M(M>0)。理论上说,集合Q中不一定能选出k个正整数且其和恰好等于M。考虑组卷的需求,选取的试题还需满足知识单元分布合理、以及不与近期试卷的试题重复等约束,更难以完全满足约束,因此,应该允许对试题分值进行适度地调整(如对题分进行±1、±2分的调整);并且应满足:M≥Min{qi|qi∈Q},表2、表3中解答题的分值大于等于综合应用题的分值这些必要条件。

1.3 组卷策略

因此,组卷阶段选取试题时,可以对解答型试题和其他试题(这里指填充、选择和判断型试题)分别处理,即组卷选题时解答题优先、并按认知能力等级从高向低地选取,待解答题完成后,按选择题、填充题和判断题关于各单元、各认知能力的分值比例进行选题。

如何依据多重分值约束确定综合应用题的数目及其选取呢?思路是:首先获取题库中综合应用题的最高、最低参考分值得到分值区间,然后根据题分可调整的范围将该区间划分为若干子区间,将表3的综合应用题总分分派到这些子区间中,尔后据此在综合应用题的不同分值区间内选取试题。可以有许多算法实现这样的分解,以下为一个示例。

int score_assign(int mark[],int m,int max,int min)

{ max为表3给定的最大参考分值;min为表3给定的最小参考分值;

int k,step,mid;

k=1;

if(m<min) return 0;  //错误返回

step=m*0.1; //设调整范围为±5%,step将取分范围划分为若干区间

mid=(max+min)/2;

while (m>0)

{  //mark数组按降序顺序存储

if (m>=max+min) { mark[k]=max;   k++;   m=m-max; }

else max=max-step;

if (max<=min) { mark[k]=m;   m=0;}

else if (m<mid) { mark[k]=m;  m=0; }

}

mark[0]=max;

mark[k+1]=min;  //以最大、最小值构建选题区间--见过程expl_q_select()

return k;

}

假设解答型试题的参考分值的方差不大、且分布比较均匀,问题必定有解。综合应用题选取完成后,将表3的解答题剩余分值以类似的方式以认知能力等级从高到低选取解答题。

2        题库组织

试题库系统必然需要数据库来存储试题,题库的结构设计与组卷策略密切相关,为了利用上述的分值分布表进行自动组卷,题库的试题表结构如表4所示。为了配合组卷算法,题库更新输入新题时,其Last_ch_date应取题库中最早年份的日期。试题的知识单元属性Ch_Se采用教学大纲的划分(章、节)标识至二级单元,每个知识单元用4位10进制数字串表示,章和节从左向右各占2位;当试题涉及多个知识单元时,将其顺序首尾拼接。试题的认知能力属性K_cap直接用正整数(如1,2,……)表示。

表4 试题表主要结构

Id

questions

answer

Ch_Se

Q_type

Refe_val

K_cap

Last_ch_date

fig

主键

试题

答案

所属单元

题型

参考分值

认知能力

选取日期

插图

                   

此外,试题库系统应建立对应上述分值分布表的数据表(或成组关联或合并为一个数据表),以便保存组卷参数,并利用试卷分析的反馈记录相关信息,向用户提供建议或有关帮助。

3        多重分值分布的组卷算法

为便于叙述,设用数组Tab_c[]、Tab_t[]、Tab_k[]分别代表上述的各章分值分布表、题型分值分布表和认知能力分值分布表,Curr_Questions[]代表当前选取试题的试题集,Curr_t_s表示试卷总分的剩余分值。若试题Curr_Questions[i]涉及k个知识单元,r=∑(Tab_c[j]/ Curr_t_s)(j为k个知识单元编码的前2位即章号),r越大,表明试题涉及章(Tab_c[j])的分值越大、且涉及的知识单元越多;d=abs(Curr_Questions[i]. Refe_val-mark[i])代表了当前试题参考分值与分派分值之差的绝对值,d越小则其1/2d越大;d_date=Current_date- Curr_Questions[i]. Last _ch_date,代表当前日期与试题前次选取日期的年份差。那么

f= Curr_Questions[i]. Refe_val*r*d_date/2d

代表当前试题的优先数。该优先数也包含了其他隐含约束:试题参考分值是否最接近分派(理想)的分值、试题选取日期间隔是否最长。显然,f值越大的试题应优先选取。

综合应用题选取过程的算法描述如下(以本文示例的分值分布表为例):

expl_q_select(int mark[],struct Curr_Questions[],int n,int *Curr_t_s)

{

//解答题选取的共用过程,Curr_Questions[]为试题集,Curr_t_s 为总分,n为认知能力编号

从Curr_Questions[]获取参考分值的最大、最小值分别存入max,min;

m=score_assign(mark,Tab_k[4], max, min)

disp=0;  //disp记录mark[]分派分值与实际所选试题的题分差

h=1;

while (h<=m)  //对m个试题从高分向低分进行选题

{  if(mark[h-1]== mark[h+1]) //若区间上下界相等则调整上下界

if(disp>0) {low=mark[h+1]-disp;up=mark[h-1];}

else {up=mark[h-1]-disp;low=mark[h+1];}

对low≤Curr_Questions[i].Ref_val≤up的试题计算f值并按升序排序;

//用公式d=abs(Curr_Questions[i].Refe_val-mark[h]-disp)计算,disp用于分差调整

i= Curr_Questions[i]最末元素的下标;

while (i)

(

k=strlen(Curr_Questions[i].ch_Se)/4;  //计算试题的知识单元数目

if ( Score_check(Tab_c, Curr_Questions[i].Ref_val))

{       Tab_k[n]-= Curr_Questions[i]. Refe_val;

Tab_t[4]-= Curr_Questions[i]. Refe_val;

Disp+= Curr_Questions[i]. Refe_val-mark[h];

//disp记录试题分值与mark[h]分值之误差累计,以便后续选题时调整

*Curr_t_s-= Curr_Questions[i]. Refe_val   //更新总分

提取Curr_Questions[i].Ch_Se所有知识单元及章号j;计算Tab_c[j]-= Curr_Questions[i]. Refe_val/k;  //各知识单元减均分,注意非整除处理

试题Curr_Questions[i]放入试卷;

h++;

i=0;  //选题成功,退出循环继续选题

}

else  i--;

}

}

if (disp) 依据disp进行题分调整;//策略见后

Tab_k[n]=0;

}

其中:

1)Score_check(Tab_c, Curr_Questions[i])是检验函数,因为随着试题的选取和分布表中分值的减少,根据Curr_Questions[i].Ref_Ch_Se计算其知识单元数k,对k个知识单元所属的章j,检验Tab_c[j]是否满足:对于每个知识单元,从Tab_c[j]- Curr_Questions[i].Ref_val/k(j=1,2,…k,各章减掉拟选试题分值的均分),若Tab_c[j]≥0,则返回True;否则,返回False。

2)题分调整的策略是:若disp>0,那么从高分值的试题开始,逐题增加1分直到disp为0;若disp<0,那么从低分值的试题开始,逐题减少1分直到disp为0。由于在选题时已经根据累计分差disp调整了实际选取试题的分值,所以,选题结束时的disp必然很小。

这样,组卷算法大致如下:

1.当Tab_t[4]>0,从Tab_k[]最大下标元素开始,分别获取命题范围内相应认知能力的试题集,调用expl_select()过程选取解答题,直至Tab_t[4]为0;

2.计算Tab_c[]、Tab_k[]所有非0元素与当前(已减去选取试题的题分)总分Curr_t_s的比率,该比率与Tab_t[]中非0元素之积除以题分(取整处理)的结果,即为各章中需要选取的各题型、各认知能力的试题数目,从相应的试题集中按一定策略从高分到分低选取。

这里,解答题默认的选取是以认知能力从高向低顺序处理的,可能使得较低认知能力的解答题不被选取,但可采用附加选项、补充输入所需的信息来实现,例如改变处理顺序或划分部分的分值选取指定认知能力的解答题。即使试卷只包含解答题或选择题,,该组卷算法也能根据分值分布表正确组卷。

该组卷算法的开销,由两部分组成,即解答题和其他题型试题选取的开销;若选取的解答题为k题、且题库中的解答题数目为n,那么选取解答题时的开销小于k*n,因此,解答题选取的开销为O(n)。

4        结语

事实上,不同层次的教学单位、不同课程和不同的考查目标,组卷的策略和复杂性不同。与已有的组卷算法类似,本文所述基于多重分值分布的组卷约束及组卷算法,是从以往学校课程考试的试卷命题的总体规划归纳抽象而来,符合教师习惯和实际需求,组卷目标明确,灵活方便;而基于多重分值分布的组卷策略及算法,是通过分析课程考试标准化试卷中各类试题的特性,分解和简化了试题库组卷难度;虽然没有采用智能算法,但简捷而实用。同时,调整分值分布表中某些分布表的分值,将改变试卷的试题分布和难易度,这不仅使试题库的组卷更能适应课程教学的考试需要,也为试卷分析结果的反馈调整提供了有效的机制。

通过我们的实现和试验,上述组卷算法简单易行,是一个实用的试题库系统的组卷算法。

一个实用的试题库组卷策略和算法相关推荐

  1. 自动组卷系统C语言,模块化思想在试题库组卷系统中的应用--以C语言程序设计课程为例 (1).pdf...

    2014年6月 伊犁师范学院学报 (自然科学版) Jun.2014 第 8卷 第 2期 JournalofYiliNormalUniversity(NaturalScienceEdition) V0| ...

  2. 计算机总评成绩的函数,一种高效的计算机自动组卷策略的研究

    摘要:本文对传统试题属性指标进行了分析,提出了一种优化改进的指标体系,根据试卷的各项约束条件,确定了计算机自动组卷的目标函数和数学模型. 关键词:组卷策略;试卷模式;目标函数;组卷数学模型 1 绪论 ...

  3. 苏州大学文正学院JAVA试卷_苏州大学文正学院试题库建设管理办法(试行)

    苏大文正教[2017]31号 建立健全试题库建设是考试管理工作规范化.标准化.科学化的基本要求,是推进教考分离.提高教学质量的必要手段.为进一步推进我院试题库建设,规范命题流程,提高试卷质量,保障试题 ...

  4. 基于遗传算法的试题组卷

    基于遗传算法的试题组卷 IT企业每年都会在春季和秋季举行校园招聘,对于个性化定制的试卷需求量很大,如何组出又好又快的定制化试题对于IT企业非常重要.组卷技术主要针对知识点覆盖率,题型,难度系数,试题数 ...

  5. 计算机应用基础基础系统,计算机应用基础试题库系统分析

    摘要:"计算机应用基础"课程是现代大学教育中的公共必修课,文章分析了传统的考试存在的不足,然后对试题库的系统进行了分析与设计,以促进教学发展. 关键词:计算机应用基础:试题库:必修 ...

  6. 基于粒子群算法的组卷系统的研究与实现

    摘 要 组卷系统的主要任务是根据用户的需要用当前数据库中的试题组成一套符合用户需求的试卷.随着数据库与题量增大,传统采用随机选取和回朔试探法的组卷抽提算法因其抽题时间长,占用的空间复杂度太大,容易陷入 ...

  7. 万维考试系统python题库答案_万维试题库系统官方下载

    万维试题库管理系统是一款相当出色的考试软件,软件拥有很多功能如课程定义,题型支持.试题批量识别导入,雷同试题检测,随机组卷和手工组卷流程控制,透明压缩,双向缓冲处理,数据导入导出共享,相当实用. 基本 ...

  8. 小学自动组卷系统C语言,题库管理自动组卷系统设计-PB(源程序+论文+开题报告+答辩PPT)...

    题库管理自动组卷系统设计-PB(源程序+论文+开题报告+答辩PPT) 摘 要 本文首先分析了自动组卷系统在具体的教学活动过程中的实际需求,然后以C语言程序设计的教学为背景,设计与实现了一个实际通用的自 ...

  9. java实现自动组卷要用什么算法_基于Java的自动组卷系统的实现

    基于 的 自动组卷系统的实现李桂玲 四平职业 大学计葬机工程 系 引言 考试作为教学测评的最主要的手段 , 其规范性 . 科学性以及考试工作的组织 . 管理等 , 直接关系到教学测评的准确性和客观性 ...

最新文章

  1. 22个案例详解 Pandas 数据分析/预处理时的实用技巧,超简单
  2. 玩不转大数据就别勉强了,或许“小数据”才是真正的终南捷径
  3. dpkg安装软件流程_ubuntu安装搜狗输入法linux版
  4. java线程 对文件copy 可能删除了 报异常_java线程对文件copy可能删除了报异常
  5. Mac OS X 中快速访问系统根目录的四种方法
  6. Day13-日历模块
  7. eclipse如何安装java decompiler反编译插件
  8. (附源码)计算机毕业设计SSM基于图书管理系统
  9. zend新建php项目,如何使用Zend Studio创建PHP项目
  10. Stellar Phoenix Office Repair(Office修复工具)v6.2绿色版
  11. SQL Server 2012 SQLEXPRESS 无法通过IP连接访问问题的解决
  12. python计算手机销量年增长率_「净资产增长率」Python量化数据获取:总资产同比增长率与净资产同比增长率 - seo实验室...
  13. 看电影读小说,你就能懂经济学
  14. 「津津乐道播客」#301 这是一期价值3000元的当代社畜科学点餐指南
  15. 已解决SyntaxError:expected ‘:‘
  16. 【Python】笨方法学Python学习笔记2
  17. 数学和编程到底是什么关系?
  18. PLC的软件防干扰措施
  19. 孙子兵法——3(将,五德五危)
  20. [JS逆向] 趣X条登陆【username、password加密逆向】

热门文章

  1. 准!武汉大学和高德组队 拿下国际顶赛“车载环境下的手机定位”组别冠军
  2. Django项目出现: 禁止访问(403),CSRF验证失败,相应中断
  3. 电力电子转战数字IC——我的IC面试(2022.10.14更新)
  4. 网络原理考点之IP地址分配问题解题思路
  5. Acwing 第一章模板及详解(基础算法)
  6. Android OpenGL ES从入门到进阶(一)—— 五分钟开发一款美颜相机
  7. http和socket关系
  8. 算法篇-----指数平滑法
  9. python中的鸭子类型
  10. wav文件 服务器失败,修复:Windows 7 中的 Windows Media Player 出现问题或错误,在 .wav 文件结束之前停止播放...