?

基于Open XML 和有限自動機的試卷自動生成系統

2023-10-09 09:31吳為民劉勇峰
順德職業技術學院學報 2023年3期
關鍵詞:出題題庫文檔

林 曉,吳為民,劉勇峰

(1.福建船政交通職業學院 人事處,福建 福州 350007;2.福建船政交通職業學院 信息與智慧交通學院,福建 福州 350007)

考試作為鑒定知識水平的一種方法,已經延續了上千年。命題的全過程包括了幾個重要的環節,出題、選題、組題、試卷排版、參考答案、封裝。隨著信息技術的不斷發展,自動試卷生成機制,為命題這一復雜的事項帶來了便捷。自動試卷生成機制具有系統、可靠、保密性高、可重復等優勢,特別適用于筆試的出題工作。許多筆試對題庫保密性要求非常高,有的甚至要求僅在出題的當天,在監督人員的監督下,由出題專家當場解封題庫或者現場出題,且出題的環境與外界隔絕聯系;除命題專家研究選擇考題外,有時還需要工作人員將試題進行電子化轉碼,以及將電子試題排版、打印、裝訂、封袋等。在題量大、考生多的情況時,工作人員的人工工作就非常耗時,且容易出錯[1]。

1 研究現狀

大多數試卷生成系統基于服務器架構的設計,利用數據庫對試題進行標準化處理,已有多位學者展開研究,賈寒霜等提出運用ASP.NET 開發,結合SQLSERVER 數據庫,利用WEB 數據庫存儲技術以實現網絡組卷在線考試[2];韋忠慶等提出基于SaaS模式,采用改進遺傳算法的智能組卷算法實現公布式在線考試[3];韓嘯等提出基因表達式編程算法,通過使用適當的遺傳算子,采用線性定長的編碼方式實現構造智能組卷方法[4];焦瑞等采用計算機提供的隨機函數結合智能思路確定試題庫結構[5];秦哲韓等為了降低組卷難度和提高組卷效率,采用PHP 技術,結合My SQL 數據庫、Excel 文件及手動輸入組成的試題庫開發新的智能組卷系統[6];王高平等提出通過遺傳算法使試卷生成結合課程以及所要考查的知識點,試卷的難度,不同題型的不同分值和數量,以及總分的限制等要求[7]。這種傳統的試卷生成系統均需使用數據庫軟件用于存儲試題,出題前期工序復雜,需要擬定大量的題庫,且事先規范好格式并錄入到系統中。由于在試題錄入過程和數據庫管理過程,都存在泄密的風險,而且數據庫存儲題庫的可視化程度不高,如何利用計算機技術在封閉的環境下、無數據庫題庫軟件支持、無法事先獲得題目的情況下進行快速出題,既要滿足考試考務工作保密性高和時間短的要求,又要克服手工操作帶來的速度慢、錯誤多等問題,成為需要解決的問題。

2 基于OXML 的WORD 文檔內容的解析與提取

Open XML(Open eXtensible Markup Language)是一種文檔的國際化標準,實現文件格式的互操作性。出題人員在現場用于出題的題庫資料一般都是以WORD文檔的DOCX 格式存儲,或者可在現場轉為WORD文 檔DOCX 格 式。OXML(Open eXtensible Markup Language)架構已經成為通用的標準化,被各大軟件廠商所支持的文檔架構,可以實現跨平臺,在不同的應用中打開[8]。劉偉男對WORD 的OXML 格式進行了分析并開發了智能處理桌面系統[9];楊英等提出了一種針對復制類作弊的檢測方法[10]。Open XML 標準使得DOCX 文檔、XLSX 文檔自動處理成為可能。利用DOCX 格式文檔和XLSX 文檔的Open XML 的架構,可直接對其內容和格式通過應用程序進行應用層的處理,再生成新的Open XML 文檔。這樣便可脫離數據庫軟件,實現題庫信息的存儲與處理,既滿足筆試保密性的要求,又減少筆試出題的人力及時間成本。

WORD 的DOCX 文檔以ZIP 包的形式存儲,包的格式遵守ISO/IEC 29500-2 標準[11]。ZIP 包里面包含多個Open XML 格式的文件,文件內容包括了XML文檔之間的關系定義、文檔屬性、內容數據,內容類型等,如圖1 所示。最基本的DOCX 文檔內容文件為document.xml 文件,其結構內容包括節點,節點包含子節點節點,節點又包含多個塊級節點元素,如。中包含多個元素,元素表示連續的文本,節點在元素中,文檔的內容存儲在節點中,本系統主要從節點提取出文本信息進行處理,如圖2 所示。

