【摘要】針對大學(xué)英語教材編寫中的詞語/詞組控制問題,采用Perl和VB/VBA在Word環(huán)境下設(shè)計了一個特定詞語、詞組高亮凸顯的計算機(jī)輔助標(biāo)注系統(tǒng)。系統(tǒng)分為離線生詞抽取和在線實際標(biāo)注兩個步驟,界面友好,稍加擴(kuò)展適合各類語言類教材的編寫。
【關(guān)鍵詞】凸顯;教材編寫;詞語控制;Perl;Visual Basic/VBA
【中圖分類號】G623.31 【文獻(xiàn)標(biāo)識碼】B 【論文編號】1009—8097 (2008) 02—0097—04
一 引言
英語教材編寫突出的問題就是對教材詞匯的控制。詞語復(fù)現(xiàn)和詞語難度控制是衡量語言教材質(zhì)量的一個重要標(biāo)準(zhǔn)。然而對教材的評估在實踐中由于缺乏有效工具和方法,很難得到準(zhǔn)確的數(shù)據(jù)和量化分析[1]。有學(xué)者專門研究過教材詞匯的選擇標(biāo)準(zhǔn),如可教性、類似性、實用性、覆蓋面及定義能力等[2]。在教材編寫過程中,哪些詞語在使用該教材前就該掌握,補(bǔ)充新詞語應(yīng)該安排在第幾課,重要詞語如何復(fù)現(xiàn)等問題經(jīng)常困擾教材編寫者。當(dāng)前詞匯遴選和控制主要由教材的編者和編審人員憑個人經(jīng)驗手工實現(xiàn)。
在當(dāng)前教材編寫過程中,雖然計算機(jī)操作,特別是字處理軟件的應(yīng)用已經(jīng)取代手工勞動,但這僅停留在工作方式的改變。一些方便快捷的機(jī)器輔助處理仍比較缺乏。譬如,對教材詞匯量的控制軟件就沒有。
本文用Perl[3]和VB/ VBA [4]作為開發(fā)語言,在Word環(huán)境開發(fā)了一個特定詞語/詞組的凸顯工具,方便英語教材編者進(jìn)行教材編寫質(zhì)量的控制。
二 系統(tǒng)設(shè)計
1 用戶分析
目標(biāo)用戶是在Windows平臺利用Word進(jìn)行英語教材編寫的編輯人員。他們具備基本計算機(jī)操作技能,但并非計算機(jī)專家。他們希望在其熟悉界面完成工作,因此系統(tǒng)應(yīng)滿足方便易用原則。
2 設(shè)計要求
教材編寫和初步編校在Word下完成,系統(tǒng)應(yīng)能在編輯具體某篇課文時,在屏幕上以不同顏色高亮凸顯特定詞語/詞組內(nèi)容,即(1)凸顯該套教材中在該課文首次出現(xiàn)的單詞(即生詞);(2)以不同顏色凸顯大學(xué)英語大綱中不同等級的詞語(如初、中、高級);(3)凸顯特定專名信息;(4)凸顯某一英語學(xué)習(xí)階段必須掌握的詞組。
假定當(dāng)前編輯第4課,有靜態(tài)詞表中不存在的詞語unlock,并且在前三課沒有出現(xiàn)過該詞,那么就應(yīng)凸顯該詞語。
本系統(tǒng)通過屏幕直觀顯示,方便編輯和審校掌握本套教材中的詞語使用情況,有針對性地調(diào)整教材文本的選篇和文章排序。
3 性能描述
系統(tǒng)設(shè)計盡可能全地標(biāo)識出需要特別顯示的詞語/詞組。對召回率要求較高,而準(zhǔn)確率相對沒有太高要求。因為教材編寫是一個腦力勞動過程,校對、審核都需要編者的交互。凸顯部分能夠縮小用戶檢查范圍。
三 數(shù)據(jù)庫資源準(zhǔn)備
系統(tǒng)數(shù)據(jù)庫有中學(xué)英語課程標(biāo)準(zhǔn)詞匯表、大學(xué)英語教學(xué)大綱分級詞匯手冊及詞組表、專名詞表和用于解決實際文本詞語和詞典中記錄的詞目詞不一致的詞形還原表。
根據(jù)目標(biāo)需求,數(shù)據(jù)庫設(shè)置6張表。表basicLex是中學(xué)大綱詞匯,只有詞形字段。highLex和phrase分別是大學(xué)英語教學(xué)大綱的參考詞表和詞組表,前者有詞形及不同等級字段,等級采用初級(B)、中級(I)和高級(H)三個級別;后者只有詞形式字段。lemma表有兩個字段,其一為文中實際可能出現(xiàn)的詞形,其二為相應(yīng)的詞語原形。專名表Proper只有詞形。上述各表是各類大學(xué)英語教材編寫普遍適用的資源。動態(tài)詞表tempWord則針對特定教材編纂,根據(jù)不同課文中的實際詞語動態(tài)生成,字段設(shè)計為詞形和該詞在實際編寫教材出現(xiàn)的先后次序。
表1示例表明數(shù)據(jù)庫實際存儲的實例。帶有括號者表示詞形和括號內(nèi)字段形式共同構(gòu)成某一記錄的實際表示,如在HighLex中abandon屬于B類;lemma中children一詞與child具有同一性;tempWord中unlock在當(dāng)前教材編寫中首次出現(xiàn)在第4課。
大學(xué)英語教學(xué)參考大綱詞表與中學(xué)英語課程標(biāo)準(zhǔn)詞匯表有不少重復(fù)的地方,尤其是大學(xué)初級詞匯(B級)。設(shè)計數(shù)據(jù)表時,應(yīng)該剔出中學(xué)詞匯,我們設(shè)計了一個小工具,進(jìn)行詞表整理,防止在詞語凸顯時把應(yīng)該掌握的中學(xué)詞語當(dāng)作作為大學(xué)初級詞匯高亮顯示。
四 程序?qū)崿F(xiàn)方法
整個標(biāo)注系統(tǒng)的實現(xiàn)分為兩個階段:脫線的數(shù)據(jù)準(zhǔn)備和在線實際文本標(biāo)注。標(biāo)注時有些資源具有普適性,可以在系統(tǒng)運(yùn)行前準(zhǔn)備好,如各類大綱詞表和lemma轉(zhuǎn)換底表等。圍繞特定教材編寫的生詞表創(chuàng)建則需要根據(jù)實際文本動態(tài)生成,需要特別處理。
1 構(gòu)建服務(wù)于特定教材的生詞庫
(1) 采用Perl實現(xiàn)抽詞模塊
考慮到系統(tǒng)實現(xiàn)過程的快捷開發(fā),我們采用Perl作為生詞抽取的主要工具。因為Perl語言不僅具有強(qiáng)大的文本字符串處理能力,比如正則表達(dá)式和內(nèi)置的哈希變量等;又由于解釋執(zhí)行,方便調(diào)試;同時Windows平臺下的ActiveState Perl還提供PDK開發(fā)包,可將腳本轉(zhuǎn)化為動態(tài)鏈接庫(DLL)和可執(zhí)行程序(EXE)形式,并能脫離Perl解釋器,這就使用戶無需安裝Perl環(huán)境,也能享受Perl開發(fā)帶來的便利。
生詞抽取程序假定教材每課課文自成一個單獨文本文件。本步驟接受的輸入是一個記錄課文文件名列表的文件;輸出是一個記錄生詞及首次出現(xiàn)位置的文件。
輸入文件格式為每行一個課文文件名,排列順序按其在課文目錄的先后,譬如第1冊有10篇課文,按照教材目錄順序排列;若是多冊課文,則每下冊課文緊隨上冊課文后排列,如第2冊第1課緊隨第1冊第10課文件名之后。
由于生詞抽取程序抽取的是超出各類大綱之外的新詞語,因此,程序所需資源是前文所指的各類大綱詞表。在系統(tǒng)初始化階段,首先讀入這些詞表,通過Perl內(nèi)置的哈希變量記錄各詞語信息,作為下一步分析課文中出現(xiàn)的詞語是否為生詞的依據(jù)。
系統(tǒng)處理從讀取用戶輸入的課文文件名列表入手,置計數(shù)器為0,按行讀入每一個課文文件名,并累計計數(shù),以該實際文件名和計數(shù)值作為參數(shù),調(diào)用具體處理模塊。
在被調(diào)用程序中,系統(tǒng)首先讀入調(diào)用程序傳遞過來的文件名所指向的文件內(nèi)容,通過正則表達(dá)式過濾標(biāo)點等無關(guān)信息內(nèi)容;采用Perl系統(tǒng)函數(shù)Split以空格為分隔標(biāo)識,切分課文為單詞串;再根據(jù)系統(tǒng)初始化階段構(gòu)造的詞語哈希表信息,清除必須掌握的各類大綱詞語;針對上述處理剩余下來的詞語,構(gòu)造一個新的用來存儲生詞及其首次出現(xiàn)位置的哈希表。如果是首次出現(xiàn),則將該單詞及其傳遞過來的計數(shù)值輸出到一個特定文件中。這樣便能保存生詞在教材中首次出現(xiàn)的課文位置。
Perl腳本通常在命令行下由Perl解釋器逐步執(zhí)行。我們利用PDK工具編譯生成一個能在Windows下獨立運(yùn)行的可執(zhí)行程序。
(2) 采用VB實現(xiàn)圖形界面
由于教材編校人員不是計算機(jī)專業(yè)人員,命令行輸入對其計算機(jī)水平要求太高。因此一個方便易用的界面至關(guān)重要。
我們采用VB作為前端,設(shè)計了一個圖形化的交互環(huán)境,將后臺實際執(zhí)行處理運(yùn)算的Perl程序隱藏起來。用戶只需通過鼠標(biāo)操作就能完成從一套教材所有課文抽取生詞并導(dǎo)入數(shù)據(jù)庫的工作。設(shè)計界面如圖1所示。
工作步驟處理流程如下:第一步通過對話框控件得到用戶指定的文件名列表,即獲取要處理的整套教材中所有課文;第二步以該文件名作為輸入?yún)?shù),采用Shell方式調(diào)用Perl程序執(zhí)行生詞及其首次出現(xiàn)位置的抽??;第三步利用DAO對象庫將第二步Perl處理結(jié)果數(shù)據(jù)導(dǎo)入今后實際標(biāo)注階段要使用的Access數(shù)據(jù)庫中;第四步結(jié)束整個處理過程。
VB和Perl程序之間的Shell調(diào)用采用異步方式實現(xiàn),這使得在系統(tǒng)執(zhí)行過程中,有可能存在Perl負(fù)責(zé)的文本處理過程尚未結(jié)束,而VB主控程序就已經(jīng)跳入數(shù)據(jù)庫導(dǎo)入階段,造成系統(tǒng)出錯的狀態(tài)。因此我們引入IsRunning函數(shù)判斷Perl調(diào)用處理是否完成,只有當(dāng)Perl進(jìn)程結(jié)束之后,才能進(jìn)入下一流程的處理。
生詞抽取處理需要一定時間,為防止用戶面對系統(tǒng)不知所措,我們采用分步驟處理的辦法,利用顏色改變作為上一階段處理是否結(jié)束的標(biāo)志。譬如,系統(tǒng)在執(zhí)行第一步時,其他步驟的信息和按鈕都是灰色的,處于非激活狀態(tài),這樣可規(guī)范并控制用戶的執(zhí)行順序。只有當(dāng)前一步驟運(yùn)行完成后,緊隨其后某一步驟的顏色變成藍(lán)色,用戶才可以點擊對應(yīng)的本步驟按鈕,執(zhí)行相應(yīng)操作。
2 教材特定詞語/詞組的標(biāo)注
上一小節(jié)采用VB+Perl實現(xiàn)了圍繞特定一套教材的生詞的動態(tài)生成。結(jié)合原有詞表等數(shù)據(jù)信息,在本節(jié)中我們將完成在Word環(huán)境下對課文特定詞語的突出顯示。一個工作樣例見圖2所示。
由于Word是教材編寫用戶的主要工作環(huán)境,又由于Office軟件強(qiáng)大的二次開發(fā)功能,我們采用Word VBA開發(fā)一個特定詞語/詞組凸顯模板,可無縫加載到Word的菜單欄和工具欄中。
(1) 詞語的凸顯
詞語凸顯包括大學(xué)英語大綱不同等級詞語、當(dāng)前課文新出現(xiàn)的生詞及專名等詞語,以不同顏色區(qū)分。這些詞語基本都是單個詞語,在文本中是以空格分開的字符串。
目前設(shè)計是大學(xué)詞語B類為綠色、I類為黃色、H類為紅色;新詞語用藍(lán)色特別標(biāo)出;專名采用暗黃色顯示。
Word VBA提供一個Words集合對象,能夠直接獲得當(dāng)前編輯文檔中所有詞語構(gòu)成的詞集。Words 集合的每一項都代表一個單詞的Range對象,可以修改其格式屬性,無需計算單詞顏色改變的起始和終止位置,而直接對單詞進(jìn)行凸顯操作。故此,我們對詞語的高亮標(biāo)注采用Words對象。
并非Words集合的每個元素都是一個合適的詞語,如純數(shù)字串、標(biāo)點、控制字符等都可能囊括其中。在實際處理過程中,對一些不合法的誤輸入也應(yīng)有識別過濾機(jī)制。為此,我們編寫專門的checkString函數(shù),檢查Words集合中每個元素aWord的合法性。正常情況下,函數(shù)返回值是可用來進(jìn)行數(shù)據(jù)庫查詢的詞語candidate。這樣可防止系統(tǒng)誤將一個不合法詞當(dāng)作新出現(xiàn)的生詞。
課文詞語在上下文語境中可能有不同的曲折形式,如動詞的人稱及時態(tài)變化、名詞的單復(fù)數(shù)變化等,所有這些造成文中詞語與詞典記載的詞目形式不盡相同,為此需要引入詞形還原。實際處理時,我們根據(jù)一個大規(guī)模lemma底表,引入VBScript Regular Expression組件調(diào)用,創(chuàng)建Dictionary對象,構(gòu)造文本詞語與詞典詞形的對應(yīng)關(guān)系。
標(biāo)注過程是遍歷當(dāng)前編輯文檔中Words集合的每個合法詞語完成的。遍歷過程中,分別用當(dāng)前詞語實際詞形和詞典還原形式,到各類詞表數(shù)據(jù)庫中進(jìn)行匹配檢索,如果在某個特定數(shù)據(jù)表的詞形字段能夠檢出相應(yīng)的詞語,即Found函數(shù)的返回值為True,則根據(jù)預(yù)先定義的顯示格式規(guī)范,對該詞語改變其字體顏色屬性,實現(xiàn)計算機(jī)屏幕的詞語凸顯。該部分偽代碼形式如下:
(2) 詞組的凸顯
詞組凸顯可分為兩類:一類是由連續(xù)詞串構(gòu)成的詞組,一類是由隔離詞串構(gòu)成的詞組。前者如go through,可當(dāng)作整體來看;后者如neither…nor…,中間可插入數(shù)量不等的其他詞語。兩者識別策略不盡相同。
詞組一般都在某一句子內(nèi),基本不跨句出現(xiàn)。因此對詞組的查找限定在句子范圍,具體到編程,采用Word VBA的Sentences集合對象,它能提取出選定部分、區(qū)域或文檔中的所有句子。
① 連續(xù)詞串的詞組凸顯
通過讀入詞組表,構(gòu)造詞組的dictionary對象,再對文檔Sentences集合對象的每一項,逐次檢查是否包含有某一特定詞組,并根據(jù)該詞組在文本的起止范圍改變特定的字體顏色。該部分偽代碼如下:
處理對象是每一個句子,需要改變顏色的只是句中構(gòu)成詞組的某些詞語。因此應(yīng)記錄變色詞語在句中的偏移位置,同時還應(yīng)記錄該句在整篇文檔的偏移位置,這樣才能準(zhǔn)確獲得構(gòu)成詞組的詞語變色范圍在全文的絕對位置。
實際處理時,引入Lemma操作,匹配時注重的是詞語原形的比較,但凸顯時應(yīng)還原為文本實際形式。這種變換往往改變詞語長度,引起顏色標(biāo)注錯位。我們發(fā)現(xiàn)根據(jù)詞語在句中的相對位置,比絕對位置要相對簡單并且準(zhǔn)確。處理方法如下:
將原始句切分為詞向量,以數(shù)組體現(xiàn);對lemma后的變換句同樣操作。采用詞組底表中的詞組在變換句中匹配,記錄變色詞語在變換句中相對首詞出現(xiàn)的偏移位置,再到相應(yīng)的原始句中尋找對應(yīng)詞語所處的絕對位置,可以準(zhǔn)確定位顏色變更顯示的區(qū)域。
② 非連續(xù)詞串的詞組凸顯
非連續(xù)詞串的詞組可以分成若干部分。單獨每個部分是連續(xù)詞串。如詞組as far as…be concerned,由…分隔為兩部分,需要分別檢索。
標(biāo)注時,按句讀入文本內(nèi)容后,對句中可能要標(biāo)注的詞組每個部分,直接采用連續(xù)詞串的詞組檢索方法。在確認(rèn)某一詞組的全部構(gòu)件都已匹配后,才能確定對其進(jìn)行高亮顯示。有關(guān)該部分的詞語凸顯偽代碼如下:
五 結(jié)語
本文就大學(xué)英語教材編寫過程中的詞語控制問題,采用Perl和VB/VBA設(shè)計了一個計算機(jī)輔助特定內(nèi)容高亮顯示的工具,既具有良好用戶界面,又使開發(fā)人員利用便捷開發(fā)工具,縮短工程周期。經(jīng)過初步試用,系統(tǒng)較好實現(xiàn)了原有設(shè)計思想。
本文所述高亮顯示方法具有通用性。靜態(tài)詞表可以方便擴(kuò)充完善,而生詞抽取程序也適用不同教材編寫工作,譬如引入各類考試詞表等,可以完成考試輔導(dǎo)類教程的編寫。由于本系統(tǒng)的宿主對象Word的Words對象內(nèi)部具備漢語分詞功能,稍加改變,也可以用于漢語教材的編寫。
應(yīng)該指出的是,本系統(tǒng)只是一個工程實現(xiàn)。要達(dá)到更好處理效果,還需要引入更高層的句法處理。當(dāng)前還只是直接采用Lemma底表對照的詞語還原技術(shù),某些以-ed或-ing等形式結(jié)尾的詞語,有可能因為被Lemma底表收錄而造成錯誤還原,造成誤標(biāo)。因此一個好的Lemma底表或更好的句法分析技術(shù)將有助于此類問題的解決。
參考文獻(xiàn)
[1]趙勇,鄭樹棠. 幾個國外英語教材評估體系的理論分析[J]. 外語教學(xué), 2006, 27(3).
[2]Richards,J.C. Curriculum Development in Language Teaching [M]. Cambridge: Cambridge University Press, 2001.
[3]Brown, M著,顧凱等譯.Perl參考大全[M].北京:人民郵電出版社,2002.
[4]Sanna, P.等著, 沈剛,劉景華等譯. Visual Basic for Applications 5開發(fā)使用手冊[M].北京: 機(jī)械工業(yè)出版社,1997.