黃偉峰
(洛陽理工學(xué)院 計(jì)算機(jī)與信息工程學(xué)院,河南 洛陽471000)
隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展, 以及各高校對(duì)計(jì)算機(jī)基礎(chǔ)課程的研究和建設(shè),無紙化網(wǎng)絡(luò)考試的方式以其高效、客觀、公正的特點(diǎn),越來越得到廣泛應(yīng)用[1]。各個(gè)高校也紛紛開發(fā)了計(jì)算機(jī)基礎(chǔ)的網(wǎng)絡(luò)課程平臺(tái),其中word 部分的教學(xué)內(nèi)容的練習(xí)大都由所設(shè)定的程序自動(dòng)由題庫進(jìn)行抽題,在學(xué)生完成之后,也由計(jì)算機(jī)程序自動(dòng)對(duì)其進(jìn)行批改,并把自動(dòng)批改的結(jié)果反饋給學(xué)生,整個(gè)過程任課教師不需要參與就可以直接得到學(xué)生對(duì)于課程內(nèi)容的掌握情況,大大減輕了教師的負(fù)擔(dān),使教師把更多的時(shí)間精力放在課堂之上,提高了整個(gè)課程的教學(xué)水平。然而,網(wǎng)絡(luò)課程平臺(tái)使用之后對(duì)于操作題自動(dòng)閱卷的問題需要進(jìn)一步研究以提高其效率。
在自動(dòng)閱卷的研究中,對(duì)于選擇題的自動(dòng)閱卷的實(shí)現(xiàn)比較簡(jiǎn)單,直接和數(shù)據(jù)庫中預(yù)存的答案比較即可,而對(duì)于word 操作題目的閱卷工作相對(duì)比較困難,目前,主要有三種方法;(1)模擬word 環(huán)境,讓用戶在模擬環(huán)境中操作,優(yōu)點(diǎn)是模擬環(huán)境能夠控制用戶的所有操作行為,當(dāng)然能夠準(zhǔn)確的對(duì)其操作正確與否進(jìn)行判斷,缺點(diǎn)是構(gòu)建模擬環(huán)境實(shí)現(xiàn)起來比較復(fù)雜,開發(fā)規(guī)模比較龐大,比如金山公司的WPS 能夠?qū)崿F(xiàn)幾乎和word 同樣的功能,但開發(fā)像WPS 這樣的系統(tǒng),難度可想而知。(2)通過解析word文件格式信息,把考生的word 文件信息提取出來和標(biāo)準(zhǔn)答案作比較,這種方法比較速度很快,判斷準(zhǔn)確,是理想的閱卷模式,然而由于微軟公司并沒有把word 文件格式結(jié)構(gòu)信息公布于眾,實(shí)際應(yīng)用很少,有研究者從RTF 文件格式入手,部分實(shí)現(xiàn)了文件格式比較的自動(dòng)閱卷,然而,畢竟不是word 的文件格式,有很多格式信息不能解析。(3)使用VBA 技術(shù)對(duì)word 的對(duì)象模型的屬性進(jìn)行讀取[2],然后判斷每個(gè)對(duì)象屬性是否正確來進(jìn)行評(píng)判,這也是目前使用最多、最有效的方法。
VBA 即Visual Basic for Application,是微軟公司開發(fā)定制和擴(kuò)展Office 功能的宏語言。微軟的Office 中就集成了VBA宏語言,并且提供了訪問文檔的接口,通過接口可以訪問word對(duì)象模型,其中word 對(duì)象模型包括:Application 對(duì)象,該對(duì)象是Microsoft Word 應(yīng)用程序。Dialogs 對(duì)象,每個(gè)Dialog 對(duì)象為一個(gè)word 對(duì) 話 框。Document 對(duì) 象 由characters、words、Sentences 和paragraphs 四個(gè)集合組成;.Page setup 對(duì)象,代表頁面設(shè)置,還有selection 對(duì)象、rang 對(duì)象等幾十個(gè)對(duì)象集合;可以通過對(duì)象的相關(guān)屬性值的檢查來判斷word 操作題要求設(shè)置的格式是否正確,例如,檢查學(xué)生提交的word 文檔的“頁面設(shè)置”是否為題目要求的上下邊距為2.5 厘米,可用如下代碼:
可以把word 的考點(diǎn)進(jìn)行總結(jié)分類,輸入數(shù)據(jù)庫中,例如對(duì)于字體屬性的設(shè)置如表1。這樣的結(jié)構(gòu)可以動(dòng)態(tài)更新,閱卷程序讀取考點(diǎn)并讀取對(duì)應(yīng)的分值,當(dāng)分?jǐn)?shù)的權(quán)重發(fā)生變化時(shí),閱卷程序不用做任何更改,就能讀取到更新后的分值,同時(shí);只要編號(hào)固定,考點(diǎn)的內(nèi)容也可以更新,而不用更改閱卷程序,這樣的設(shè)計(jì)使程序具有更好的適應(yīng)性。
表1
目前,大部分Word 自動(dòng)閱卷程序在對(duì)格式進(jìn)行判斷時(shí),都是根據(jù)屬性標(biāo)記進(jìn)行定位評(píng)判[3],會(huì)存在一定的誤差,比如,學(xué)生在設(shè)置段落格式時(shí),無意按下回車增加了段落標(biāo)記,而很多閱卷程序僅僅根據(jù)第幾個(gè)段落標(biāo)記來定位進(jìn)行段落格式的判斷,這時(shí)就可能使閱卷程序定位到錯(cuò)誤的段落或空段而產(chǎn)生誤判,所以在設(shè)計(jì)時(shí)還要考慮容錯(cuò)性的問題。解決的方案就是根據(jù)文字的內(nèi)容進(jìn)行定位判斷;比如剛才的情況,首先根據(jù)考題要求設(shè)定格式的段落內(nèi)容進(jìn)行搜索匹配,只有找到考生文件中對(duì)應(yīng)的段落,才認(rèn)為定位正確,才能進(jìn)行相應(yīng)的段落屬性的格式判斷,而這種匹配方式就需要采用字符串匹配算法。
但當(dāng)要搜索匹配的文字內(nèi)容很多時(shí),效率往往很低,而word題目通常每段的文字都很多,這樣進(jìn)行匹配就會(huì)大量增加閱卷程序的開銷,甚至?xí)归喚沓绦蛲V鬼憫?yīng)而造成死機(jī)現(xiàn)象,顯然這樣的閱卷程序難以勝任閱卷工作;改進(jìn)的方案就是要減少搜索匹配的次數(shù),因?yàn)?,我們?cè)趯?duì)段落進(jìn)行匹配時(shí),是逐字進(jìn)行比較,整個(gè)段落每個(gè)字都匹配才認(rèn)為是相同的段落內(nèi)容,這樣的比較次數(shù)較多,而且要把匹配段落的整個(gè)內(nèi)容都讀進(jìn)內(nèi)容,系統(tǒng)的開銷也很大,所以,我們可以不進(jìn)行整段的比較,而是提取出若干個(gè)關(guān)鍵詞,進(jìn)行關(guān)鍵詞比較就能有效的提高搜索的效率,可以在匹配段落中按一定的比例設(shè)定關(guān)鍵詞,比如,我們?cè)O(shè)定段落的10%為關(guān)鍵詞的數(shù)量,以100 字的段落為例,則設(shè)定5個(gè)2 字詞為關(guān)鍵詞,并對(duì)這5 個(gè)詞進(jìn)行排序,其中最后一個(gè)詞也保存標(biāo)點(diǎn)。對(duì)目標(biāo)段落按關(guān)鍵詞的順序進(jìn)行搜索匹配,一旦這5個(gè)關(guān)鍵詞按序和某段完全匹配,就可定位這段為目標(biāo)段落,而對(duì)這段的格式進(jìn)行讀取和對(duì)應(yīng)的考點(diǎn)屬性進(jìn)行比較判斷。
例如:有待匹配的段落如下:
廣州市是廣東省省會(huì),廣東省政治、經(jīng)濟(jì)、科技、教育和文化的中心。廣州市地處中國(guó)大陸東南方,廣東省的中南部,珠江三角洲的北緣。接近珠江流域下游入???。其范圍是東經(jīng)112 度57 分至114 度3 分,北緯22 度26 分至23 度56 分。
題目要求設(shè)定這段的屬性是:“對(duì)齊方式為:左對(duì)齊;左縮進(jìn)2 字符,首行縮進(jìn)2 字符,段前間距1 行,行間距:1.5 倍行距”;進(jìn)行閱卷時(shí)首先需要定位到該段落,根據(jù)剛才的規(guī)則,本段文字102 個(gè)字,可選5 個(gè)關(guān)鍵詞,其中段首和段尾為必選關(guān)鍵詞,段尾還要加上標(biāo)點(diǎn),則形成的關(guān)鍵詞串是“廣州 中心 北緣 ???6 分。”把此關(guān)鍵詞加入判題數(shù)據(jù)庫中;當(dāng)閱卷時(shí),閱卷程序會(huì)首先定位該段落,讀取其屬性,比如該段是第5 段;其中的關(guān)鍵代碼如下:
隨后將存入uF01-uF05 的數(shù)據(jù)和數(shù)據(jù)庫中標(biāo)準(zhǔn)答案的F01-F05 的數(shù)據(jù)做比較,相等就在加上對(duì)應(yīng)的分值;然后將數(shù)據(jù)存入到結(jié)果數(shù)據(jù)庫中,最后,匯總給出評(píng)判成績(jī)。
在前述中提到目標(biāo)段落的定位,如果采用逐段每個(gè)字進(jìn)行比較,整段文字包括標(biāo)點(diǎn)每個(gè)字符都要做一次判斷,效率較低,因此,可以使用正則搜索來提高效率。正則搜索即使用正則表達(dá)式搜索,是一種字符串匹配的模式,可以構(gòu)造模式串來檢查一個(gè)串是否和另一個(gè)串匹配,當(dāng)然還能將匹配的子串替換或從某個(gè)串中取出符合條件的子串等。
在編程中使用正則表達(dá)式主要有2 種方式:(1)在VBE 窗口中,選擇“工具”,然后勾選Microsoft VBScript Regular Expressions 5.5 選項(xiàng)。(2)比如使用c#作為編程工具,則需要在命名空間中聲明:using System.Text.RegularExpressions;
其中,還以剛才的匹配文字為例,在待匹配段落中增加了干擾文字,構(gòu)造匹配串如下:
表2
匹配模式串的含義如下:(1)其中“s”表示匹配任意的空白符,包括空格、制表符、換頁符等,表示新段落的開始;(2)其中“S”表示匹配任何可見字符,包括標(biāo)點(diǎn)符號(hào)等;(3)其中“*”表示前面的子表達(dá)式重復(fù)任意次;目的是找尋下一關(guān)鍵字。