圖1 一個word 文檔test.docx 包結構圖

圖2 一個word 文檔document.xml 樣例片段

由于初始的WORD 題庫文檔是由不同的專家或部門提供的,文檔的格式存在不規范、不完全相同的情況,所以系統一開始需要對題庫的WORD 文件進行預處理。預處理的內容包括多個方面,例如將DOC 文檔轉為DOCX 文檔;對回車換行用節點替代;將所有段落的列表編號方式改為純文本方式,以方便處理;將全角的中文都統一為半角的中文;圖片是試卷內容的重要部分,為方便處理,事先將WORD 文檔段落包含的圖像都預先存儲到一個文件夾中,圖像的位置用“----image1----”、“----image2----”、…、“----image{n}----”來取替代,以簡化處理的流程,在生成試卷的時候,再把“----image{n}----”重新替代為圖片;通過對題庫文件的預處理,規范文檔XML 格式,同時對題庫文件格式進行統一,消除文檔中有歧義的地方,保證題庫的規范性。

在預處理完成之后,系統提取出文檔包含的文字內容,用正則表達式RE(Regular Expression)實現對文本內容的分割、提取和匹配。例如,規定以阿拉伯數字開始后面有跟蹤分隔符的文本是題干,通過使用正則表達式分離出題號、提取關鍵特征詞等來判斷是否是題干,其中分離題號的正則表達式如下:

實現對WORD 題庫文件的程序級別內容提取與分析,將產生的內容提供給下一階段有限狀態機進行處理。在最后生成試卷、答案卷和答題卡的階段,根據Open XML 標準對已有的模板生成對應的DOCX文檔,如圖3 所示。

圖3 試卷文檔預處理流程

3 基于確定性有限狀態機的試卷生成設計

通常情況下WORD 題庫文件中題目和答案存在于同一個文檔中,則需要對其內容進行分析判斷和分類處理,再依據組卷策略生成最終需要的試卷。本研究利用有限狀態自動機原理對文本的內容進行分類處理。

有限狀態機(FSM,Finite State Machine)是基于單個對象狀態轉換序列的計算模型[12-13],對象在任意一個時刻只有一種狀態,根據輸入的不同,使得對象從一種狀態遷移到另外一種狀態,并執行不同的動作。本研究使用確定的有限狀態自動機(DFA,Deterministic Finite Machine),其定義如下:

其中Q是所有狀態的集合,∑是所有輸入的集合,q0代表初始狀態,F是接受狀態的集合,δ是狀態轉移函數Q×∑→Q。

本研究利用確定性有限狀態機對題庫的讀取過程進行建模。從題庫的WORD 文檔中提取出的段落文字按內容分為三個類別,分別是題干部分、選項部分、答案部分。每次讀取word 一個段落,根據讀取的內容使狀態機進入不同的狀態,進行相應的讀寫操作。根據有限狀態機的定義:

表1 表示輸入的動作內容列表。表2 中A代表文字內容檢測結果A,B代表文字內容檢測結果B,C代表代表文字內容檢測結果C,D代表代表文字內容檢測結果D,S0代表IDLE 狀態,S1代表題干狀態,S2代表選項狀態,S3代表答案狀態,S4代表結束狀態。

表1 輸入動作表

表2 狀態轉移函數表

本系統的確定性有限狀態機模型如圖4 所示,圓形代表狀態,同心圓代表接受狀態F。我們默認文檔的第一段是題干,非題干的文字內容都略去,所以在空閑狀態S0時候,檢測結果A才能跳轉到接受狀態S1。

圖4 試卷內容分類處理的有限狀態機模型

當系統處于不同狀態下時,依據對應的組卷策略,執行不同的動作:在提干狀態按照模板寫入試卷文件、在選項狀態下按照格式寫入選項、在答案狀態下將答案按照預先設定的模板格式寫入答案卷、在結束狀態下,則保存關閉文件,過程圖如圖5 所示。

圖5 基于有限狀態機的系統設計

4 系統的總體設計

