摘要: 本文主要說明了在.NET架構(gòu)下的自定義組件開發(fā)技術(shù)應(yīng)用于IRT自適應(yīng)考試系統(tǒng)的方法,以能力估值自定義組件開發(fā)過程的介紹,闡述了.NET自定義組件開發(fā)的基本過程和方法,最后對能力估值組件應(yīng)用推廣進(jìn)行展望。
關(guān)鍵詞: IRT 組件 在線考試
1.引言
計算機(jī)在線考試系統(tǒng)作為一種對知識水平和操作能力的測評手段,已經(jīng)廣泛應(yīng)用于教育科研及社會生活中。相比于傳統(tǒng)紙質(zhì)測試,在線考試系統(tǒng)不僅有成本低、有效性高的優(yōu)點,而且更重要的是,在線考試系統(tǒng)除了可以對被測者的知識水平進(jìn)行測試,還可以對被測者的操作能力進(jìn)行測評。目前的在線考試系統(tǒng)中采用的測試?yán)碚撘罁?jù)以經(jīng)典測驗理論居多,經(jīng)典測驗理論具有數(shù)學(xué)模型簡單,易于理解和使用等優(yōu)點,但是它的不足之處在于其測驗難度確定依賴于整體被測樣本水平,對評價被測個體的水平和能力的指導(dǎo)作用不強(qiáng)。為了克服經(jīng)典測驗理論的不足,我們引入心理學(xué)測試中的項目反應(yīng)理論(IRT)作為在線考試系統(tǒng)新的理論依據(jù)。IRT理論的最大優(yōu)點是,在IRT中被試能力與測驗的難度放在同一量規(guī)上進(jìn)行估計,無論測驗的難易,被試能力估計值不變,不同的測驗結(jié)果可直接比較,這樣被測個體能力值與被測樣本能力值無關(guān),只與測試項目相關(guān),能更準(zhǔn)確地顯示被測個體的能力水平。IRT理論推廣的最大瓶頸就是它的數(shù)學(xué)模型復(fù)雜,計算量大,不易理解。
本文采用C#語言,開發(fā)設(shè)計了基于.NET構(gòu)架的IRT信息技術(shù)自適應(yīng)在線考試系統(tǒng)。本系統(tǒng)以信息技術(shù)課程為測試題庫來源,以項目反應(yīng)理論(IRT)為測驗理論依據(jù),通過B/S結(jié)構(gòu)的WEB模式對被試的信息技術(shù)知識水平和操作能力進(jìn)行在線測試。為了克服IRT理論的計算量大,易產(chǎn)生網(wǎng)絡(luò)數(shù)據(jù)擁塞的問題,我們利用C#語言提供的面向?qū)ο蟮淖远x組件開發(fā)技術(shù),此技術(shù)有利于提高數(shù)據(jù)運(yùn)算的分布性,充分發(fā)揮服務(wù)器均衡負(fù)載能力。本文主要介紹.NET架構(gòu)下的組件開發(fā)技術(shù)、本系統(tǒng)組件的開發(fā)過程及本系統(tǒng)的應(yīng)用前景。
2. IRT考試?yán)碚?/p>
IRT的“核心”是建立一類統(tǒng)計模型,即具有某種特質(zhì)的不同能力水平的考生在一個項目上如何反應(yīng)的數(shù)學(xué)模型。目前比較常用的是Logistic回歸模型,這個模型分為單參、雙參和三參,隨著參數(shù)的增多,其準(zhǔn)確度增大,同時運(yùn)算量和復(fù)雜難也增加。下面是Logistic三參模型的數(shù)學(xué)公式:P(x)=c+(1-c)÷(1+e )。
圖1三參模型的特征曲線
其中,D=1.702代表測度因子,a表示項目的區(qū)分度,b表示項目的難度,c表示項目的猜測度。P(X)表示能力為X的被試答對本項目的概率,一般規(guī)定X∈(-3,+3)。IRT理論假設(shè)各個項目作答概率是相互獨(dú)立,項目采用0,1記分。
基于u=(u ,u ,u ,…,u )的似然函數(shù):
L(θ;a ,b ,c ,…,a ,b ,c | u ,…,u )= p Q 。此公式表示能力為θ的測試者得分向量u與能力θ之間的關(guān)系。以上公式可以簡記為L(θ;u),表示能力為θ的得分向量u的可能性。當(dāng)u已知時,若θ在一個集合⊙中變化,則θ∈⊙使得L(θ′;u)=max L(θ;u)。滿足上式的θ′稱為θ的似然估計,這種將似然估計取極大值的自變量取值方法,叫極大似然估計法。本系統(tǒng)中的能力估計即采用此法。
在本系統(tǒng)中的試題選擇依據(jù)是從題庫中挑選能提供最大信息量的題目。項目信息量最大時,難度和特質(zhì)水平的關(guān)系為:
bi=θ′ -1*ln(1/2+1/2* )/1.702ai。 此公式說明當(dāng)被測水平達(dá)到θ′的話,下一步最適合的項目難度值為b 。以此我們就可以從題庫中選中此難度值的被選題目,然后再根據(jù)每個題目的曝光度值和其他參數(shù)進(jìn)行最優(yōu)化的選擇。系統(tǒng)在能力估值達(dá)到一定精度后,就可以停止估計運(yùn)算,得出當(dāng)前被測的能力值。
3. 自定義組件開發(fā)方法
3.1自定義組件開發(fā)的一般方法
所謂組件是軟件應(yīng)用的構(gòu)造塊,組件封裝了狀態(tài)和執(zhí)行邏輯,并能在不同的應(yīng)用程序中被復(fù)用。組件使得應(yīng)用程序模塊化,更有利于應(yīng)用程序的開發(fā)和維護(hù)。自定義組件的開發(fā)過程就是完成定義組件公共結(jié)構(gòu)的過程,組件公共結(jié)構(gòu)有以下幾個部分:屬性(Property)、方法(Method)、事件(Event)及元數(shù)據(jù)(Attribute)。當(dāng)完成組件開發(fā)后,還要經(jīng)過編譯和部屬后才可以使用。
屬性(Property)封裝了組件的狀態(tài),屬性像域一樣通過類似域的語法得到訪問,而在實現(xiàn)時則使用訪問操作方法。
方法(Method)即一組操作來實現(xiàn)具體的功能要求。
事件(Event)是當(dāng)有動作發(fā)生或狀態(tài)改變時,類發(fā)出的信息或通知。產(chǎn)生事件類叫事件源,接收事件的類叫事件接收者。基于事件的架構(gòu)使用發(fā)布—訂閱的模式。事件的源(事件的發(fā)布者)允許用戶(訂閱者)指定事件發(fā)生時要執(zhí)行的邏輯。
元數(shù)據(jù)(Attribute)是一種二進(jìn)制信息,用以對存儲在公共語言運(yùn)行庫可移植執(zhí)行文件 (PE) 文件或存儲在內(nèi)存中的程序進(jìn)行描述。將代碼編譯為 PE 文件時,便會將元數(shù)據(jù)插入到該文件的一部分中,而將代碼轉(zhuǎn)換為 Microsoft 中間語言 (MSIL) 并將其插入到該文件的另一部分中。在模塊或程序集中定義和引用的每個類型和成員都將在元數(shù)據(jù)中進(jìn)行說明。
本文以IRT自適應(yīng)考試系統(tǒng)中的能力估值組件為例說明組件的開發(fā)過程,編譯與部屬組件的方法請讀者參考相關(guān)資料。
4. 信息技術(shù)自適應(yīng)在線考試系統(tǒng)組件開發(fā)
4.1系統(tǒng)結(jié)構(gòu)圖
本系統(tǒng)采用B/S結(jié)構(gòu)的Web模式,被測個體可以通過任何瀏覽器軟件訪問我們的測試網(wǎng)站,在線進(jìn)行測試。用戶的所有操作只能通過瀏覽器界面與后臺服務(wù)器進(jìn)行交互。系統(tǒng)中的能力估值功能模塊的開發(fā),我們采用了自定義組件開發(fā)技術(shù),將能力估值模塊設(shè)計成組件模塊。通過組件技術(shù)來優(yōu)化系統(tǒng)結(jié)構(gòu),提高能力值的估計速度。系統(tǒng)結(jié)構(gòu)見下圖。
圖2系統(tǒng)結(jié)構(gòu)圖
4.2 IRT自適應(yīng)考試組件的開發(fā)
4.2.1 IRT自適應(yīng)考試服務(wù)組件開發(fā)算法簡介
根據(jù)IRT理論和極大似然估計法, IRT自適應(yīng)考試服務(wù)組件設(shè)計時,分為三個部分。第一個部分是獲取能力初值,能力初值通過為組件設(shè)定的相關(guān)屬性取得或設(shè)置;第二個部分是能力值估計和參數(shù)估計,這個部分為組件的若干個方法,以牛頓迭代法為主要計算方法;第三部分是能力值反饋,提供HTML格式和字符串格式兩種輸出,方便使用者選擇。
4.2.2 IRT自適應(yīng)考試組件設(shè)計程序部分源代碼及說明
程序Irtexamability.cs 實現(xiàn)了IRT自適應(yīng)考試組件的能力初值。
文件名: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; }
}
//以上代碼實現(xiàn)了能力初值屬性的讀取與設(shè)置
Protected override void Render(HtmlTextWriter writer){
Float ability=nihe.Getability(initalability);
writer. writer (“當(dāng)前測試能力初值:”);
writer.Writer(initalability)
writer.Writer(“<br>”);
write.Writer(“最后能力估計值:”);
write.Writer(“ability”); }
//以上代碼實現(xiàn)了能力值的HTML格式輸出。
}}
程序nihe.cs實現(xiàn)了對被試者的能力似合運(yùn)算
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函數(shù),賦于相關(guān)數(shù)組中。
.......
//估值運(yùn)算時為了保存中間值而定義的變量。
.......
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)); }
//利用牛頓迭代法,進(jìn)行能力似合運(yùn)算。
if ((f1 > -0.0000000001) (f1 < 0.0000000001))
{ability=diff;
return ability;
}
//當(dāng)兩次迭代值差值小于限定值后,可以視為能力估值結(jié)束,返回當(dāng)前能力值。
diff = diff - (f1 / f2);}
return ability;
//迭代8次后,將得出的能力估值返回。
} }}
nihe.cs為能力估值似合算法的實現(xiàn)程序代碼,在本部分源程序中,利用了牛頓迭代法進(jìn)行8次迭代運(yùn)算。每次迭代完成后都進(jìn)行精度判斷,當(dāng)精度達(dá)到要求時,就會退出迭代,以此提高來運(yùn)算效率。此程序經(jīng)過實際測試,基本達(dá)到了估值要求,可以滿足設(shè)計需要。Irtexamability.cs為能力估值的組件程序代碼,它完成了能力估值時,對于初值的設(shè)置和讀取的定義,實現(xiàn)了能力值最后HTML輸出的功能。其他相關(guān)功能組件定義與此能力值估值運(yùn)算組件定義相類似。
4.2.3 能力估值組件在IRT考試系統(tǒng)中的應(yīng)用
在IRT考試系統(tǒng)能力估值模塊中,前臺以CSS+HTML技術(shù)構(gòu)建系統(tǒng)測試平臺,后臺程序可以直接從工具框中調(diào)用能力估計運(yùn)算組件。在能力估值模塊,每次提供一道試題,根據(jù)被測個體的作答情況進(jìn)行能力估值后,在題庫再查找信息量最大的試題,作為下一道題,如此反復(fù),直到能力值估計達(dá)到精度要求或是完成預(yù)設(shè)的最大題量為止。下圖是能力估值組件應(yīng)用于在線考試的網(wǎng)頁文件截圖。
5.結(jié)語
自定義組件技術(shù)是.NET框架中的一個重要的應(yīng)用,自定義服務(wù)器端組件還可以應(yīng)用于Web服務(wù)中,實現(xiàn)運(yùn)算的分布處理,提高服務(wù)器運(yùn)行效率,解決IRT理論中的運(yùn)算量大,網(wǎng)絡(luò)容易出現(xiàn)擁塞等問題。而且,IRT能力估值組件在經(jīng)過實踐檢驗和修正后,還可以應(yīng)用于其他科目的測試系統(tǒng),對于推廣基于IRT理論的自適應(yīng)考試?yán)碚搶⑵鸬綐O大的促進(jìn)作用,這也將是我們今后繼續(xù)努力的方向。
參考文獻(xiàn):
[1][美]Nikhil Kothari Vandana Datye 著. ASP.NET服務(wù)器控件與組件開發(fā)[M].機(jī)械工業(yè)出版社,2003.
[2]楊威主編.信息技術(shù)教學(xué)導(dǎo)論(第2版)[M].電子工業(yè)出版社,2007.
[3]余民寧.試題反應(yīng)理論的介紹[J/OL]. http://www.irt.org.tw/index.php?mod=irt1.
[4][美]Michael Bowers著.精通CSS與HTML設(shè)計模式 [M].人民郵電出版社, 2008.
[5]楊晉吉,劉太根.網(wǎng)絡(luò)課程中基于Web的在線測試系統(tǒng)的研究與實現(xiàn)[J].計算機(jī)應(yīng)用研究,2007.
(作者系山西師范大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院2006級研究生)
注:“本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。”