基于.NET的自适应考试系统组件开发

时间:2022-09-06 08:57:04

基于.NET的自适应考试系统组件开发

摘要: 本文主要说明了在.NET架构下的自定义组件开发技术应用于IRT自适应考试系统的方法,以能力估值自定义组件开发过程的介绍,阐述了.NET自定义组件开发的基本过程和方法,最后对能力估值组件应用推广进行展望。

关键词: IRT 组件 在线考试

1.引言

计算机在线考试系统作为一种对知识水平和操作能力的测评手段,已经广泛应用于教育科研及社会生活中。相比于传统纸质测试,在线考试系统不仅有成本低、有效性高的优点,而且更重要的是,在线考试系统除了可以对被测者的知识水平进行测试,还可以对被测者的操作能力进行测评。目前的在线考试系统中采用的测试理论依据以经典测验理论居多,经典测验理论具有数学模型简单,易于理解和使用等优点,但是它的不足之处在于其测验难度确定依赖于整体被测样本水平,对评价被测个体的水平和能力的指导作用不强。为了克服经典测验理论的不足,我们引入心理学测试中的项目反应理论(IRT)作为在线考试系统新的理论依据。IRT理论的最大优点是,在IRT中被试能力与测验的难度放在同一量规上进行估计,无论测验的难易,被试能力估计值不变,不同的测验结果可直接比较,这样被测个体能力值与被测样本能力值无关,只与测试项目相关,能更准确地显示被测个体的能力水平。IRT理论推广的最大瓶颈就是它的数学模型复杂,计算量大,不易理解。

本文采用C#语言,开发设计了基于.NET构架的IRT信息技术自适应在线考试系统。本系统以信息技术课程为测试题库来源,以项目反应理论(IRT)为测验理论依据,通过B/S结构的WEB模式对被试的信息技术知识水平和操作能力进行在线测试。为了克服IRT理论的计算量大,易产生网络数据拥塞的问题,我们利用C#语言提供的面向对象的自定义组件开发技术,此技术有利于提高数据运算的分布性,充分发挥服务器均衡负载能力。本文主要介绍.NET架构下的组件开发技术、本系统组件的开发过程及本系统的应用前景。

2. IRT考试理论

IRT的“核心”是建立一类统计模型,即具有某种特质的不同能力水平的考生在一个项目上如何反应的数学模型。目前比较常用的是Logistic回归模型,这个模型分为单参、双参和三参,随着参数的增多,其准确度增大,同时运算量和复杂难也增加。下面是Logistic三参模型的数学公式:P(x)=c+(1-c)÷(1+e )。

图1三参模型的特征曲线

其中,D=1.702代表测度因子,a表示项目的区分度,b表示项目的难度,c表示项目的猜测度。P(X)表示能力为X的被试答对本项目的概率,一般规定X∈(-3,+3)。IRT理论假设各个项目作答概率是相互独立,项目采用0,1记分。

基于u=(u ,u ,u ,…,u )的似然函数:

L(θ;a ,b ,c ,…,a ,b ,c | u ,…,u )= p Q 。此公式表示能力为θ的测试者得分向量u与能力θ之间的关系。以上公式可以简记为L(θ;u),表示能力为θ的得分向量u的可能性。当u已知时,若θ在一个集合中变化,则θ∈使得L(θ′;u)=max L(θ;u)。满足上式的θ′称为θ的似然估计,这种将似然估计取极大值的自变量取值方法,叫极大似然估计法。本系统中的能力估计即采用此法。

在本系统中的试题选择依据是从题库中挑选能提供最大信息量的题目。项目信息量最大时,难度和特质水平的关系为:

bi=θ′ -1*ln(1/2+1/2* )/1.702ai。 此公式说明当被测水平达到θ′的话,下一步最适合的项目难度值为b 。以此我们就可以从题库中选中此难度值的被选题目,然后再根据每个题目的曝光度值和其他参数进行最优化的选择。系统在能力估值达到一定精度后,就可以停止估计运算,得出当前被测的能力值。

