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