宋茂海,孔 玉,張樂平,李東方
醫(yī)療設備及其水平的飛速發(fā)展與工程技術和計算機技術的進步是分不開的,醫(yī)工信結合是未來醫(yī)學發(fā)展的趨勢。像3D打印器官模型、醫(yī)療CT三維重建、流行病學信息處理、臨床和醫(yī)院信息系統(tǒng)等,都對醫(yī)學生的計算機水平提出了更高的要求。醫(yī)學生不僅要掌握醫(yī)學專業(yè)知識,還要掌握與醫(yī)學相關的計算機知識才能適應未來的醫(yī)療工作。目前的計算機考試,如醫(yī)學院校醫(yī)學生課程考核、醫(yī)院人員招錄、醫(yī)生職稱評定考試等,普遍采用了無紙化考試方案。因此,自動閱卷方案近年來受到越來越多的關注[1-2]。目前的自動閱卷方案主要關注Office文檔改卷方法[3-4],一般通過VBA操作Office文檔對象實現(xiàn);針對網(wǎng)頁文檔改卷方法的研究較少,一般利用文檔對象模型(簡稱DOM)或正則表達式來實現(xiàn)[5]。還有的閱卷方案定位于輔助改卷[6],仍需教師手工評判。這些改卷方案普遍存在的問題有:(1)標準答案規(guī)則定義不明確。有些復雜規(guī)則判定時需依賴其他條件,難以實現(xiàn)代碼和規(guī)則分開[7-9]。很多方案以硬編碼方式把標準答案規(guī)則直接寫在代碼里,下次使用前要修改規(guī)則后重新編譯。(2)評分點定位不精確。不能發(fā)現(xiàn)類似把圖片插到相鄰單元格的錯誤,評分沒有手工閱卷精確。我校生物醫(yī)學工程系醫(yī)學生計算機考核和附屬醫(yī)院職稱評審開展無紙化考試已有多年,其自動閱卷方案歷經(jīng)多次修改后基本定型,現(xiàn)將方案中的技術要點作一介紹。
無紙化考試[10-12]的一般交卷形式是把試卷壓縮后上傳到考試服務器。本閱卷方案將壓縮文件解壓,再打開目錄中的網(wǎng)頁文件進行評分。根據(jù)文件名解析出姓名及學號,匯總評分成績后逐行顯示。對于分值異常的試題,可以手工打開網(wǎng)頁進行人工復核。最后導出成績到Excel文件,再和其他考試模塊的成績進行合并處理。整個閱卷流程如圖1所示。
圖1 基于JQuery的自動閱卷方案流程圖
DOM是W3C發(fā)布的HTML應用編程接口規(guī)范。DOM將整個網(wǎng)頁映射為一個由層次節(jié)點組成的節(jié)點樹,HTML文檔中的每個元素、屬性、文本都代表著樹上的一個節(jié)點。通常情況下,使用get Element ById()、get Elements ByName()和 get Elements-By Tag Name()3種方法可定位HTML文檔中的任何DOM節(jié)點。但是,對于沒有標注id和name屬性的網(wǎng)頁,這種定位方式無法奏效。
為解決這個問題,本方案使用CsQuery控件來遍歷和存取DOM節(jié)點。該控件采用熟知的JQuery語法格式,簡化了HTML與.NET程序之間的操作。變量CQ包含了網(wǎng)頁的DOM結構,使用時只需定義一個CQ變量,并把網(wǎng)頁文件路徑作為構造函數(shù)的參數(shù)傳入,即可進行節(jié)點的存取操作。
例如:
CQ dom=CQ.Create(html路徑);
varstrBold=dom["div> b:first-child"].Text();//取得DIV標簽里第一個B標簽內(nèi)的文本內(nèi)容
var cell=dom.Select("tr:first>td:eq(2)"); //定位表格中第一行第二列單元格內(nèi)容
直接使用Document對象,很難定位沒有id屬性和嵌套很深的節(jié)點。而使用CsQuery庫的Select函數(shù),配合JQuery選擇語法可精確地定位任意節(jié)點。表1是幾個常用定位方法。
表1 Select函數(shù)語法說明
網(wǎng)頁中的樣式表一般位于head區(qū)域style標簽中或外置CSS文件中。CsQuery目前只能解析標簽內(nèi)部style屬性的樣式,尚不能解析head區(qū)域內(nèi)及外部文件的樣式表。因此,本方案用自定義CssParser類完成head區(qū)域CSS解析的功能。樣式表的語法比較嚴謹,使用正則表達式可方便地把樣式表轉換為列表對象。本方案中樣式類的定義如下:
然后使用類似csp.Styles[cls].Attributes[name].Value方法即可獲得cls選擇符下的name樣式值。
針對無紙化考試場次多、試卷類型多的情況,將評分規(guī)則以外部數(shù)據(jù)的形式存放,實現(xiàn)了閱卷方案的通用性,采用JQuery語法方便了代碼與規(guī)則的分離。本方案用XML文檔存放評分規(guī)則,每個XML子元素存放一條評分規(guī)則,該記錄包含了分值、DOM節(jié)點或CSS樣式、節(jié)點屬性、屬性值等規(guī)則信息。評分規(guī)則除了節(jié)點名稱和分值以外,還包含了復雜的節(jié)點定位規(guī)則、節(jié)點間依賴條件等信息。下面針對幾種常見情況進行介紹。
需給出要定位的標簽名稱、標簽包含的正確文本內(nèi)容。
如:設置網(wǎng)頁標題為“異地高考”的評分規(guī)則為
<rule score="1.0"element="title">
<attrib name=""value="異地高考"id="htm"/>
</rule>
其中,score="1.0"表示該項分值為1分,element="title" 表示定位網(wǎng)頁的<title>標簽,value="異地高考"表示<title>標簽的文本內(nèi)容應為“異地高考”,id="htm"表示判定標簽文本內(nèi)容的規(guī)則。
需給出要定位的標簽名稱、標簽的屬性及屬性值。
如:設置表格屬性“邊框線寬度、單元格填充設為0、單元格間距設置為10”的規(guī)則為
<rule score="2.0"element="table">
<attrib name="border"value="0"id="dom"/>
<attrib name="cellpadding"value="0"id="dom"/>
<attrib name="cellspacing"value="10"id="dom"/>
</rule>
若規(guī)則中有多個屬性,則計算出單項平均分值,再逐項給分。該題中每項分值約為0.7。id="dom"表示判定標簽屬性的規(guī)則。
如果樣式選擇符已知,設置“css”的屬性為樣式選擇符名稱。如果樣式選擇符未知,則給出樣式所在的標簽。
如:設置網(wǎng)頁背景圖片為bg.jpg的評分規(guī)則為
<rule score="1.0"element=""css="body">
<attrib name="background-image"value="url(images/bg.jpg)"id="css"/>;
</rule>
設置水平線的顏色為#8D7FE1的評分規(guī)則為
<rule score="1.0"element="hr">
<attrib name="color"value="#8D7FE1"id="css"/>;
</rule>
本方案先根據(jù)標簽判定樣式名稱,再定位具體的樣式值。id="css"表示判定樣式表的規(guī)則。
如果答案不唯一,設置“type”的屬性為邏輯“或”,評分過程中只要有一項滿足要求即得分。type="OR"表示針對邏輯“或”的規(guī)則。
如:設置單元格內(nèi)文字居中對齊,可以設置文字的text-align樣式,也可以設置表格的align屬性。
<rule score="1.0"element="tr:first>td:eq(1)"type="OR">
<attrib name="align"value="center"id="dom"/>;
<attrib name="text-align"value="center"id="css"/>;
</rule>
根據(jù)HTML語言規(guī)范,本方案其他常見的規(guī)則還有唯一性規(guī)則、嵌套性規(guī)則等。如判定表單元素時,所有表單元素要放置在一個<form>標簽內(nèi),網(wǎng)頁中如果存在多個<form>標簽則扣分。判定flash對象的文件路徑時,要先定位<object>標簽再定位屬性為movie的<param>標簽,判定原理同上。
在常見的自動閱卷方案中,除了前面介紹的文檔對象法,還有文本分析法。其原理是在HTML文檔中用正則表達式來搜索特定的字符串,該方法的缺點是只能判斷有無,不能精確定位。比如考生未按要求把圖片插入到規(guī)定的單元格中,文本分析法不能發(fā)現(xiàn)這種錯誤,仍然給分。表2為本閱卷方案與基于文本分析方法的正則表達式閱卷方案以及手工閱卷的比較結果[9,13]。
表2 手工閱卷法、正則表達式法、JQuery法閱卷結果比較
通過比較3種閱卷方案的速度和得分情況可知:(1)在檢出數(shù)量方面,手工閱卷可以找出命名不規(guī)范和放置文件夾錯誤的網(wǎng)頁文件,因此,全部檢出,而自動閱卷不能找出這些不規(guī)范的文件。(2)在運行時間方面,手工閱卷每份試卷耗時大約90 s,這其中包括解開壓縮文件和記錄成績的時間。閱卷時間需一兩個工作日,易出現(xiàn)評分尺度前后把握不勻的情況,閱卷主觀性強。正則表達式閱卷方案耗時最少,而JQuery閱卷方案耗時介于二者之間,這與DOM解析耗時較多有關。(3)在平均得分方面,手工閱卷得分居中,這并不意味著準確率高,通常包含了部分感情分。正則表達式閱卷方案由于規(guī)則設置較寬,判分不夠嚴格,得分偏高。JQuery閱卷方案規(guī)則設置較嚴格,得分偏低。
從測試結果可以看出,自動閱卷用時可以忽略不計,但是有漏檢的情況,需配合人工復核。從得分情況看,JQuery閱卷方案相對客觀準確,但對規(guī)則設置嚴格性要求較高,需反復調(diào)試。
本文在對比幾種自動閱卷方案的基礎上,提出一種基于JQuery語法的自動閱卷方案,在規(guī)則制定和評分點定位方面具有較好的擴展性和準確性。根據(jù)閱卷方案中的技術要點和閱卷流程,已用C#語言開發(fā)了相應的閱卷程序,并應用到實際閱卷過程中,閱卷效率和準確度大幅提高。本方案的應用實施,可有效提高醫(yī)學院校學生和醫(yī)院醫(yī)護人員的計算機應用能力,對培養(yǎng)現(xiàn)代醫(yī)學復合型人才起到一定的作用。在應用中應注意規(guī)則制定的嚴謹性,以免影響最終評分的準確性。還可以對方案作進一步的改進,如添加對外部樣式表文件解析功能、在DOM樹上直觀顯示每個得分點的評分情況以及擴展其他評估模塊范圍等,這將在以后實踐的基礎上進一步完善。
[1] 見偉平,盧虹冰,周智明,等.基于Ajax ASPVC++的教育考試平臺的設計與實現(xiàn)[J].醫(yī)療衛(wèi)生裝備,2011,32(3):55-57.
[2] 王毅.計算機基礎統(tǒng)考自動閱卷系統(tǒng)的實現(xiàn)[J].電腦編程技巧與維護,2009(10):128-129.
[3] 鄧秀蘭,李廣振.基于VBA技術的Word自動判卷系統(tǒng)的實現(xiàn)[J].計算機與現(xiàn)代化,2012(9):219-221.
[4] 李桂英.基于XML和VBA的《計算機應用基礎》在線考試系統(tǒng)[J].現(xiàn)代計算機,2005(9):57-60.
[5] 趙曉峰,肖丹.基于XML與ActiveX技術的Office操作自動評分系統(tǒng)[J].計算機與數(shù)字工程,2006,34(12):178-180.
[6] 胡開明,陳建華.基于.NET的輔助改卷器設計[J].現(xiàn)代計算機,2009(2):195-197.
[7] 陳永紅.巧用EXCEL自動判卷[J].微計算機世界,2012(9):98.
[8] 彭作民.Excel文檔自動閱卷評分算法設計[J].南京師范大學學報:工程技術版,2007,7(3):70-73.
[9] 賁黎明.Excel操作題自動閱卷系統(tǒng)的設計與實現(xiàn)[J].常熟理工學院學報,2011,25(8):115-120.
[10] 杜少杰.Word操作題的一個自動閱卷方案[J].曲靖師范學院學報,2005,24(6):100-101.
[11] 王讀祥.Word操作題自動判卷關鍵性技術實現(xiàn)[J].計算機與現(xiàn)代化,2011(10):153-155.
[12] 朱克武.Office辦公軟件改卷系統(tǒng)的研究[J].計算機與現(xiàn)代化,2011(4):145-152.
[13] 丁俊輝,龔沛曾.基于XML的HTML自動閱卷算法設計與實現(xiàn)[J].計算機技術與發(fā)展,2012,22(1):1-4.