3. 自定义组件开发方法

3.1自定义组件开发的一般方法

所谓组件是软件应用的构造块,组件封装了状态和执行逻辑,并能在不同的应用程序中被复用。组件使得应用程序模块化,更有利于应用程序的开发和维护。自定义组件的开发过程就是完成定义组件公共结构的过程,组件公共结构有以下几个部分:属性(Property)、方法(Method)、事件(Event)及元数据(Attribute)。当完成组件开发后,还要经过编译和部属后才可以使用。

属性(Property)封装了组件的状态,属性像域一样通过类似域的语法得到访问,而在实现时则使用访问操作方法。

方法(Method)即一组操作来实现具体的功能要求。

事件(Event)是当有动作发生或状态改变时,类发出的信息或通知。产生事件类叫事件源,接收事件的类叫事件接收者。基于事件的架构使用―订阅的模式。事件的源(事件的者)允许用户(订阅者)指定事件发生时要执行的逻辑。

元数据(Attribute)是一种二进制信息,用以对存储在公共语言运行库可移植执行文件 (PE) 文件或存储在内存中的程序进行描述。将代码编译为 PE 文件时,便会将元数据插入到该文件的一部分中,而将代码转换为 Microsoft 中间语言 (MSIL) 并将其插入到该文件的另一部分中。在模块或程序集中定义和引用的每个类型和成员都将在元数据中进行说明。

本文以IRT自适应考试系统中的能力估值组件为例说明组件的开发过程,编译与部属组件的方法请读者参考相关资料。

4. 信息技术自适应在线考试系统组件开发

4.1系统结构图

本系统采用B/S结构的Web模式,被测个体可以通过任何浏览器软件访问我们的测试网站,在线进行测试。用户的所有操作只能通过浏览器界面与后台服务器进行交互。系统中的能力估值功能模块的开发,我们采用了自定义组件开发技术,将能力估值模块设计成组件模块。通过组件技术来优化系统结构,提高能力值的估计速度。系统结构见下图。

图2系统结构图

4.2 IRT自适应考试组件的开发

4.2.1 IRT自适应考试服务组件开发算法简介

根据IRT理论和极大似然估计法, IRT自适应考试服务组件设计时,分为三个部分。第一个部分是获取能力初值,能力初值通过为组件设定的相关属性取得或设置;第二个部分是能力值估计和参数估计,这个部分为组件的若干个方法,以牛顿迭代法为主要计算方法;第三部分是能力值反馈,提供HTML格式和字符串格式两种输出,方便使用者选择。

4.2.2 IRT自适应考试组件设计程序部分源代码及说明

程序Irtexamability.cs 实现了IRT自适应考试组件的能力初值。

文件名:Irtexamability.cs

源程序:

using System;

......;

using System.Web.UI;

namespace IRTEXAM.ServerControls{

public class Irtexamability: Control{

private float _initialability;

public float initalability {

get {return _initalability;}

set { initalability = initalability; }

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

}

//以上代码实现了能力初值属性的读取与设置

Protected override void Render(HtmlTextWriter writer){

Float ability=nihe.Getability(initalability);

writer. writer (“当前测试能力初值:”);

writer.Writer(initalability)

writer.Writer(“<br>”);

write.Writer(“最后能力估计值:”);

write.Writer(“ability”); }

//以上代码实现了能力值的HTML格式输出。

}}

程序nihe.cs实现了对被试者的能力似合运算

Using System;

......

Using System.collections;

namespace IRTEXAM.ServerControls

