劉冰
摘 要:Word操作題涉及文字正確率以及各種圖文混排格式及表格的相關(guān)知識(shí)點(diǎn),讓計(jì)算機(jī)取代人工批改,實(shí)現(xiàn)辦公自動(dòng)化,能夠極大提升工作效率。對(duì)目前自動(dòng)改卷策略進(jìn)行研究與比較,設(shè)計(jì)并實(shí)現(xiàn)基于VBA的Word自動(dòng)閱卷系統(tǒng),對(duì)Office結(jié)果文檔模型進(jìn)行分析,采用VBA獲取文檔內(nèi)容,提取對(duì)象及屬性的方法,并在采用模塊化設(shè)計(jì)的前提下,擺脫對(duì)出題格式限定的問(wèn)題。實(shí)驗(yàn)結(jié)果表明,系統(tǒng)運(yùn)行穩(wěn)定,實(shí)現(xiàn)了大批量學(xué)生Word題目的自動(dòng)閱卷功能,在獲得閱卷正確率的同時(shí),極大減輕了閱卷人員的工作壓力。
關(guān)鍵詞:VBA;自動(dòng)閱卷;文檔模型;辦公自動(dòng)化
DOI:10.11907/rjdk.171659
中圖分類號(hào):TP319 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2017)009-0134-04
Abstract:Word operating-question involves the correct rate of text and photo text format and form related knowledge points. So how to make the computer instead of manual making, so as to achieve office automation, which is the purpose of design the system. Based on the comparison of current automatic marking strategy, the design of the system uses an analysis of the office results document model, to get the document content, extraction methods and attributes of the object by using VBA, and meanwhile modular design can get rid of the problem, which is limit of the setting topic. The experimental results show that the system runs stably, and achieve the automatic marking function of large quantities of students Word topics. It can greatly reduce the pressure of the marking staff while obtaining the correct rate.
Key Words:VBA; automatic scoring; document model; office automation
0 引言
在計(jì)算機(jī)技術(shù)高度發(fā)展的今天,熟練使用計(jì)算機(jī)已經(jīng)成為個(gè)人能力的標(biāo)志?!洞髮W(xué)計(jì)算機(jī)基礎(chǔ)》是我國(guó)各大高校中面向眾多非計(jì)算機(jī)專業(yè)學(xué)生開設(shè)的一門基礎(chǔ)課,旨在促進(jìn)學(xué)生對(duì)計(jì)算機(jī)基礎(chǔ)知識(shí)的了解,以及對(duì)Office這一辦公軟件的熟練使用。除了高校以外,一些單位也要求工作人員掌握這一重要軟件的使用。筆者所在學(xué)校每年學(xué)生期末考試提交的Word操作題達(dá)到近10 000道,作為主觀題,拋開改卷教師人為因素不談,單從工作量和每題中涵蓋的知識(shí)點(diǎn)來(lái)講,平均改一個(gè)學(xué)生的Word題目至少需要3~5分鐘,而且還沒(méi)有考慮文字的正確率,僅僅只是簡(jiǎn)單的肉眼比對(duì)。因此,從解決教師改卷壓力、提高改卷正確率、保證改卷公平的角度來(lái)講,建立一個(gè)批量的、自動(dòng)化閱卷系統(tǒng)尤為必要。
1 現(xiàn)狀分析
目前,Word的自動(dòng)化閱卷大致可以分為兩種解決策略[1]:第一種策略是通過(guò)記錄并分析考生的操作步驟實(shí)現(xiàn)閱卷評(píng)分;第二種策略是通過(guò)分析考生實(shí)際操作的結(jié)果文檔來(lái)實(shí)現(xiàn)閱卷評(píng)分。其中,第一種策略的實(shí)現(xiàn)大致有兩種方法:①構(gòu)建一個(gè)被測(cè)軟件的仿真系統(tǒng),這種方法工作量巨大,如果出現(xiàn)了新的軟件版本,就需要重新構(gòu)建仿真,因此適應(yīng)性很差;②利用Office軟件中提供的宏記錄功能,在出標(biāo)準(zhǔn)題目時(shí)就錄制成功,但是此功能也有著明顯不足:一是針對(duì)每一道題目都必須錄制,重復(fù)性工作量很大,二是針對(duì)不同的判分原則,如果文章內(nèi)容不同而知識(shí)點(diǎn)相同,就存在某種程度的誤判,因此這種策略已經(jīng)很少使用。第二種策略大致可以分為兩種方法,具體如下:
(1)使用微軟Office的VBA(Visual Basic for Applications)技術(shù)。通過(guò)OLE(Object Linking and Embedding)編程調(diào)用Office應(yīng)用的目標(biāo)對(duì)象,獲取文檔內(nèi)容與屬性以實(shí)現(xiàn)評(píng)分;利用VBA技術(shù)分析操作結(jié)果,對(duì)各種版本的Office應(yīng)用兼容性好且容易實(shí)現(xiàn);針對(duì)每個(gè)試題編寫相應(yīng)的閱卷程序段,形成程序段與試題的一一對(duì)應(yīng)關(guān)系。這種閱卷方法的準(zhǔn)確率高,但是VBA需要在宿主軟件上使用,存在一定的局限性。
(2)運(yùn)用Office所提供的文檔描述信息進(jìn)行閱卷評(píng)分。Office文檔從結(jié)構(gòu)上主要有文檔主體信息與文檔描述頭信息兩個(gè)部分,通過(guò)解析文檔描述頭信息可以得到文檔中相關(guān)對(duì)象的描述,再與標(biāo)準(zhǔn)文檔對(duì)應(yīng)信息進(jìn)行比較來(lái)實(shí)現(xiàn)評(píng)分。但是這種方法的前提是限制文檔的格式標(biāo)準(zhǔn)。
2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
系統(tǒng)采用仿照人工閱卷的模式即結(jié)果型評(píng)分,即不考慮學(xué)生的操作過(guò)程[2],僅判斷操作后的文檔中試題涉及的Word對(duì)象的結(jié)果狀態(tài)是否與試題要求一致,進(jìn)而對(duì)操作評(píng)分。其中,最關(guān)鍵的技術(shù)是打開相應(yīng)考生試題文檔、對(duì)試題相關(guān)的Word對(duì)象屬性和方法進(jìn)行提取和轉(zhuǎn)換。
2.1 技術(shù)平臺(tái)
VBA是微軟公司開發(fā)的程序語(yǔ)言,可以嵌入到軟件中。在支持VBA的軟件中可以用VBA進(jìn)行自動(dòng)化工作。所有主要的Office程序如Word、Excel、PowerPoint等辦公組件中都支持VBA。VBA 提供了訪問(wèn)Office文檔的接口,包含大量針對(duì)該類文檔的函數(shù)和對(duì)象,使用VBA 編程可以對(duì)文檔中各對(duì)象的屬性和狀態(tài)進(jìn)行識(shí)別和讀取,這為系統(tǒng)實(shí)現(xiàn)打下了基礎(chǔ)。但是VBA本身是需要宿主軟件支撐的[3],即無(wú)法脫離Word程序獨(dú)立運(yùn)行,所以系統(tǒng)采用的VB6.0[4]首先是為了創(chuàng)建Word對(duì)象,為使用VBA設(shè)計(jì)合理框架,其次可以方便UI設(shè)計(jì),同時(shí)結(jié)合本校非計(jì)算機(jī)專業(yè)的考試模式選用Excel進(jìn)行成績(jī)統(tǒng)計(jì),可以方便后期維護(hù)和網(wǎng)上成績(jī)上傳。endprint
2.2 系統(tǒng)策略
軟件設(shè)計(jì)的整體目標(biāo)是為了最大程度地實(shí)現(xiàn)Word文檔知識(shí)點(diǎn)識(shí)別的合理性,這樣才可以保證考生得到合理的分?jǐn)?shù)。基于此特點(diǎn),設(shè)計(jì)系統(tǒng)框架如圖1所示。
數(shù)據(jù)進(jìn)入主要指兩個(gè)待比對(duì)的Word文檔,數(shù)據(jù)輸出主要指最終得到的學(xué)生分?jǐn)?shù)及評(píng)分情況記錄。最重要的是處理模塊,此模塊的重點(diǎn)在于要進(jìn)行兩次處理:預(yù)處理階段和二次處理階段。這樣設(shè)計(jì)的原因在于,如果僅僅是提取Word格式等知識(shí)點(diǎn)比對(duì),會(huì)出現(xiàn)一種問(wèn)題,即文字內(nèi)容可以隨意輸入,比如整篇文字都是“中”字(跟標(biāo)準(zhǔn)文檔嚴(yán)重不吻合),而那些常見(jiàn)的排版知識(shí)點(diǎn),如段落格式、字體格式、圖片等依然正確,如圖2所示。
通過(guò)第一次預(yù)處理階段操作,提取出學(xué)生文檔和標(biāo)準(zhǔn)文檔的純文字部分,然后利用建立起標(biāo)準(zhǔn)文檔的數(shù)據(jù)字典,再利用算法比對(duì)文字輸入正確的情況,為后期進(jìn)行格式知識(shí)點(diǎn)判斷給出指導(dǎo)分?jǐn)?shù)。
在二次處理階段,設(shè)計(jì)的操作是分別對(duì)Word文檔對(duì)象[5]中的各種屬性進(jìn)行比對(duì),包括字符格式化、段落格式化、頁(yè)面格式化、表格及圖文混排等。每個(gè)大知識(shí)點(diǎn)下又包括很多小的知識(shí)點(diǎn),比如字體屬性,包括字體類型、字體大小、字體顏色、下劃線;表格有行高、列寬、表格的邊框和底紋等[6]。因此,將每個(gè)知識(shí)點(diǎn)分成不同的模塊,通過(guò)模塊來(lái)實(shí)現(xiàn)各知識(shí)點(diǎn)內(nèi)容的判斷。同時(shí),這樣的模塊化設(shè)計(jì)也方便后期不同考試標(biāo)準(zhǔn)的制訂修改。
2.3 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)流程如圖3所示。在初始化階段,需要利用VB建立起Word的后臺(tái)服務(wù),這樣就可以開始使用VBA。但要注意到VBA操作Office文檔對(duì)象時(shí),即在整個(gè)閱卷的過(guò)程中是不能夠被打斷的,而且當(dāng)連續(xù)批改多份試卷文檔時(shí),會(huì)在下一次打開文檔時(shí),產(chǎn)生錯(cuò)誤代碼“462”,即“遠(yuǎn)程服務(wù)不存在或不能使用”。解決方法是:在打開Word只初始化一次,然后改完一份試卷時(shí),不退出Word服務(wù),只是關(guān)閉相應(yīng)文檔,等到所有文檔批閱完畢后,最終退出Word的Application[7]。
實(shí)現(xiàn)代碼如下:
Public xlm As Excel.Application
Public wrd As Word.Application
Set Form1.wrd = New Word.Application
Form1.wrd.Visible = True
Set xlm = CreateObject("Excel.Application") '打開電子表格,用于統(tǒng)計(jì)分?jǐn)?shù)結(jié)果
xlm.Visible = True
上述步驟實(shí)現(xiàn)了Word和Excel的Application的后臺(tái)駐留。
2.3.1 預(yù)處理階段
為了獲得純文字,考察出學(xué)生文字輸入能力,就需要排除多余的干擾因素,比如有些學(xué)生會(huì)在插入圖片時(shí)保留“畫布”,還有些人會(huì)添加制表符"^t"或手工回車符"^l"及手工分頁(yè)符"^m"等。
實(shí)現(xiàn)算法如下:
Dim stutem$, biaotem用來(lái)保存兩個(gè)臨時(shí)的學(xué)生文檔名和標(biāo)準(zhǔn)文檔名
然后調(diào)用多個(gè)剔除因素的模塊:
Call tihuan(stuname, biaoname, cishustu, cishubiao)
剔除手工插入的回車符、分頁(yè)符等。
Call table_move(stuname, biaoname, cishustu, cishubiao, biaotem, stutem)
調(diào)用移除表格
……
Call creat_dict(a(), b(), stuchang, biaochang, numstu, numbiao, stuname, biaoname)
調(diào)用建立兩個(gè)數(shù)據(jù)字典的模塊。
到此為止,系統(tǒng)得到了純文字部分。
Dim wrcount As Integer, wrnum1 As Integer, wrhfnum As Integer
wrcount = wenzipan(a(), b(), stuchang, biaochang)
這里調(diào)用一個(gè)函數(shù)判斷文字的正確率,即比對(duì)學(xué)生的文字字典和標(biāo)準(zhǔn)的文字字典。
If wrcount > 200 Then wrcount = 200
這里依照考試評(píng)分標(biāo)準(zhǔn)(本校是打字占10分)
錯(cuò)字超過(guò)200字,就按200個(gè)錯(cuò)算,因?yàn)槊?0個(gè)字,扣1分,最多扣10分。
fenshu = fenshu-wrcount \\ 20
Print #1, "因?yàn)樽謹(jǐn)?shù)的問(wèn)題,錯(cuò)字的問(wèn)題,學(xué)生還剩分?jǐn)?shù)="; fenshu
將扣分情況寫入到文本文件#1,以便查閱。
2.3.2 二次處理階段
此階段先處理對(duì)各種圖文混排格式知識(shí)點(diǎn)的提取,由于點(diǎn)太多,這里只對(duì)標(biāo)題判斷的算法處理作介紹。Word中的標(biāo)題一般是藝術(shù)字或者樣式格式,標(biāo)準(zhǔn)文檔里是很正規(guī)的某個(gè),而學(xué)生文檔可是會(huì)出現(xiàn)各種各樣的形式,在算法中都需要注意到。
模塊設(shè)3個(gè)參數(shù),分別用來(lái)代表兩個(gè)文檔名和分?jǐn)?shù):
Sub biaoti(ByVal stuname As String, ByVal biaoname$, wrbiao As Integer)
先設(shè)flag標(biāo)志變量:
For 從段落1到尾部
If Documents(biaoname).Paragraphs(i).Style 即不是正文也不是純文本Then
段落樣式如果不是正文,那肯定是樣式:endprint
b(1) = Documents(biaoname).Paragraphs(i).Style '樣式名
b(2) = Documents(biaoname).Paragraphs(i).Range.Text '標(biāo)題內(nèi)容
b(3) = Documents(biaoname).Paragraphs(i).Alignment '標(biāo)題對(duì)齊方式
flag = True '找到標(biāo)志
Exit For
Elseif Documents(biaoname).Paragraphs(i).Range.Text <> vbCr Then
否則如果不是樣式,則肯定是正文,先判斷是否為空段落。
For Each cc In Documents(biaoname).InlineShapes '按照嵌入式圖片考慮
If cc.AlternativeText <> "" Then '此條件用來(lái)判斷是否為藝術(shù)字
b(1) = Documents(biaoname).Paragraphs(i).Style
'由于嵌入也屬于正文,所以可以用段落的樣式,但結(jié)果肯定是正文樣式
b(2) = cc.TextEffect.Text '藝術(shù)字的內(nèi)容
b(3) = Documents(biaoname).Paragraphs(i).Alignment '段落的對(duì)齊方式
flag = True
End If
If flag = True Then Exit For '找到,就退出
Next
End If
Next i
If flag <> True Then '若既不是標(biāo)準(zhǔn)標(biāo)題,也不是嵌入式,則考慮環(huán)繞的藝術(shù)字
后續(xù)還需要對(duì)學(xué)生的文檔進(jìn)行同樣的操作,然后比較兩個(gè)數(shù)組a和b,得出知識(shí)點(diǎn)的評(píng)分結(jié)論。
3 系統(tǒng)操作與效果
本系統(tǒng)重在操作的方便性,開始階段,只需要用戶確定出標(biāo)準(zhǔn)文檔的目錄位置,然后選取需要評(píng)閱的學(xué)生文檔(可以多份)。
為了讓用戶能夠方便地觀察閱卷情況,系統(tǒng)在界面的底部設(shè)置了狀態(tài)欄,顯示出總共選定的文件數(shù)目、正在處理的文件名字,而且特別加入了常規(guī)等待過(guò)程中的進(jìn)度條,如圖4所示。
實(shí)際測(cè)試結(jié)果如表1所示,改卷效率得以極大提升。
4 結(jié)語(yǔ)
本文基于VBA技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了Word自動(dòng)閱卷系統(tǒng)。該系統(tǒng)能夠消除以往人工閱卷過(guò)程中主觀因素造成的對(duì)試卷的誤判、漏判。此外,還加入了對(duì)提交多份試卷取最高分的判斷功能,極大減輕了教師閱卷的工作壓力。實(shí)際應(yīng)用表明,該系統(tǒng)能夠穩(wěn)定、高效地運(yùn)行。后續(xù)將在文章查重方面作深入研究,爭(zhēng)取取得新的突破。
參考文獻(xiàn):
[1] 湯克明,陳峻.Word自動(dòng)閱卷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2008,44(35):69-72.
[2] 林關(guān)成.基于VBA的Office操作題自動(dòng)閱卷技術(shù)研究[J].信息技術(shù),2013(7):83-86
[3] GUY HART-DAVIS.VBA從入門到精通[M].第2版.楊密,楊樂(lè),柯樹森,譯.北京:電子工業(yè)出版,2008.
[4] 鄭阿奇.Visual Basic教程[M].第2版.北京:清華大學(xué)出版社,2010.
[5] 王亞利,李井竹.Word操作題自動(dòng)閱卷技術(shù)的研究與實(shí)現(xiàn)[J].寧波職業(yè)技術(shù)學(xué)院學(xué)報(bào),2009,13(2):84-87.
[6] 劉玉梅.用VBA的Word操作題自動(dòng)閱卷方法的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)教育,2007(24):146-149.
[7] 廖麗嶸.基于VBA的自動(dòng)改卷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù):學(xué)術(shù)學(xué)流,2011,7(19):4594-4595.
(責(zé)任編輯:孫 娟)endprint