发明内容
本发明的目的是提供一种基于群体知识诊断的智能组卷方法,在遗传算法的基础上,基于先验和最大熵进行模拟采样生成初始种群,减少了组卷的时间,提高了组卷的质量。。
为了实现上述目的,本发明技术方案如下:
一种基于群体知识诊断的智能组卷方法,所述智能组卷方法包括:
根据考试要求设定组卷对应的约束条件,所述约束条件包括试卷的总分、考试时间、试卷的难度、考察知识点、题目类型和参与考试的学生群体;
根据约束条件中考试时间、考察知识点和参与考试的学生群体,计算出题目总数,进行群体知识诊断确定试卷知识点;
根据群体知识诊断确定的试卷知识点,从题库中抽取与试卷知识点关联的题目形成备选题库;
根据约束条件中试卷的难度、题目类型和计算得到的题目总数生成需求矩阵,并根据备选题库生成供给矩阵,将供给矩阵减需求矩阵得到差值矩阵;
根据差值矩阵对需求矩阵进行修正,使得供给矩阵能够满足需求矩阵;
根据约束条件中的试卷总分数,给每类题目类型赋予分值,并修正需求矩阵;
根据生成的最终需求矩阵,从备选题库中抽取试题生成初始种群;
采用生成的初始种群,基于遗传算法完成组卷。
进一步地,所述根据约束条件中考试时间、考察知识点和参与考试的学生群体,计算出题目总数,进行群体知识诊断确定试卷知识点,包括:
根据约束条件中考试时间,以及设置的参与考试的学生群体平均解题时间,计算出本次试卷对应的题目总数;
比较本次试卷对应的题目总数与约束条件中考察知识点,如果本次试卷对应的题目总数大于等于约束条件中考察知识点,则确定试卷知识点等于约束条件中考察知识点;否则计算参与考试的学生群体对考察知识点的平均掌握程度,根据参与考试的学生群体对考察知识点的平均掌握程度确定试卷知识点。
进一步地,所述计算参与考试的学生群体对考察知识点的平均掌握程度,根据参与考试的学生群体对考察知识点的平均掌握程度确定试卷知识点,包括:
设置出卷的试卷知识点数等于题目总数q;
计算学生对知识点掌握的概率P(θ)=1/(1+e^(-θ)),其中,θ表示学生的能力参数,e为常数;
计算学生对知识点的记忆程度R=e^(-t/s),其中,t为以天为基本单位的时间间隔,s为记忆强度,e为常数;
计算学生对知识点的平均掌握程度,学生对知识点的平均掌握程度KMDavg=∑KMDi/N,i为参与考试的学生,N为参与考试的学生总数;
将考察知识点的平均掌握程度由小到大排序,如果第q个的知识点的KMDavg<设定的阈值,则取前q个知识点作为试卷知识点;
或按知识点KMDavg由小到大排序,如果第q个的知识点的KMDavg>=设定的阈值,则取KMDavg小于设定的阈值的知识点;然后取没有KMD评估的知识点,最后取KMD平均值>=设定的阈值的知识点,直到选够q个知识点作为试卷知识点。
进一步地,所述根据约束条件中试卷的难度、题目类型和计算得到的题目总数生成需求矩阵,包括:
根据试卷的难度和题目总数,进行难度采样,生成每个题目对应的难度;
根据约束条件中的题目类型,按照各题目类型的题目数占比进行采样,生成需求矩阵。
进一步地,所述根据差值矩阵对需求矩阵进行修正,包括:
对于差值矩阵中值为负值的题目数量,调整对应题目类型下的题目数量,增加需求矩阵中下一题目类型的题目数量或上一题目类型的题目数量,使得差值矩阵中没有负值。
进一步地,所述根据约束条件中的试卷总分数,给每类题目类型赋予分值,并修正需求矩阵,包括:
按题目类型对应的题目数量由小到大的顺序,根据如下公式计算分值:
题目类型对应的总分=试卷的总分*(题目类型对应的题目数/未计算的分值的题目总数);
该题目类型下每个题目对应的分数=题目类型对应的总分/题目类型对应的题目数量;
将剩余分数计入到剩余的总分,计算下一个题目类型对应的总分和每个题目对应的分数,并调整最后一个题目类型的题目数量,计算出每个题目类型下每个题目对应的分数。
进一步地,所述根据生成的最终需求矩阵,从备选题库中抽取试题生成初始种群,包括:
采用随机等概率方法从备选题库中抽取试题生成初始种群。
进一步地,所述采用生成的初始种群,基于遗传算法完成组卷,包括:
首先计算初始种群中每个个体的总偏差,选择总偏差最小的个体为最优个体;
依次进行遗传算法的交换操作、变异操作和选择操作;
计算当前种群中每个个体的总偏差,循环迭代直到达到迭代终止条件,选择出最优个体作为最终的考试试卷。
本发明提出了一种基于群体知识诊断的智能组卷方法,通过设定的约束条件来确定试卷知识点,生成需求矩阵和供给矩阵,并根据他们的差值矩阵调整需求矩阵,最后还通过试卷总分来修正需求举证,根据最终的需求矩阵来生成初始种群,在经过遗传算法来智能组卷。本发明的智能组卷方法,基于生成的初始种群,减少了组卷的时间,提高了组卷的质量。
具体实施方式
下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成对本发明的限定。
如图1所示,本实施例一种基于群体知识诊断的智能组卷方法,包括:
步骤S1、根据考试要求设定组卷对应的约束条件,所述约束条件包括试卷的总分、考试时间、试卷的难度、考察知识点、题目类型和参与考试的学生群体。
根据考试要求设定组卷对应的约束条件是后续组卷的基础,在组卷之前,由出卷人组成相关的小组,确定约束条件。本实施例通过举例的方式列举了常用的以下约束条件:
1)、试卷的总分:例如总分为100分、120分、150分三个值,此约束条件的重要度为高,实际试卷必须满足此条件。
2)、考试时间:例如设定考试时间为15分钟至180分钟的区间,值为整数,此约束条件的重要度为中,实际试卷在一定误差范围内满足此条件。
3)、试卷的难度:例如设定试卷的难度为简单、普通、困难三个等级,此约束条件的重要度为中,实际试卷在一定误差范围内满足此条件。
试卷的难度根据题目的平均难度计算得来,不同学习阶段的难度等级所对应的题目平均难度不同,根据教研人员的分析,难度等级与题目平均难度的对应关系举例如下:
表1
4)、考察知识点:考察范围教材的课程所关联的知识点即考察知识点,也即本次考试要考察的知识点,此约束条件的重要度为中,实际试卷在一定误差范围内满足此条件。
5)、题目类型:设置题目类型及每个题目类型的题目数占比,此约束条件的重要度为低,实际试卷在一定误差范围内满足此条件。
6)、参与考试的学生群体:设置参与考试的学生群体,例如是小学几年级或中学几年级等。
需要说明的是,本实施例并没有穷举所有约束条件,在实际的应用中,根据考试要求,可以适当增加或减少约束条件。
步骤S2、根据约束条件中考试时间、考察知识点和参与考试的学生群体,计算出题目总数,进行群体知识诊断确定试卷知识点。
出卷人设置的考察知识点可能过多,这些知识点映射的题目会超过一次考试所能容纳的题目量,即一次考试无法覆盖出卷人设置的全部知识点,所以要对考察的知识点进行取舍。
本实施例进行群体知识诊断确定试卷知识点,就是对考察的知识点进行取舍,具体包括如下步骤:
F1、根据约束条件中考试时间,以及设置的参与考试的学生群体平均解题时间,计算出本次试卷对应的题目总数。
根据对参与考试的学生群体做题情况的历史分析,可以配置参与考试的学生群体平均解题时间,例如将平均解题时间设置为150秒,根据约束条件中考试时间,可以本次试卷对应的题目总数,即:
题目总数=考试时间/平均解题时间。
例如,考试事件为150分钟,平均解题时间为150秒,则题目总数为60题。
容易理解的是,题目总数的确定还可以根据不同题目类型对应的解题时间,根据约束条件中的题目类型及每个题目类型的题目数占比,结合每个题目类型的平均解题时间,来详细规划出题目总数。也可以在约束条件中直接放入题目总数。
F2、比较本次试卷对应的题目总数与约束条件中考察知识点,如果本次试卷对应的题目总数大于等于约束条件中考察知识点,则确定试卷知识点等于约束条件中考察知识点;否则计算参与考试的学生群体对考察知识点的平均掌握程度,根据参与考试的学生群体对考察知识点的平均掌握程度确定试卷知识点。
例如,如果本次试卷对应的题目总数大于等于约束条件中考察知识点,即每个知识点至少可以出一道题目,则本次考试出卷的试卷知识点等于约束条件中考察知识点。
如果考试的题目总数小于约束条件中考察知识点,即可能存在某一个或多个知识点没有题目可出,则本次考试出卷的试卷知识点根据参与考试的学生群体的对考察知识点的平均掌握程度来选取。具体如下:
设置出卷的试卷知识点数等于题目总数q。
计算学生对知识点掌握的概率P(θ)=1/(1+e^(-θ)),其中,θ表示学生的能力参数,根据学生历史答题数据设定,e=2.71828;
计算学生对知识点的记忆程度R=e^(-t/s),其中,t为以天为基本单位的时间间隔,s为记忆强度,e=2.71828;s的计算方法为,每个知识点初始s=1,且s最小为1,练习答案正确,则该题的直接和间接知识点的s=s+1,练习答案错误,直接知识点s=s-1,间接知识点s=s-(1-0.2n),n为该间接知识点与直接知识点之间的相隔层级,n>5时把n视为5;t的计算方法为,当一道题做正确时,该题的直接知识点和间接知识点的记忆时间=该题练习的日期,t=当前日期-记忆时间;
学生对知识点的掌握程度KMD=P(θ)*R。
学生对知识点的平均掌握程度的计算方法为,知识点的平均掌握程度KMDavg=∑KMDi/N,i为参与考试的学生,N为参与考试的学生总数。
然后将考察知识点的平均掌握程度由小到大排序,如果第q个的知识点的KMDavg<75%,则取前q个知识点作为试卷知识点进行出题;
或按知识点KMDavg由小到大排序,如果第q个的知识点的KMDavg>=75%,则取KMDavg小于75%的知识点;然后取没有KMD评估的知识点,最后取KMD平均值>=75%的知识点,直到选够q个知识点作为试卷知识点。
需要说明的是,75%为设定的阈值,可以调整。此外,试卷知识点的确认,还可以根据学生对知识点掌握的概率或学生对知识点的记忆程度,通过设定的阈值,直接选取满足设定的阈值的知识点作为试卷知识点。
步骤S3、根据群体知识诊断确定的试卷知识点,从题库中抽取与试卷知识点关联的题目形成备选题库。
在确定试卷知识点后,则可以从题库中抽取与试卷知识点关联的题目形成备选题库
步骤S4、根据约束条件中试卷的难度、题目类型和计算得到的题目总数生成需求矩阵,并根据备选题库生成供给矩阵,将供给矩阵减需求矩阵得到差值矩阵。
需求矩阵描述的是在约束条件下,组卷出题的题目类型和难度分布,供给矩阵描述的是组卷范围内,可供出题的真实题目比例和难度的分布,差值矩阵是计算需求与供给矩阵的差值,描述的是供给在所需要维度上是否满足需求。
本实施例根据约束条件中试卷的难度和题目类型生成需求矩阵,包括:
根据试卷的难度和题目总数,进行难度采样,生成每个题目对应的难度。
例如:试卷的平均难度要求为0.5,方差为0.1,出30题的题目难度分布如下:0.5、0.5、0.5、0.5、0.4、0.4、0.5、0.7、0.6、0.6、0.5、0.4、0.6、0.5、0.4、0.5、0.6、0.5、0.7、0.7、0.4、0.4、0.6、0.4、0.6、0.5、0.4、0.5、0.6、0.4(0.5难度11个,0.4难度9个,0.6难度7个,0.7难度3个)。
根据约束条件中的题目类型,按照各题目类型的题目数占比进行采样,生成需求矩阵。
即30道难度题目分别属于不同类型,即生成难度和题型的需求矩阵,行为题目类型,列为题目难度。
例如:
|
0.1 |
0.2 |
0.3 |
0.4 |
0.5 |
0.6 |
0.7 |
0.8 |
0.9 |
1.0 |
总数 |
选择题 |
0 |
0 |
0 |
4 |
9 |
4 |
1 |
0 |
0 |
0 |
18 |
填空题 |
0 |
0 |
0 |
3 |
0 |
1 |
2 |
0 |
0 |
0 |
6 |
判断题 |
0 |
0 |
0 |
2 |
2 |
2 |
0 |
0 |
0 |
0 |
6 |
总数 |
0 |
0 |
0 |
9 |
11 |
7 |
3 |
0 |
0 |
0 |
30 |
表2
而供给矩阵是根据备选题库的真实数据分布情况生成,例如:
|
0.1 |
0.2 |
0.3 |
0.4 |
0.5 |
0.6 |
0.7 |
0.8 |
0.9 |
1.0 |
总数 |
选择题 |
0 |
6 |
18 |
27 |
8 |
12 |
6 |
5 |
2 |
0 |
84 |
填空题 |
0 |
0 |
0 |
2 |
5 |
20 |
2 |
2 |
0 |
0 |
31 |
判断题 |
0 |
6 |
8 |
5 |
12 |
11 |
9 |
1 |
0 |
0 |
42 |
总数 |
0 |
12 |
26 |
34 |
25 |
43 |
17 |
8 |
2 |
0 |
157 |
表3
根据生成的需求矩阵和供给矩阵,计算供给矩阵减需求矩阵,得到差值矩阵:
例如:
|
0.1 |
0.2 |
0.3 |
0.4 |
0.5 |
0.6 |
0.7 |
0.8 |
0.9 |
1.0 |
总数 |
选择题 |
0 |
6 |
18 |
24 |
-1 |
8 |
5 |
5 |
2 |
0 |
84 |
填空题 |
0 |
0 |
0 |
-1 |
5 |
19 |
0 |
2 |
0 |
0 |
31 |
判断题 |
0 |
6 |
8 |
3 |
10 |
9 |
9 |
1 |
0 |
0 |
42 |
总数 |
0 |
12 |
24 |
27 |
10 |
38 |
17 |
8 |
2 |
0 |
157 |
表4
步骤S5、根据差值矩阵对需求矩阵进行修正,使得供给矩阵能够满足需求矩阵。
差值矩阵是计算需求与供给矩阵的差值,描述的是供给在所需要维度上是否满足需求,差值矩阵中值为正值,则满足需求,差值矩阵中值为负值,则不满足需求。
对于差值矩阵中值为负值的题目数量,则进行需求修正,即优先满足题目难度的约束条件,调整对应题目类型下的题目数量,可以增加需求矩阵中下一题目类型的题目数量或上一题目类型的题目数量,即增加其他题目类型的数量,使得差值矩阵中没有负值。
例如0.5难度在选择题时为-1,则说明供给不能满足需求,则需要在0.5难度中减少当前需求,并将该需求增加到该难度值中的其他题目类型中去,例如增加到填空题中;而0.4难度在填空题时为-1,则说明供给不能满足需求,则需要在0.4难度中减少当前需求,并将该需求增加到该难度值中的其他题目类型中去,例如选择题(或判断题)中。
例如,则需求矩阵修正后如下:
|
0.1 |
0.2 |
0.3 |
0.4 |
0.5 |
0.6 |
0.7 |
0.8 |
0.9 |
1.0 |
总数 |
选择题 |
0 |
0 |
0 |
5 |
8 |
4 |
1 |
0 |
0 |
0 |
18 |
填空题 |
0 |
0 |
0 |
2 |
1 |
1 |
2 |
0 |
0 |
0 |
6 |
判断题 |
0 |
0 |
0 |
2 |
2 |
2 |
0 |
0 |
0 |
0 |
6 |
总数 |
0 |
0 |
0 |
9 |
11 |
7 |
3 |
0 |
0 |
0 |
30 |
表5
步骤S6、根据约束条件中的试卷总分数,给每类题目类型赋予分值,并修正需求矩阵。
根据约束条件中的试卷总分数,修正需求矩阵并给每类题型赋予分值。分值约束是总分值约束,且各类型分值必须相同且不能为负值。基于这个约束求解各题目类型下题目分值,采用贪心算法递归求解,因为实际题目数在总分值情况有可能不能整除,所以在修正需求矩阵题数时,有可能会减少题目。
具体地:
按题目类型对应的题目数量由小到大的顺序,根据如下公式计算分值:
题目类型对应的总分=试卷的总分*(题目类型对应的题目数/未计算的分值的题目总数);
该题目类型下每个题目对应的分数=题目类型对应的总分/题目类型对应的题目数量;
将剩余分数计入到剩余的总分,计算下一个题目类型对应的总分和每个题目对应的分数,并调整最后一个题目类型的题目数量,计算出每个题目类型下每个题目对应的分数。
例如:
已知试卷的总分allScore=100分,各类型题目数:typeArr[18,6,6],即不同题目类型对应的题目数量分别为18个、6个和6个。
按题目类型对应的题目数量由小到大的顺序计算分值,如最小的类型题目数为6,题目类型为判断题,向上取整则该类型的题目总分值占比为:判断题总分=试卷的总分*(判断题题目数/未计算的分值的题目总数)=100*(6/30)=20。
因为20除以6等于3余2,分值不能是小数,所以判断题每题分值是3分,剩余2分,补充到下一次的计算中。
即在判断题之后,还剩余有82分,对应填空题6题和选择题18题。
继续按上一步说明,迭代计算填空题,填空题总分=剩余的总分*(填空题目数/未计算的分值的题目总数))=82*(6/24)=20.5分,向上取整为21分。
然后21除以6等于3余3,则每题分值为3,剩下分值为64分。
最后只有选择题18题,剩下分值64分,因为64除以18不能除尽,所以需要减少题目,直到除尽,同时在需求矩阵随机减少选择题的需求。
最终选择题为16题,每题分值为64除以16为4,即每题4分。因为需求矩阵选择题类型需要随机减少2题,所以需要求矩阵修正后如下:
|
0.1 |
0.2 |
0.3 |
0.4 |
0.5 |
0.6 |
0.7 |
0.8 |
0.9 |
1.0 |
总数 |
选择题 |
0 |
0 |
0 |
5 |
7 |
3 |
1 |
0 |
0 |
0 |
16 |
填空题 |
0 |
0 |
0 |
2 |
1 |
1 |
2 |
0 |
0 |
0 |
6 |
判断题 |
0 |
0 |
0 |
2 |
2 |
2 |
0 |
0 |
0 |
0 |
6 |
总数 |
0 |
0 |
0 |
9 |
10 |
6 |
3 |
0 |
0 |
0 |
28 |
表6
需要说明的是,根据约束条件中的试卷总分数,给每类题目类型赋予分值还可以根据试卷分数除以题目总数来获取,并调整题目数量最大的题目类型对应的题目数量,使得个题目的分数为整数,来得到每个题目的分值,这里不在赘述。
步骤S7、根据生成的最终需求矩阵,从备选题库中抽取试题生成初始种群。
在满足所有约束情况下,随机等概率抽取试题,并符合最大熵的原理。最大熵原理是一种选择随机变量统计特性最符合客观情况的准则,也称为最大信息原理。随机量的概率分布是很难测定的,一般只能测得其各种均值(如数学期望、方差等)或已知某些限定条件下的值(如峰值、取值个数等),符合测得这些值的分布可有多种、以至无穷多种。通常,其中有一种分布的熵最大。选用这种具有最大熵的分布作为该随机变量的分布,是一种有效的处理方法和准则。这种方法虽有一定的主观性,但可以认为是最符合客观情况的一种选择。在投资时常常讲不要把所有的鸡蛋放在一个篮子里,这样可以降低风险。在信息处理中,这个原理同样适用。在数学上,这个原理称为最大熵原理。
比如选择题难度0.4,实际供给为24题,从24题抽取5题,按均匀抽取即随机等概率抽取,则每题抽取的概率为1/24,即不确定性是最大的,熵是衡量不确定性的,不确定性越大,则熵越大,所以本实施例抽取每份试卷隐含着每组试卷的熵最大。当然熵最大,并不代表试卷的质量最高,但熵越大说明了试卷内容的不确定性越大,有足够的信息量,对于组卷考试是有益的。
容易理解的是,从备选题库中抽取试题生成初始种群,采用随机等概率的方法满足最大熵原理。但本发明并不限于这种抽取方法,也可以按照设定的概率进行抽取,这里不在赘述。
步骤S8、采用生成的初始种群,基于遗传算法完成组卷。
具体地,例如基于最终需求矩阵生成初始种群,包括200个个体(每个个体即一份试卷)进行基于遗传算法进行迭代、交换和变异,完成组卷。需要说明的是,提高种群数量,可以提高点的密度,密度越大,对求解越有利,但计算量也越大,所以种群数的选取在于保证适当的密度。而平均教材2000道题,所以种群规模不能太小,200个种群是基于试验得到组卷质量和性能相对最优的结果。
本实施例基于遗传算法进行迭代、交换和变异,完成组卷的过程如下:
g1、首先计算初始种群中每个个体的总偏差,选择总偏差最小的个体为最优个体。
本实施例采用总偏差来评价个体(每个初始种群就是一个个体)的质量。每个个体的总偏差计算方法如下:
试卷总分偏差e1=试卷实际分数-试卷目标分数,e1必须等于0;
试卷考试时间偏差e2=试卷实际考试时间-试卷目标考试时间;
试卷难度平均值偏差e3=试卷实际考试难度-试卷目标考试难度(对于没有难度设置的科目,试卷难度平均值偏差e2=0);
试卷难度标准差偏差e4=试卷实际考试难度的标准差-试卷目标考试难度的标准差(对于没有难度设置的科目,试卷难度标准差偏差e3=0);
试卷考试范围覆盖率偏差e5=试卷实际知识点的覆盖率-1,试卷实际知识点的覆盖率=试卷实际覆盖知识点数/知识点总数;试卷考试范围覆盖分布偏差e6=∑(试卷实际各知识点覆盖题目数-试卷实际题目数/知识点总数);
计算总偏差e总=w2*e2+w3*e3+w4*e4+w5*e5+w6*e6+w7*e7+w8*e7。
其中,每项偏差取绝对值,wi为各偏差的权重,根据具体情况配置。
在计算出初始种群每个个体的总偏差后,选择总偏差最小的个体为最优个体,进入下一步操作。
g2、交换操作。
如果最优个体的总偏差达到期望值或迭代次数达到200次,则结束迭代,返回最小误差试卷。否则,进行交换操作。
交换是把种群中两个体的部分结构加以替换重组而构成新个体的操作。从当前群体中选择两条染色体,按概率P依次对两条染色体的第i段进行杂交。设第i段段长为N,则产生一个1到N-1之间的随机数。根据该随机数,将第i段分为左右两半段。将两条染色体第i段的左、右半段互换并重新连接得到两个新段。
g3、变异操作。
从当前群体中选择一条染色体,按概率P对这条染色体的随机i节进行变异。若为0,则变为1,若为1,则变为0。
g4、选择操作。
选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择更新策略:根据子代个体的总偏差来确定分段变异后的子代个体能否加入种群,若加入种群则淘汰总偏差最大的个体。
再循环计算总偏差,即计算当前种群中每个个体的总偏差,循环迭代直到达到迭代终止条件,选择出最优个体作为最终的考试试卷。循环进行交换、变异和选择操作,直到达到最大迭代次数或达到总偏差的期望。将迭代结束后得到的最优个体作为最终的考试试卷,完成组卷。需要说明的是,遗传算法进行的交换、变异、选择等操作在现有技术的应用中已经得到广泛的应用,这里不在赘述。
综上所述,本实施例的方法可以根据出卷人的出卷需求从题库中抽取题目,本方法无需出卷人指定出卷范围的每个知识点的重要程度,而是根据应试群体对知识点的掌握情况进行诊断来选择出卷的知识点,使得考试出卷更加简便,且更有针对性;本方法及系统优化了遗传算法,使得出卷的效率更高,成功率更高。
采用本实施例的方法,与传统遗传算法的实际效果对比如下表:
优化种群后时间/s |
3 |
优化种群后相对误差 |
0.21 |
遗传算法时间/s |
22 |
遗传算法误差 |
0.243 |
表7
可见,在相对误差相差不大的基础上,在时间上有较大的明显优势。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。