摘 要:在英語學習中詞匯積累是基本功的重要組成部分。國內(nèi)大多英語專業(yè)學生在積累詞匯的過程中很大程度上要依靠各類便攜式的電子詞典。老師們對電子詞典的態(tài)度則褒貶不一。反對意見主要是對詞意的準確性和全面性有所質(zhì)疑。因此,如何更好地發(fā)揮電子詞典的優(yōu)勢,使其具備更多有益于學習的功能,是程序設計者必須思考的問題。換而言之,電子詞典的程序設計不應只屬于軟件開發(fā)這一科目,而應該是交叉于英語和軟件開發(fā)之間的邊緣學科。
關鍵詞:詞匯學;詞根;模糊查找;個人電腦
詞匯學習對英語學習的重要性不言而喻。就英語專業(yè)學生而言,詞匯學習不應該是單一的背單詞,了解詞的構造非常重要。認識詞根詞綴可以幫助我們更好地記住難的單詞,甚至當我們遇到從沒見過的單詞時能幫助我們猜出其意思。在認識了一個單詞的詞根或詞綴之后,我們通常會聯(lián)想:還有哪些單詞也包含了這個詞根或詞綴?如,學習中碰到leukaemia一詞,通過構詞的相關知識我們了解了這樣一些信息:“l(fā)euk” 是前綴 “l(fā)euc(o)-” (白色)的變形,“aem” 是一個與血液有關的詞根,“ia” 是表示疾病的后綴。通過詞根記憶法,了解包含 “aem” 的其他單詞,會為我們的詞匯拓展帶來很大收獲。但又應該如何去收集這些單詞呢?遇到這類問題,最先想到的辦法就是查字典,傳統(tǒng)的紙質(zhì)詞典通常以26個字母順序羅列單詞,先就首字母排序,相同的情況下就按第二個字母排序……很顯然這種編排不能完全滿足我們的要求:查找相同前綴的單詞尚可,后綴和詞根就很難查了。
電子詞典詞義精確性不如紙質(zhì)詞典,必須在查詞手段等方面展現(xiàn)優(yōu)勢才能得到用戶的認可。在詞根詞綴查找的問題上,電子詞典可通過軟件編程做到。遺憾的是現(xiàn)在很多電子詞典并未致力于此功能開發(fā),一般個人電腦上的翻譯軟件也見不到。要查含某一詞根或詞綴的所有單詞,即要實現(xiàn)模糊查找功能,這很像電腦里搜索含某一關鍵字的文件名稱。筆者嘗試過在電腦上寫這樣一種程序,幫助我們完成這種模糊查找。
這里以Visual Basic 6.0為開發(fā)平臺作下說明——這是一款功能不強但比較容易上手的開發(fā)軟件。詞庫選擇Excel電子表格格式,只包含兩個縱列,第一列(“A”)是單詞,第二列(“B”)是釋義。當然使用其他更常見的數(shù)據(jù)庫格式如Access也未嘗不可。由于VB 6.0的兼容性對Access版本比較挑剔,故在此使用Excel。我們要實現(xiàn)的首要目的,是通過搜索單詞當中幾個連續(xù)的字母來對滿足條件的單詞做篩選。VB本身和其Excel接口都可以實現(xiàn)。就VB本身來講,用字符串函數(shù)InStr()即可。具體代碼操作如下:
Set xl App=Create Object(“Excel.Application”) 獲取EXCEL進程
Set xl Book=xl App.Workbooks.Open(App.Path +“\glossary.xls”) 使用詞庫Excel文檔
Set xl Sheet=xl Book.Worksheets(“SheetA”) 使用工作表
…
If InStr(1,Trim(xl Sheet.Cells(idx,1)),Trim(txt Input.Text)+ “,”)<>0 Then
判斷文本框中輸入的條件能否在表中找到,若找到,返回非0值。
lstWord.AddItem (xlSheet.Cells(i,1))單詞滿足條件,添入列表框。
sum=sum+1
If sum>=100 Then
MsgBox “符合條件的單詞太多,未完全列出!”, vbOKOnly,“提示”
Exit Sub
End If
End If
工作表中的搜索位置列號不會發(fā)生變化,而行號要依次遍歷,故使用變量i,再將自加語句和Go To語句相結(jié)合,就可以查看詞庫中每一個單詞是否滿足要求。
若輸入與血液有關的“aem”,則haemoglobin,haemophiliac, uraemia等相關單詞都出現(xiàn)在列表當中。這種程序設計方案可以達到我們的要求,但需要先從詞庫中讀出數(shù)據(jù),再用VB的自帶函數(shù)進行比較、輸出,運行速度太慢,使用VB的Excel接口可以大大提高速度,編程思路基本一致,不同的是要把InStr()函數(shù)替換為如下代碼:
Locate Cell=xl Sheet.Range(“A”+CStr(pointer)+“:A”+CStr(i)).Find(Trim(txt Input.Text)).Row此處使用變量控制搜索的行列范圍,CStr(pointer)和CStr(idx)都是Excel的行號,字符A為固定的列號范圍。如要搜索第1行第一列至第500行第一列這樣一個范圍,此處生成的搜索范圍就將是“A1:A500”,之后將滿足搜索結(jié)果的行號返回給變量LocateCell. 僅憑此一行代碼,可將包含關鍵字的單詞全數(shù)讀出,僅剩的內(nèi)容就是把LocateCell所示行號的單元格內(nèi)容輸出到列表框,語句為:lstWord.AddItem(xlSheet.Cells(Val(LocateCell),1))。用這種方法,程序運行速度會提高很多。
然而這種速度高的代碼也存在一個問題,如果在所定義的搜索范圍內(nèi)一個滿足條件的數(shù)據(jù)都找不到的話,程序會出錯崩潰。因此,該語句前面有必要增加一條錯誤處理語句:
On Error Go to Handler
“Handler”是程序開發(fā)人員自定義的代碼標記行,放在子程序里加個冒號標明,后面再用MsgBox信息框說明沒有找到符合條件的單詞。
前綴和后綴搜索基本思路差不多,搜索后綴時先獲取所輸入搜索條件的字符串長度,該長度可通過Len(Trim(txt Input.Text))得到,再通過條件判斷語句將其與詞庫中的單詞長度Len(xl Sheet.Cells(idx,1))做對比,濾掉比搜索條件字母少的單詞。之后再通過判斷邏輯語句Right(RTrim(xl Sheet.Cells(idx, 1)), Input Length) =Trim(txt Input.Text)的真假值,找出滿足后綴條件的單詞。搜索前綴時同樣需要先濾掉比搜索條件字母少的單詞,之后再判斷詞首是否包含搜索條件所定義的字符串,只是最后的Right函數(shù)改為Left函數(shù)。
本程序設計是以PC機為硬件平臺,如果使用JavaScript等其他高級語言,采用同樣的編程思路,可以將該程序移植于袖珍電子詞典、移動電話等便攜設備??陀^來講,電子詞典在與傳統(tǒng)紙質(zhì)字典的優(yōu)劣對比中,很多方面要處于下風,如詞義精確性、可視化程度、語法搭配解釋、例句豐富程度等。因此,要想得到更多用戶的認可,就只能在更大程度上利用電子技術不可替代的特點,在查找這一個環(huán)節(jié)顯露出自己的優(yōu)勢,這樣的電子詞典才能有真正的生命力。
參考文獻:
汪榕培,盧曉娟.英語詞匯學教程[M].上海:上海外語教學出版社,2005-01.
作者簡介:楊明,男1979年1月出生,碩士,就職于四川外國語大學成都學院,研究方向:比較文學和世界文學。