【摘要】針對大學英語教材編寫中的詞語/詞組控制問題,采用Perl和VB/VBA在Word環境下設計了一個特定詞語、詞組高亮凸顯的計算機輔助標注系統。系統分為離線生詞抽取和在線實際標注兩個步驟,界面友好,稍加擴展適合各類語言類教材的編寫。
【關鍵詞】凸顯;教材編寫;詞語控制;Perl;Visual Basic/VBA
【中圖分類號】G623.31 【文獻標識碼】B 【論文編號】1009—8097 (2008) 02—0097—04
一 引言
英語教材編寫突出的問題就是對教材詞匯的控制。詞語復現和詞語難度控制是衡量語言教材質量的一個重要標準。然而對教材的評估在實踐中由于缺乏有效工具和方法,很難得到準確的數據和量化分析[1]。有學者專門研究過教材詞匯的選擇標準,如可教性、類似性、實用性、覆蓋面及定義能力等[2]。在教材編寫過程中,哪些詞語在使用該教材前就該掌握,補充新詞語應該安排在第幾課,重要詞語如何復現等問題經常困擾教材編寫者。當前詞匯遴選和控制主要由教材的編者和編審人員憑個人經驗手工實現。
在當前教材編寫過程中,雖然計算機操作,特別是字處理軟件的應用已經取代手工勞動,但這僅停留在工作方式的改變。一些方便快捷的機器輔助處理仍比較缺乏。譬如,對教材詞匯量的控制軟件就沒有。
本文用Perl[3]和VB/ VBA [4]作為開發語言,在Word環境開發了一個特定詞語/詞組的凸顯工具,方便英語教材編者進行教材編寫質量的控制。
二 系統設計
1 用戶分析
目標用戶是在Windows平臺利用Word進行英語教材編寫的編輯人員。他們具備基本計算機操作技能,但并非計算機專家。他們希望在其熟悉界面完成工作,因此系統應滿足方便易用原則。
2 設計要求
教材編寫和初步編校在Word下完成,系統應能在編輯具體某篇課文時,在屏幕上以不同顏色高亮凸顯特定詞語/詞組內容,即(1)凸顯該套教材中在該課文首次出現的單詞(即生詞);(2)以不同顏色凸顯大學英語大綱中不同等級的詞語(如初、中、高級);(3)凸顯特定專名信息;(4)凸顯某一英語學習階段必須掌握的詞組。
假定當前編輯第4課,有靜態詞表中不存在的詞語unlock,并且在前三課沒有出現過該詞,那么就應凸顯該詞語。
本系統通過屏幕直觀顯示,方便編輯和審校掌握本套教材中的詞語使用情況,有針對性地調整教材文本的選篇和文章排序。
3 性能描述
系統設計盡可能全地標識出需要特別顯示的詞語/詞組。對召回率要求較高,而準確率相對沒有太高要求。因為教材編寫是一個腦力勞動過程,校對、審核都需要編者的交互。凸顯部分能夠縮小用戶檢查范圍。
三 數據庫資源準備
系統數據庫有中學英語課程標準詞匯表、大學英語教學大綱分級詞匯手冊及詞組表、專名詞表和用于解決實際文本詞語和詞典中記錄的詞目詞不一致的詞形還原表。
根據目標需求,數據庫設置6張表。表basicLex是中學大綱詞匯,只有詞形字段。highLex和phrase分別是大學英語教學大綱的參考詞表和詞組表,前者有詞形及不同等級字段,等級采用初級(B)、中級(I)和高級(H)三個級別;后者只有詞形式字段。lemma表有兩個字段,其一為文中實際可能出現的詞形,其二為相應的詞語原形。專名表Proper只有詞形。上述各表是各類大學英語教材編寫普遍適用的資源。動態詞表tempWord則針對特定教材編纂,根據不同課文中的實際詞語動態生成,字段設計為詞形和該詞在實際編寫教材出現的先后次序。
表1示例表明數據庫實際存儲的實例。帶有括號者表示詞形和括號內字段形式共同構成某一記錄的實際表示,如在HighLex中abandon屬于B類;lemma中children一詞與child具有同一性;tempWord中unlock在當前教材編寫中首次出現在第4課。
大學英語教學參考大綱詞表與中學英語課程標準詞匯表有不少重復的地方,尤其是大學初級詞匯(B級)。設計數據表時,應該剔出中學詞匯,我們設計了一個小工具,進行詞表整理,防止在詞語凸顯時把應該掌握的中學詞語當作作為大學初級詞匯高亮顯示。