{

Internal sealed class nihe

{public float ability;

public static float Getability(initalability)

{ string itemid = Session[“itemid”].ToString().Split(‘$’);

string studda = Session[“cstj”].ToString().Split(‘@’);

string csda = Session[“csda”].ToString().Split(‘¥’);

//以上代码将Session中的值通过split函数,赋于相关数组中。

.......

//估值运算时为了保存中间值而定义的变量。

.......

for (int nhcs = 0; nhcs < 8; nhcs++)

{ double f1 = 0;

double f2 = 0;

for (int i = 0; i < itemid.Length; i++)

{ irta = double.Parse(Session[“IRTa(“ + i + ”)”].ToString());

irtb = double.Parse(Session[“IRTb(“ + i + ”)”].ToString());

irtc = double.Parse(Session[“IRTc(“ + i + ”)”].ToString());

double U = double.Parse(Session[“u(“ + i + ”)”].ToString());

double p = irtc + ((1 - irtc) / (1 + Math.Exp(-1.702 * irta * (diff - irtb))));

double pd = (1.7 * irta * (1 - p) * (p - irtc)) / (1 - irtc);

f1 = f1 + 1.702 * irta * (U - p) * (p - irtc) / (p * (1 - irtc));

f2 = f2 + 1.702 * 1.702 * irta * irta * (U * irtc - p * p) * (p - irtc) * (1 - p) / (p * p * (1 - irtc) * (1 - irtc)); }

//利用牛顿迭代法,进行能力似合运算。

if ((f1 > -0.0000000001) && (f1 < 0.0000000001))

{ability=diff;

return ability;

}

//当两次迭代值差值小于限定值后,可以视为能力估值结束,返回当前能力值。

diff = diff - (f1 / f2);}

return ability;

//迭代8次后,将得出的能力估值返回。

} }}

nihe.cs为能力估值似合算法的实现程序代码,在本部分源程序中,利用了牛顿迭代法进行8次迭代运算。每次迭代完成后都进行精度判断,当精度达到要求时,就会退出迭代,以此提高来运算效率。此程序经过实际测试,基本达到了估值要求,可以满足设计需要。Irtexamability.cs为能力估值的组件程序代码,它完成了能力估值时,对于初值的设置和读取的定义,实现了能力值最后HTML输出的功能。其他相关功能组件定义与此能力值估值运算组件定义相类似。

4.2.3 能力估值组件在IRT考试系统中的应用

在IRT考试系统能力估值模块中,前台以CSS+HTML技术构建系统测试平台,后台程序可以直接从工具框中调用能力估计运算组件。在能力估值模块,每次提供一道试题,根据被测个体的作答情况进行能力估值后,在题库再查找信息量最大的试题,作为下一道题,如此反复,直到能力值估计达到精度要求或是完成预设的最大题量为止。下图是能力估值组件应用于在线考试的网页文件截图。

5.结语

自定义组件技术是.NET框架中的一个重要的应用,自定义服务器端组件还可以应用于Web服务中,实现运算的分布处理,提高服务器运行效率,解决IRT理论中的运算量大,网络容易出现拥塞等问题。而且,IRT能力估值组件在经过实践检验和修正后,还可以应用于其他科目的测试系统,对于推广基于IRT理论的自适应考试理论将起到极大的促进作用,这也将是我们今后继续努力的方向。

参考文献:

[1][美]Nikhil Kothari Vandana Datye 著. 服务器控件与组件开发[M].机械工业出版社,2003.

[2]杨威主编.信息技术教学导论(第2版)[M].电子工业出版社,2007.

[3]余民宁.试题反应理论的介绍[J/OL]. http://www.省略.tw/index.php?mod=irt1.

[4][美]Michael Bowers著.精通CSS与HTML设计模式 [M].人民邮电出版社, 2008.

[5]杨晋吉,刘太根.网络课程中基于Web的在线测试系统的研究与实现[J].计算机应用研究,2007.

(作者系山西师范大学数学与计算机学院2006级研究生)

注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

上一篇:数学思维在高中数学不等式教学中的作用 下一篇:构建和谐数学课堂 提高数学教学成效