鄭 瓊,許晴媛
(1.閩南師范大學(xué)a.教育與心理學(xué)院;b.計算機(jī)學(xué)院,福建漳州 363000)
目前,對課業(yè)的評估大多采用所有學(xué)習(xí)者考同一張試卷的傳統(tǒng)方式.學(xué)習(xí)者獲得的評估結(jié)果僅是分?jǐn)?shù)或排名,對獲得自身當(dāng)前的知識狀態(tài)及缺失的知識點顯得無能為力,僅有少數(shù)學(xué)習(xí)者有機(jī)會獲得有經(jīng)驗的教師人工診斷每道錯題背后缺失的知識點.若利用計算機(jī)模擬這個過程,可讓所有學(xué)習(xí)者隨時隨地獲得這方面的幫助,有利于教育資源公平化,也能減輕教師負(fù)擔(dān).要實現(xiàn)不僅能給出測試的分?jǐn)?shù)、還能給出學(xué)習(xí)者當(dāng)前的知識狀態(tài)及缺失的知識點的計算機(jī)自適應(yīng)測試(Computer adaptive testing,CAT),需要引入新的理論做基礎(chǔ).而知識空間理論(Knowledge Space Theory,簡稱“KST”)[1]在評估學(xué)習(xí)者知識結(jié)構(gòu)和能力水平方面極具優(yōu)勢.本文以知識空間理論為基礎(chǔ),建立基于知識結(jié)構(gòu)的自適應(yīng)測試模型.KST是由美國數(shù)學(xué)心理學(xué)家Falmagne 和比利時數(shù)學(xué)心理學(xué)家Doignon 于1985 年提出的用數(shù)學(xué)的方法對學(xué)習(xí)者進(jìn)行知識評價和指導(dǎo)學(xué)習(xí)的一種數(shù)學(xué)心理模型.國外已有大量對知識空間理論的研究,并成功將其理論應(yīng)用于自適應(yīng)教學(xué)系統(tǒng)和測評系統(tǒng)[1-4].
近年來,國外的KST 研究持續(xù)有新成果涌現(xiàn),如:Pasquale 等[5]將GaLo 模型擴(kuò)展到技能不獨立的情況,并通過一個良級的能力空間來描述技能之間的依賴關(guān)系;Heller 等[6]闡述了唯一技能評估的充要條件;Anselmi 等[7]在文中提出了技能評估測試開發(fā)的新方法——引入基于能力的測試開發(fā).
國內(nèi)學(xué)者對知識空間理論也開展了一些研究,如:周弦[8]基于傳統(tǒng)的知識空間理論,提出了從知識狀態(tài)邊界角度研究自適應(yīng)測試的選題方法;孫波等[9]將KST 延伸至技能層面,得到了擴(kuò)展KST 并采用二分法的選題策略;劉艷花等[10]把知識狀態(tài)邊界推廣到擴(kuò)展知識空間理論;周銀鳳等[11]運用形式概念分析的方法尋找學(xué)習(xí)路徑并進(jìn)行技能評估;其勒格爾[12]利用KST 的學(xué)習(xí)診斷模型在“大學(xué)計算機(jī)基礎(chǔ)”課程中進(jìn)行實踐研究;楊桃麗等[13-16]對技能背景下的知識空間理論做許多研究.
從國內(nèi)外文獻(xiàn)研究來看,知識空間理論的研究經(jīng)過30 多年的發(fā)展已趨于成熟,利用知識空間理論實現(xiàn)自適應(yīng)測試是一種很好的方式,但在應(yīng)用上還有很多值得探討的方面.首先,現(xiàn)有研究在測試實施前,大多采用先從問題出發(fā)建立知識結(jié)構(gòu)再測試的方式.這樣做的弊端是隨著試題數(shù)量的增加,試題間關(guān)系確定難度大.從學(xué)科的角度看,特定學(xué)科的試題數(shù)量往往繁多,甚至海量.且先由問題建立知識結(jié)構(gòu),當(dāng)問題改變時,初始步驟就要重建,這將帶來麻煩.其次,現(xiàn)有研究在測試過程中,通常采用二分法選題的選題策略,該方法偏程序化,不能真正根據(jù)測試對象的特征實現(xiàn)個性化.再次,選題方式會影響測試效率.根據(jù)受測者當(dāng)前的知識狀態(tài)的選題方法,能符合受測者的特征出題,真正實現(xiàn)個性化.
為了解決以上問題,本文利用知識空間理論,提出了一種基于知識結(jié)構(gòu)的自適應(yīng)測試模型,設(shè)計了該模型的詳細(xì)實施步驟.在測試中,選題策略采取了在知識基中找邊界的方法,提升了選題效率.依據(jù)該模型,以“數(shù)據(jù)庫原理與應(yīng)用”課程中的“SQL 單表查詢”內(nèi)容為對象,編寫了自適應(yīng)測試程序,用程序模擬實現(xiàn)了受測者對該領(lǐng)域知識的個性化診斷,并給出其知識結(jié)構(gòu)和能力水平.
知識空間理論的核心概念包括:問題域、知識狀態(tài)、知識結(jié)構(gòu)、知識空間和問題之間的推測關(guān)系.
問題域是指由一系列問題組成的一個非空有限集Q.
定義1[3]若K是由非空問題域Q的子集構(gòu)成的集族,且K至少包含?和Q,則稱(Q,K)為知識結(jié)構(gòu).若K滿足并封閉,即對任意Ki,Kj∈K,有Ki?Kj∈K,則稱(Q,K)為知識空間.K中的元素被稱為知識狀態(tài).
知識狀態(tài)是在非空問題域Q={q1,q2,q3,…,qn}中,受測者在理想狀態(tài)下所能正確解決的問題的集合,用K表示,其中K?Q.理想狀態(tài)是指受測者在沒有受到外界壓力或情緒干擾的情況下,沒有粗心導(dǎo)致的錯誤和僥幸猜對的情況.
在問題域Q明確的情況下,可直接用K表示知識結(jié)構(gòu).受測者的知識狀態(tài)為空集?,表示其對所測問題域的知識一無所知.受測者的知識狀態(tài)為全集Q,表示其已全部掌握所測問題域的知識.
定義2[3](Q,K)是一個知識結(jié)構(gòu),?是定義在Q上的關(guān)系:r?q?Kr?Kq,其中r,q∈Q,Kr,Kq?K分別表示包含問題r和q的知識狀態(tài)的集合.當(dāng)滿足r?q時,稱r是q的前提,對應(yīng)的關(guān)系“ ?”稱為推測關(guān)系或前提關(guān)系.
不與推測關(guān)系相沖突的問題集合構(gòu)成了K的成員.r?q在語義上可以理解為:解決r是解決q的前提;或者說受測者可以正確回答q,那么就能正確回答r.
定義3[8]設(shè)問題域Q是非空有限問題集,K是問題域Q上的知識空間.對任意知識狀態(tài)K∈K,知識狀態(tài)K的鄰居記作N(K),且N(K)={K′∣K′ ∈K,d(K,K′)≤1};知識狀態(tài)K與K′之間的距離記作d(K,K′),且d(K,K′)=∣K△K′∣=∣(KK′) ?(K′K)∣;知識狀態(tài)K的邊界記作F(K),且F(K)
定義4[2]設(shè)F是問題域Q的非空子集族,q∈?F,F(xiàn)中包含q的極小集合稱為元素q的一個原子(atom),知識基B就是Q中所有問題的原子構(gòu)成的集族.
例1 設(shè)有一知識結(jié)構(gòu)(Q,K),K={?,{a},{a,b},{b,c},{a,b,c}}中,知識狀態(tài){b,c} 是元素b的一個原子,同時也是元素c的一個原子;元素b有兩個原子:{a,b} 和{b,c} ;元素a只有一個原子{a} .
一個知識狀態(tài)可以是幾個問題的原子,一個問題也可以有多個原子.這些原子不能由其它知識狀態(tài)通過并操作來構(gòu)成,且有限的知識結(jié)構(gòu)中每個問題至少有一個原子.
文獻(xiàn)[17]介紹了知識空間中關(guān)于基的基本理論和方法.有限的知識空間必有一個基,且知識空間可由基唯一確定.由文獻(xiàn)[8]我們有如下定理.
定理1知識空間(Q,K)中,F(xiàn)(K)為知識狀態(tài)K在知識基B中的邊界,則有:
(1) 對任意問題q?K,如果q∈F(K),當(dāng)且僅當(dāng)存在包含q的元素Bq∈B,Bq{q} ?K;
(2) 對任意問題q∈K,如果q∈F(K),當(dāng)且僅當(dāng)存在不包含q的元素
例2 設(shè)有一知識空間(Q,K),Q={a,b,c},K={?,{a},{c},{b,c},{a,c},{a,b,c}},知識狀態(tài)K={a,c} .
由定義4,易求得其知識基B={{a},{c},{b,c}},B中的元素分別為問題a,c,b的原子.由定理1,解得知識狀態(tài)K在知識基B中的邊界為:F(K)={a,b,c}.
基于技能的知識空間理論是知識空間理論引入了技能的擴(kuò)展[12],原理論中的內(nèi)容依然有效.基于技能的知識空間理論中有技能域、技能狀態(tài)、技能結(jié)構(gòu)、技能空間和技能之間的推測關(guān)系等概念,這些概念與原理論類似,主要概念描述如下.
定義5[3]若T是由非空技能集S的子集構(gòu)成的集族,且T至少包含?和S,則稱(S,T)為技能結(jié)構(gòu);S稱為技能結(jié)構(gòu)的域(domain),簡稱為技能域,T中的元素稱為技能狀態(tài);若T滿足并封閉,則稱(S,T)為技能空間.
定義6[3](S,T)是一個技能結(jié)構(gòu),?是定義在S上的關(guān)系:s?t?Ts?Tt,其中s,t∈S,Ts,Tt?T分別表示包含問題s,t的技能狀態(tài)的集合.當(dāng)滿足s?t時,稱s是t的前提,對應(yīng)的關(guān)系“ ?”稱為推測關(guān)系或前提關(guān)系;T的成員是不與推測關(guān)系相沖突的技能集合.
知識結(jié)構(gòu)(Q,K)和技能結(jié)構(gòu)(S,T)之間通過技能函數(shù)和問題函數(shù)相互聯(lián)系.對于給定的知識結(jié)構(gòu)與技能結(jié)構(gòu),以下定義描述了二者之間的聯(lián)系.
定義7[9]技能函數(shù)γ:Q→22S,γ(q) 表示解決問題q所需的極小技能集合的集族,γ(q) 中的元素也稱為極小技能狀態(tài).
若|γ(q)|=1,表示解決問題q的方法只有一種;若|γ(q)|>1,則表示解決問題q的方法有多種.在建立了技能函數(shù)γ的基礎(chǔ)上,再定義技能狀態(tài)函數(shù)η.
定義8[9]技能狀態(tài)函數(shù)η:Q→2T,η(q) 表示解決問題q可能的技能狀態(tài)集合.
由定義7 和定義8 可知,在給定的技能結(jié)構(gòu)(S,T)中,任意問題q,且| |γ(q)=1 時,η(q) 中所有元素的交集即是γ(q) .
定義9[9]問題函數(shù)δ:2S→2Q,并且要求滿足:δ(?)=?,δ(S)=Q.δ(t)表示技能集合t能解決問題的集合.
例3 設(shè)有一技能結(jié) 構(gòu)(S,T),S={u,v,w},T={?,{u},{v},{u,v},{u,w},{u,v,w}},問題域Q={1,2,3}技能函數(shù)γ(q)的取值分別為γ(1)={{u}},γ(2)={{v}},γ(3)={{u,w}}.
根據(jù)定義8,可求得對應(yīng)的技能狀態(tài)函數(shù)值分別為
根據(jù)定義8,可以求得問題函數(shù):
進(jìn)而得到知識結(jié)構(gòu)K={?,{1},{2},{1,2},{1,3},{1,2,3}},從而實現(xiàn)了技能結(jié)構(gòu)與知識結(jié)構(gòu)的聯(lián)系.
下面闡述基于知識結(jié)構(gòu)的自適應(yīng)測試模型,并以教育技術(shù)學(xué)專業(yè)課程“數(shù)據(jù)庫原理與應(yīng)用”中的“SQL 單表查詢”內(nèi)容為實驗對象,應(yīng)用該模型進(jìn)行自適應(yīng)測試.
基于知識結(jié)構(gòu)的自適應(yīng)測試模型是對于某個具體的知識領(lǐng)域,利用知識空間理論,建立知識結(jié)構(gòu)并進(jìn)行自適應(yīng)測試,并把整個測試過程劃分成不同的步驟.基于知識結(jié)構(gòu)的自適應(yīng)測試模型包括四個步驟.
本文統(tǒng)一把知識點當(dāng)作技能.對于特定學(xué)科領(lǐng)域,雖然題目眾多,但知識點的數(shù)量較固定且有限,故選擇從技能開始建立技能結(jié)構(gòu).學(xué)科專家根據(jù)測試目標(biāo)確定技能結(jié)構(gòu)的域,并根據(jù)經(jīng)驗確定技能間的推測關(guān)系,由推測關(guān)系,建立技能結(jié)構(gòu)(S,T).
學(xué)科專家根據(jù)技能結(jié)構(gòu)的域S,選擇問題構(gòu)成知識空間的問題域Q;根據(jù)經(jīng)驗和定義7,建立技能函數(shù)γ:Q→22S;根據(jù)定義8,計算得出技能狀態(tài)函數(shù)的值η:Q→2T;再根據(jù)定義9,求得問題函數(shù)δ:2S→2Q;進(jìn)而構(gòu)建用于測試的知識結(jié)構(gòu)(Q,K).
下面給出構(gòu)建知識結(jié)構(gòu)的算法.
算法1 構(gòu)建知識結(jié)構(gòu).
輸入:問題域Q,各問題和其前提問題的鍵值對preKps.
輸出: 知識結(jié)構(gòu)KStruct.
步驟1: 計算所有可能的知識狀態(tài)AllStateSet.
步驟2:構(gòu)建知識結(jié)構(gòu).
(1)KStruct=set()
(2)for KState in AllStateSet:
如果KState 中任意問題如果存在前提問題,且其前提問題都在KState 中,則將該問題加入到KStruct 中;
如果KState 中有問題不存在前提,則將該問題加入到KStruct 中.
步驟3:輸出KStruct.
建立技能結(jié)構(gòu)和知識結(jié)構(gòu)后就可以進(jìn)行測試.測試的重點是選題策略,即每次選出哪個問題進(jìn)行測試.根據(jù)受測者當(dāng)前已掌握知識狀態(tài)出題能真正實現(xiàn)個性化.更優(yōu)的選題策略能兼顧個性化又能盡快的診斷出結(jié)果,從而提升測試效率.常用的選題算法是二分法,如文獻(xiàn)[9],該方法偏程序化,不能真正實現(xiàn)個性化.另一種方法是在知識狀態(tài)的邊界中選出下一測試問題,如文獻(xiàn)[10],通過計算各當(dāng)前知識狀態(tài)的鄰居(距離≤1),從而得到該知識狀態(tài)K的邊界F(K),進(jìn)而按照規(guī)則在F(K)中選擇下一個要進(jìn)行測試的問題.此法較二分法更能實現(xiàn)“個性化”,但隨著問題數(shù)量增多,知識狀態(tài)的數(shù)量將會成指數(shù)增長,此法需要不斷的計算當(dāng)前知識狀態(tài)的鄰居和邊界,將消耗大量的時間和內(nèi)存,勢必會影響選題效率.而在一個知識空間中,知識基的數(shù)量遠(yuǎn)小于所有知識狀態(tài)的數(shù)量.故本文引入知識基的概念,采用在知識基的邊界進(jìn)行選題的策略來解決這個問題,以實現(xiàn)更高效的個性化測試.
在測試中,判斷受測者是否掌握了某個問題q或極小知識狀態(tài)B,B∈B,約定以下規(guī)則:
(Ⅰ)掌握了q,則一定掌握了q的至少一個極小知識狀態(tài)B;
(Ⅱ)掌握了某個極小知識狀態(tài)B,則一定掌握了B中所有的問題;
(Ⅲ)沒有掌握q,則沒有掌握q所有的極小知識狀態(tài),反之亦然.
當(dāng)受測者正確回答某一問題r時,應(yīng)用規(guī)則(Ⅰ)確定其掌握了r的極小知識狀態(tài)K′(如果r有多個極小知識狀態(tài),則隨機(jī)選擇一個),反復(fù)應(yīng)用規(guī)則(Ⅰ)、(Ⅱ)可以確定受測者掌握了屬于K′的問題和包含于K′的極小知識狀態(tài)K″,并令該受測者已掌握問題的集合為當(dāng)前知識狀態(tài)K,進(jìn)而根據(jù)定理1,計算K的邊界F(K),并從F(K)中選取還未掌握的問題出題.
如果受測者錯誤回答某一問題r時,應(yīng)用規(guī)則(Ⅲ)確定其沒有掌握r所有的極小知識狀態(tài),則保持其當(dāng)前知識狀態(tài)K不變,并繼續(xù)從F(K)中選取還未掌握的問題出題.
測試結(jié)束條件:邊界F(K)中無題可選或F(K)為空.受測者的最終知識狀態(tài)為K,計算最終知識狀態(tài)K與Q之間的距離d(K,Q)可以確定受測者的能力水平,并轉(zhuǎn)換為技能狀態(tài).
下面給出基于知識結(jié)構(gòu)的自適應(yīng)測試中,采用在知識基的邊界進(jìn)行選題的策略,由受測者某一時刻知識狀態(tài),得到最終知識狀態(tài)的測試算法.
算法2 基于知識基邊界選題策略的測試算法.
輸入: 受測者在某時刻的知識狀態(tài)temp_KState.
輸出: 測受測者最終掌握的知識狀態(tài).
步驟1: 約定幾個變量.
令Q為問題域,Bk為知識基,KState 為受測者的知識狀態(tài),YcT 為已出題的集合.
步驟2: 定義函數(shù)FK(tempKState),其功能是在知識基中求知識狀態(tài)的邊界.
步驟3: 在知識基的邊界中選題.
(1)border=FK(temp_KState)#border 為知識狀態(tài)在知識基中的邊界.
(2)choicedTp=list(border-temp_KState)#choicedTp 為可選問題.
(3)while choicedTp:
步驟4: 當(dāng)無題可選或邊界為空時,return KState.
通過技能函數(shù),把受測者的最終知識狀態(tài)轉(zhuǎn)化為對應(yīng)的技能狀態(tài),計算其與技能域S 的差可得到受測者缺失的技能.自此,基于知識結(jié)構(gòu)的自適應(yīng)測試已完成,實現(xiàn)了對測試對象能力的評估.
上述基于知識結(jié)構(gòu)的自適應(yīng)測試模型可用圖1 描述.如圖1 所示,左圖是測試的主要步驟,右圖是選題過程的主要流程.
圖1 基于知識結(jié)構(gòu)的自適應(yīng)測試模型
通過“數(shù)據(jù)庫原理與應(yīng)用”課程的學(xué)習(xí)中可知,建立數(shù)據(jù)庫的目的是存儲數(shù)據(jù)、查詢和處理分析數(shù)據(jù).數(shù)據(jù)庫查詢是數(shù)據(jù)庫的核心操作.在學(xué)習(xí)過程中,獲取學(xué)習(xí)者對查詢操作的掌握情況,可幫助學(xué)習(xí)者及時查漏補缺,有利于個性化學(xué)習(xí).下面以“SQL 單表查詢”內(nèi)容為例,闡述基于知識結(jié)構(gòu)的自適應(yīng)測試模型進(jìn)行測試的具體實施過程.
由學(xué)科專家確定“SQL 單表查詢”內(nèi)容的知識點,則技能結(jié)構(gòu)的域S1={a,b,c,d,e}中各技能編碼及描述如下:a為select 語句的一般格式,b為查詢表中的若干列,c為查詢表中的若干元組,d為對查詢結(jié)果進(jìn)行排序,e為對查詢結(jié)果進(jìn)行分組.
學(xué)科專家根據(jù)經(jīng)驗,定義技能域S1={a,b,c,d,e}中各技能之間如下語義:
(1)若受測者掌握了技能b,那么必掌握了其前提技能a;
(2)若受測者掌握了技能c,那么必掌握了其前提技能a;
(3)若受測者掌握了技能d,那么至少掌握了其前提b,c中的一個;
(4)若受測者掌握了技能e,那么必掌握了其前提技能b.
根據(jù)以上語義,由定義6 易得技能域S1={a,b,c,d,e}中各技能的推測關(guān)系為:a?b,a?c,b?c?d,b?e.如圖2 所示.
圖2 技能域S1={a,b,c,d,e}中各技能推測關(guān)系
根據(jù)定義6,符合以上推測關(guān)系的技能狀態(tài)有12 種,它們構(gòu)成了技能結(jié)構(gòu)T1={?,{a},{a,b},{a,c},{a,b,c},{a,b,d},{a,b,e},{a,c,d},{a,b,c,d},{a,b,c,e},{a,b,d,e},{a,b,c,d,e}}.自此,建立了技能結(jié)構(gòu)(S1,T1),其哈斯圖如圖3所示.由定義5可知,T1在并上封閉,故(S1,T1)是一個技能空間.
圖3 技能結(jié)構(gòu)(S1,T1)哈斯圖
下面在“SQL 單表查詢”內(nèi)容建立技能結(jié)構(gòu)(S1,T1)基礎(chǔ)上構(gòu)建其對應(yīng)的知識結(jié)構(gòu)(Q1,K1),具體步驟如下:
第1步 由學(xué)科專家根據(jù)技能結(jié)構(gòu)(S1,T1),從教材《數(shù)據(jù)庫系統(tǒng)原理教程(第2 版)》[18]中選出基于“學(xué)生-課程”數(shù)據(jù)庫的查詢題目,構(gòu)成一個關(guān)于“SQL 單表查詢”的問題域Q1={q1,q2,q3,q4,q5},如表1 所示.開放性的問題可一定程度上避免僥幸猜對的情況.
表1 “SQL 單表查詢”的問題域Q1
學(xué)科專家根據(jù)經(jīng)驗,給出問題域Q1中各問題之間存在的如下語義:
(1) 若受測者能解決問題q2,那么一定能解決問題q1;
(2) 若受測者能解決問題q3,那么一定能解決問題q1;
(3) 若受測者能解決問題q4,那么至少能解決問題q2,q3中的一個;
(4) 若受測者能解決問題q5,那么一定能解決問題q2.
根據(jù)以上語義,由定義2 易得問題域Q1={q1,q2,q3,q4,q5}中各問題的推測關(guān)系為:q1?q2,q1?q3,q2?q3?q4,q2?q5..如圖4 所示.
圖4 問題域Q1 上的推測關(guān)系?
第2步 由定義7,學(xué)科專家依據(jù)經(jīng)驗,對“SQL 單表查詢”內(nèi)容,給出技能函數(shù)γ1:Q1→22S1,取值如下:
根據(jù)定義8,在技能函數(shù)的基礎(chǔ)上,計算技能狀態(tài)函數(shù)η1:Q1→2T1的值.由T1={?,{a},{a,b},{a,c},{a,b,c},{a,b,d},{a,b,e},{a,c,d},{a,b,c,d},{a,b,c,e},{a,b,d,e},{a,b,c,d,e}},可以求得對應(yīng)的技能狀態(tài)函數(shù)η1值為:
這里需要檢查技能狀態(tài)函數(shù)η1是否是單射.如果不是單射,即存在不同問題有相同的技能狀態(tài)函數(shù)值,則根據(jù)需要保留其中一個問題,從而保證每一個問題都是可辨識的,滿足|Q1|≤|T1-{?}|.因η1(q1),η1(q2),η1(q3),η1(q4),η1(q5)的值都不同,即問題域Q1中所有的問題是可辨識的.
第3步 由定義9,求解問題函數(shù)δ1:2S1→2Q1.我們僅須考慮有意義的元素,即縮小定義域為T1,因此問題函數(shù)δ1:T1→2Q1,T1?2S1.對技能結(jié)構(gòu)T1中的每一個技能狀態(tài)都進(jìn)行計算,結(jié)果如下:
根據(jù)以上計算得出所有問題函數(shù)的值,就是知識結(jié)構(gòu)K1的值.故有
由以上方法構(gòu)建的知識狀態(tài)與技能狀態(tài)是一一對應(yīng)的.自此,建立了測試用的知識結(jié)構(gòu)(Q1,K1),其哈斯圖如圖5 所示.由定義1 可知,K1在并上封閉,故(Q1,K1)是一個基于能力的知識空間.
圖5 知識結(jié)構(gòu)(Q1,K1)的哈斯圖
由定義4,易得“SQL 單表查詢”內(nèi)容對應(yīng)的知識空間K1的知識基B1={q1},{q1,q2},{q1,q3},{q1,q2,q4},{q1,q3,q4},{q1,q2,q5},即B1中各元素分別是問題q1,q2,q3,q4,q5(q4有2 個原子:{q1,q2,q4},{q1,q3,q4})的極小知識狀態(tài).
“SQL 單表查詢”基于知識結(jié)構(gòu)的自適應(yīng)測試過程闡述如下:
(1) 假定受測者初始知識狀態(tài)K=?,初始邊界為?.
(2) 隨機(jī)選擇問題域Q1中的一個問題作為初始測試問題.
若受測者對初始問題回答錯誤,則選擇該問題的前提問題再測試.如果一直回答錯誤,直到空集,表示受測者對這個領(lǐng)域的知識一無所知.如果回答正確,按照下述方法繼續(xù)測試.
假定初始測試問題是q2,且受測者回答正確,根據(jù)基于知識結(jié)構(gòu)的自適應(yīng)測試規(guī)則(Ⅰ)可知其掌握了問題q2的極小知識狀態(tài){q1,q2},分別根據(jù)規(guī)則(Ⅱ)、(Ⅰ)可知受測者掌握了問題q2,q1以及{q1},此時受測者的知識狀態(tài)K1為已掌握問題的集合,即K1={q1,q2}.
(3) 由定理1,解得知識狀態(tài)K1={q1,q2}在知識基B1中的邊界為F(K1)={q2,q3,q4,q5}.因為q2已經(jīng)在其當(dāng)前知識狀態(tài)K1中,故從邊界中任選其它問題q3,q4,q5.不妨選擇q3,若受測者回答正確,根據(jù)規(guī)則(Ⅰ)可知其掌握了問題q3的極小知識狀態(tài){q1,q3},根據(jù)規(guī)則(Ⅱ)可知其掌握了問題q1,q3,故受測者的知識狀態(tài)被更新為K2={q1,q2,q3}.
(4) 由定理1,解得知識狀態(tài)K2={q1,q2,q3}在知識基B1中的邊界為.由于q2q3已經(jīng)在受測者的知識狀態(tài)中,不必重復(fù)測試,故在q4,q5中隨機(jī)選擇q5,假定受測者回答正確,根據(jù)規(guī)則(Ⅰ)可知其掌握了問題q5的極小知識狀態(tài){q1,q2,q5},根據(jù)規(guī)則(Ⅱ)可知其掌握了題目q1,q2,q5,受測者此刻的知識狀態(tài)被更新為K3={q1,q2,q3,q5}.
(5) 由定理1,解得知識狀態(tài)K3={q1,q2,q3,q5}在知識基B1中的邊界為由于q3已測試過,不必重復(fù)測試,故擇問題q4,假定受測者回答錯誤,根據(jù)規(guī)則(Ⅲ)可知,受測者對于問題q4的兩個極小知識狀態(tài)({q1,q2,q4},{q1,q3,q4})均沒有掌握,受測者此刻的知識狀態(tài)保持不變,即K4=K3.繼續(xù)從F(K3)中選取沒有被掌握的問題出題,而F(K3)中已無題可選,故測試結(jié)束.該受測者最終知識狀態(tài)為K4={q1,q2,q3,q5}.
測試過程如圖6 所示,圖中描述了由初始試題q2沿箭頭方向依次出題q3,q5,q4的全過程,圓角矩形框內(nèi)為題目qi對應(yīng)的極小知識狀態(tài);Ki為受測者在某一時刻的知識狀態(tài);“q2+”表示受測者正確回答問題q2;“q4-”表示受測者錯誤回答問題q4.
圖6 基于知識結(jié)構(gòu)的自適應(yīng)測試過程
通過技能函數(shù)γ1,把受測者最終的知識狀態(tài)K4={q1,q2,q3,q5}轉(zhuǎn)化為對應(yīng)的技能狀態(tài){a,b,c,e},于是,得到該受測者未掌握的技能是j5i0abt0b .至此,該受測者本次就“SQL 單表查詢”內(nèi)容基于知識結(jié)構(gòu)的自適應(yīng)測試已經(jīng)完成,并得到了受測者知識結(jié)構(gòu)和能力水平.
下面依據(jù)基于知識結(jié)構(gòu)的自適應(yīng)測試模型,使用Python 編程語言,在算法1、算法2 的基礎(chǔ)上編寫程序.該程序主要功能是實現(xiàn)對“SQL 單表查詢”的自適應(yīng)測試,受測者通過與程序交互,完成測試,實現(xiàn)對受測者能力水平的快速測試.運行環(huán)境為:Intel(R)Core(TM)i7-5500UCPU@2.40GHz 處理器,8GB 內(nèi)存,64 位Windows7操作系統(tǒng),Anaconda3,Python3.8.
下面給出兩次模擬實驗演示的具體測試情況.
模擬實驗1 是運行自適應(yīng)測試程序并模擬受測者作答的一次測試過程,其具體過程如下:
首先,系統(tǒng)隨機(jī)出題q3,根據(jù)程序提示,模擬受測者輸入的正確答案“select sname,sage from student where sage<20”,程序立即給出作答正確反饋,并計算出當(dāng)前知識狀態(tài)為{q1,q3},邊界為{q2,q3,q4},可選問題為{q2,q4}.繼續(xù)出題q4,模擬輸入錯誤答案“>”,程序批改并保持知識狀態(tài)不變.繼續(xù)出題q2,模擬輸入正確答案“select sno,sname from student”,程序給出作答正確反饋且更新當(dāng)前知識狀態(tài)為{q1,q2,q3},邊界為{q2,q3,q4,q5},因q2,q3已掌握,q4已測試過,不必重新測試,故可選問題為{q5}.繼續(xù)出題q5,模擬輸入錯誤答案“<”,程序給出作答錯誤反饋,并保持知識狀態(tài)不變.此時,已無題可選,故測試結(jié)束.
最后,給出本次測試結(jié)果:受測者最終的知識狀態(tài)為{q1,q2,q3},已掌握技能為{a,b,c},缺失技能為{d,e}.模擬實驗1 的自適應(yīng)測試過程如圖7 所示.
圖7 基于知識結(jié)構(gòu)的自適應(yīng)測試過程實驗?zāi)M1
模擬實驗2 是運行自適應(yīng)測試程序并模擬受測者作答的再一次的測試過程,如圖8 所示.程序運行后,進(jìn)入測試環(huán)節(jié),依次出題q5,q4,q3,分別模擬受測者給予正確、錯誤、正確的回答,程序依次根據(jù)作答情況給出反饋,并迅速得出本次測試結(jié)果:測試者最終知識狀態(tài)為{q1,q2,q3,q5},已掌握技能為{a,b,c,e},缺失技能為j5i0abt0b.本次模擬測試結(jié)束.
以上兩次模擬實驗驗證了運用本文所提出的基于知識結(jié)構(gòu)的自適應(yīng)測試模型就“SQL 單表查詢”內(nèi)容對受測者進(jìn)行診斷,其可行性、選題算法的有效性和測試的個性化.因此,該模型能夠?qū)崿F(xiàn)對受測者進(jìn)行個性化能力診斷.
綜上所述,基于知識結(jié)構(gòu)的自適應(yīng)測試采用在知識基的邊界中選題的方式,縮小了搜索范圍.隨機(jī)選擇初始問題,增強了可操作性,之后每一次選題都取決于受測者當(dāng)前的知識狀態(tài),且不同測試者其測試過程所需回答問題及其數(shù)量因人因時而異.從而實現(xiàn)了真正意義上的個性化測試.
本文主要探討了一種基于知識結(jié)構(gòu)的自適應(yīng)測試模型,并把該模型應(yīng)用在“SQL 單表查詢”內(nèi)容,用程序模擬實現(xiàn)了受測者對這部分學(xué)習(xí)內(nèi)容的個性化診斷,并給出其知識結(jié)構(gòu)和能力水平.在已有方法的基礎(chǔ)上,本文主要進(jìn)行了兩個方面的改進(jìn):提出從技能而不是從問題入手的順序更符合教學(xué)規(guī)律也便于實現(xiàn),易于擴(kuò)展;采用知識基的邊界選題節(jié)省了大量計算鄰居的開銷,能更好地實現(xiàn)快速個性化診斷.除了測試功能,未來可以擴(kuò)展到個性化學(xué)習(xí)資源推送和生成可視化學(xué)習(xí)分析報告等方面.問題域Q 的各成員可以擴(kuò)展到一類問題,每一類由多個問題組成.每次抽取某一類中的一題組成問題域.這樣可以達(dá)到不同的受測者使用不同問題,或者同一測試者多次測試而問題不同.