四 程序實現方法
整個標注系統的實現分為兩個階段:脫線的數據準備和在線實際文本標注。標注時有些資源具有普適性,可以在系統運行前準備好,如各類大綱詞表和lemma轉換底表等。圍繞特定教材編寫的生詞表創建則需要根據實際文本動態生成,需要特別處理。
1 構建服務于特定教材的生詞庫
(1) 采用Perl實現抽詞模塊
考慮到系統實現過程的快捷開發,我們采用Perl作為生詞抽取的主要工具。因為Perl語言不僅具有強大的文本字符串處理能力,比如正則表達式和內置的哈希變量等;又由于解釋執行,方便調試;同時Windows平臺下的ActiveState Perl還提供PDK開發包,可將腳本轉化為動態鏈接庫(DLL)和可執行程序(EXE)形式,并能脫離Perl解釋器,這就使用戶無需安裝Perl環境,也能享受Perl開發帶來的便利。
生詞抽取程序假定教材每課課文自成一個單獨文本文件。本步驟接受的輸入是一個記錄課文文件名列表的文件;輸出是一個記錄生詞及首次出現位置的文件。
輸入文件格式為每行一個課文文件名,排列順序按其在課文目錄的先后,譬如第1冊有10篇課文,按照教材目錄順序排列;若是多冊課文,則每下冊課文緊隨上冊課文后排列,如第2冊第1課緊隨第1冊第10課文件名之后。
由于生詞抽取程序抽取的是超出各類大綱之外的新詞語,因此,程序所需資源是前文所指的各類大綱詞表。在系統初始化階段,首先讀入這些詞表,通過Perl內置的哈希變量記錄各詞語信息,作為下一步分析課文中出現的詞語是否為生詞的依據。
系統處理從讀取用戶輸入的課文文件名列表入手,置計數器為0,按行讀入每一個課文文件名,并累計計數,以該實際文件名和計數值作為參數,調用具體處理模塊。
在被調用程序中,系統首先讀入調用程序傳遞過來的文件名所指向的文件內容,通過正則表達式過濾標點等無關信息內容;采用Perl系統函數Split以空格為分隔標識,切分課文為單詞串;再根據系統初始化階段構造的詞語哈希表信息,清除必須掌握的各類大綱詞語;針對上述處理剩余下來的詞語,構造一個新的用來存儲生詞及其首次出現位置的哈希表。如果是首次出現,則將該單詞及其傳遞過來的計數值輸出到一個特定文件中。這樣便能保存生詞在教材中首次出現的課文位置。
Perl腳本通常在命令行下由Perl解釋器逐步執行。我們利用PDK工具編譯生成一個能在Windows下獨立運行的可執行程序。
(2) 采用VB實現圖形界面
由于教材編校人員不是計算機專業人員,命令行輸入對其計算機水平要求太高。因此一個方便易用的界面至關重要。
我們采用VB作為前端,設計了一個圖形化的交互環境,將后臺實際執行處理運算的Perl程序隱藏起來。用戶只需通過鼠標操作就能完成從一套教材所有課文抽取生詞并導入數據庫的工作。設計界面如圖1所示。

工作步驟處理流程如下:第一步通過對話框控件得到用戶指定的文件名列表,即獲取要處理的整套教材中所有課文;第二步以該文件名作為輸入參數,采用Shell方式調用Perl程序執行生詞及其首次出現位置的抽取;第三步利用DAO對象庫將第二步Perl處理結果數據導入今后實際標注階段要使用的Access數據庫中;第四步結束整個處理過程。
VB和Perl程序之間的Shell調用采用異步方式實現,這使得在系統執行過程中,有可能存在Perl負責的文本處理過程尚未結束,而VB主控程序就已經跳入數據庫導入階段,造成系統出錯的狀態。因此我們引入IsRunning函數判斷Perl調用處理是否完成,只有當Perl進程結束之后,才能進入下一流程的處理。
生詞抽取處理需要一定時間,為防止用戶面對系統不知所措,我們采用分步驟處理的辦法,利用顏色改變作為上一階段處理是否結束的標志。譬如,系統在執行第一步時,其他步驟的信息和按鈕都是灰色的,處于非激活狀態,這樣可規范并控制用戶的執行順序。只有當前一步驟運行完成后,緊隨其后某一步驟的顏色變成藍色,用戶才可以點擊對應的本步驟按鈕,執行相應操作。
2 教材特定詞語/詞組的標注
上一小節采用VB+Perl實現了圍繞特定一套教材的生詞的動態生成。結合原有詞表等數據信息,在本節中我們將完成在Word環境下對課文特定詞語的突出顯示。一個工作樣例見圖2所示。