系統總架構圖如圖6 所示。系統的輸入是符合Open XML 標準的DOCX 格式題庫文件和EXCEL 的XLSX 格式的組卷方案文件。系統對輸入的文件進行分析處理,之后按照組卷策略生成后綴名為DOCX 的試卷、答題卡和答案卷文件。系統共分為四大功能模塊,分別是:試題庫預處理模塊、配置試卷模塊、拼組試卷模塊、導出試卷模塊。系統功能模塊設計圖,如圖7 所示。

圖6 系統總體架構圖

圖7 系統功能模塊圖

5 系統的實現與測試評估

本系統的實現語言為Python,用Pyqt 庫實現界面編程,通過python-docx 庫,lxml 庫的接口對Open XML 文檔進行讀取與生成。系統的主界面圖如圖8 所示。

圖8 程序主界面

系統支持的試題題型有單選、多選、判斷、填空、簡答等,題型可以根據需求增加。系統需要對題庫的WORD 題庫文件名進行規范,規則如下:將單選題題庫文件名定義為DX_[A-Z].docx,例如DX_A.docx、DX_B.docx;將多選題的題庫文件文件名為MX_[A-Z].docx,例 如MX_A.docx、MX_B.docx;將填空題的題庫文件定義為TK_[A-Z].docx,例如TK_A.docx、TK_B.docx。組題策略為excel 文件,例如A 卷的組題策略為A.xlsx,B.xlsx 等。組題策略文件包含題型種類、題型分值、題目編號等信息。

1)試題文件預處理。

首先需要對作為WORD 題庫文檔格式與內容進行預處理,預處理的內容包括:對WORD 文件格式做統一處理,一是清除有歧義的XML 元素,二是在內容上檢查錯誤,例如刪除不必要的空行、檢查核對題庫中的題號是否連續、題庫中的題目是否都已配有參考答案、將題庫中所有列表編碼的格式改為文本格式等。在預處理的過程中提示預處理發現的錯誤,以便后續人工介入修改。如圖9 所示。

圖9 題庫預處理提示信息界面

2)生成組卷策略文件

組卷策略文件是專家選題的結果,用XLSX 文件存儲。A 卷的策略文件名為A.xlsx,B 卷的策略文件名為B.xlsx,以此類推。策略文件的樣本如圖10 所示。策略文件既可以機器自動生成,也可以手工填寫,這樣既可以實現機器抽題的隨機性,又能實現試題的側重點。

圖10 組卷策略文件

3)配置卷面。

對試卷的考試科目、考試時間、試卷類別、試卷紙格式、題型、題號、題量、分值進行配置分配。如圖11 所示。

圖11 配置試卷界面圖

4)自動拼組試卷。

完成上述的步驟之后,進行拼組試卷并返回拼組試卷的信息。若存在拼組異常,則在反饋信息中用紅色字體表示。如圖12 所示。

5)試卷導出。

將系統生成的三套試卷,分別是試卷,答題卡和答案結果導出,格式為DOCX 格式,核對完交付打印。

系統測試共組織了單選題、多選、判斷、填空、簡答五種題型,測試題庫數量統計如表3 所示。測試運行的硬件平臺為CPU 為12th Gen Intel(R)Core(TM)i5-12400F、2.50 GHz、內存為16 G,軟件平臺為Windows 11、python3.8.10。主要測試試卷通過系統的耗時,結果如表4 所示。從測試結果可表明,通過系統自動產生的試卷規范,題目被正確地從題庫中提取出來,答案卷中答案抽取正確,整個過程符合預期的目的,節省了大量的人工同時避免了人為的錯誤,對比如表5 所示。

表3 測試題庫數量統計

表4 試卷生成主要階段耗時

表5 各種試卷生成方式的定性比較

6 結論

利用Open XML 文檔的開源結構,直接對文檔進行解析,再利用有限狀態自動機原理自動生成試卷、答題卡和答案卷,不但實現組卷速度快,而且保障試卷的正確性,還節省了人工成本,同時省去了系統對數據庫軟件的依賴,有效地解決了筆試出題的保密性、時效性要求的問題。

猜你喜歡
出題題庫文檔
民生實事 請人大代表“出題”“閱卷”
淺談Matlab與Word文檔的應用接口
有人一聲不吭向你扔了個文檔
“勾股定理”優題庫
“軸對稱”優題庫
“軸對稱”優題庫
“整式的乘法與因式分解”優題庫
我只出題,不管證明
棉和綿
基于RI碼計算的Word復制文檔鑒別
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合