由于Word是教材編寫用戶的主要工作環境,又由于Office軟件強大的二次開發功能,我們采用Word VBA開發一個特定詞語/詞組凸顯模板,可無縫加載到Word的菜單欄和工具欄中。
(1) 詞語的凸顯
詞語凸顯包括大學英語大綱不同等級詞語、當前課文新出現的生詞及專名等詞語,以不同顏色區分。這些詞語基本都是單個詞語,在文本中是以空格分開的字符串。
目前設計是大學詞語B類為綠色、I類為黃色、H類為紅色;新詞語用藍色特別標出;專名采用暗黃色顯示。
Word VBA提供一個Words集合對象,能夠直接獲得當前編輯文檔中所有詞語構成的詞集。Words 集合的每一項都代表一個單詞的Range對象,可以修改其格式屬性,無需計算單詞顏色改變的起始和終止位置,而直接對單詞進行凸顯操作。故此,我們對詞語的高亮標注采用Words對象。
并非Words集合的每個元素都是一個合適的詞語,如純數字串、標點、控制字符等都可能囊括其中。在實際處理過程中,對一些不合法的誤輸入也應有識別過濾機制。為此,我們編寫專門的checkString函數,檢查Words集合中每個元素aWord的合法性。正常情況下,函數返回值是可用來進行數據庫查詢的詞語candidate。這樣可防止系統誤將一個不合法詞當作新出現的生詞。
課文詞語在上下文語境中可能有不同的曲折形式,如動詞的人稱及時態變化、名詞的單復數變化等,所有這些造成文中詞語與詞典記載的詞目形式不盡相同,為此需要引入詞形還原。實際處理時,我們根據一個大規模lemma底表,引入VBScript Regular Expression組件調用,創建Dictionary對象,構造文本詞語與詞典詞形的對應關系。
標注過程是遍歷當前編輯文檔中Words集合的每個合法詞語完成的。遍歷過程中,分別用當前詞語實際詞形和詞典還原形式,到各類詞表數據庫中進行匹配檢索,如果在某個特定數據表的詞形字段能夠檢出相應的詞語,即Found函數的返回值為True,則根據預先定義的顯示格式規范,對該詞語改變其字體顏色屬性,實現計算機屏幕的詞語凸顯。該部分偽代碼形式如下:

(2) 詞組的凸顯
詞組凸顯可分為兩類:一類是由連續詞串構成的詞組,一類是由隔離詞串構成的詞組。前者如go through,可當作整體來看;后者如neither…nor…,中間可插入數量不等的其他詞語。兩者識別策略不盡相同。
詞組一般都在某一句子內,基本不跨句出現。因此對詞組的查找限定在句子范圍,具體到編程,采用Word VBA的Sentences集合對象,它能提取出選定部分、區域或文檔中的所有句子。
① 連續詞串的詞組凸顯
通過讀入詞組表,構造詞組的dictionary對象,再對文檔Sentences集合對象的每一項,逐次檢查是否包含有某一特定詞組,并根據該詞組在文本的起止范圍改變特定的字體顏色。該部分偽代碼如下:

處理對象是每一個句子,需要改變顏色的只是句中構成詞組的某些詞語。因此應記錄變色詞語在句中的偏移位置,同時還應記錄該句在整篇文檔的偏移位置,這樣才能準確獲得構成詞組的詞語變色范圍在全文的絕對位置。
實際處理時,引入Lemma操作,匹配時注重的是詞語原形的比較,但凸顯時應還原為文本實際形式。這種變換往往改變詞語長度,引起顏色標注錯位。我們發現根據詞語在句中的相對位置,比絕對位置要相對簡單并且準確。處理方法如下:
將原始句切分為詞向量,以數組體現;對lemma后的變換句同樣操作。采用詞組底表中的詞組在變換句中匹配,記錄變色詞語在變換句中相對首詞出現的偏移位置,再到相應的原始句中尋找對應詞語所處的絕對位置,可以準確定位顏色變更顯示的區域。
② 非連續詞串的詞組凸顯
非連續詞串的詞組可以分成若干部分。單獨每個部分是連續詞串。如詞組as far as…be concerned,由…分隔為兩部分,需要分別檢索。
標注時,按句讀入文本內容后,對句中可能要標注的詞組每個部分,直接采用連續詞串的詞組檢索方法。在確認某一詞組的全部構件都已匹配后,才能確定對其進行高亮顯示。有關該部分的詞語凸顯偽代碼如下:

五 結語
本文就大學英語教材編寫過程中的詞語控制問題,采用Perl和VB/VBA設計了一個計算機輔助特定內容高亮顯示的工具,既具有良好用戶界面,又使開發人員利用便捷開發工具,縮短工程周期。經過初步試用,系統較好實現了原有設計思想。
本文所述高亮顯示方法具有通用性。靜態詞表可以方便擴充完善,而生詞抽取程序也適用不同教材編寫工作,譬如引入各類考試詞表等,可以完成考試輔導類教程的編寫。由于本系統的宿主對象Word的Words對象內部具備漢語分詞功能,稍加改變,也可以用于漢語教材的編寫。
應該指出的是,本系統只是一個工程實現。要達到更好處理效果,還需要引入更高層的句法處理。當前還只是直接采用Lemma底表對照的詞語還原技術,某些以-ed或-ing等形式結尾的詞語,有可能因為被Lemma底表收錄而造成錯誤還原,造成誤標。因此一個好的Lemma底表或更好的句法分析技術將有助于此類問題的解決。
參考文獻
[1]趙勇,鄭樹棠. 幾個國外英語教材評估體系的理論分析[J]. 外語教學, 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開發使用手冊[M].北京: 機械工業出版社,1997.