摘 要: 系統(tǒng)增加一種功能,即通過音標來查詢單詞,同時加入模糊查詢功能,使查詢方式更加靈活和全面。詳細地說明了系統(tǒng)的設(shè)計思想和實現(xiàn)技術(shù)。
關(guān)鍵詞: 按發(fā)音查詢 電子詞典 模糊查詢
目前的各類電子詞典系統(tǒng)在查詢速度、詞庫容量等方面都日趨完善。用戶在英文閱讀時,可以方便快捷地查找生詞的詞義、用法、同義詞或反義詞。然而,就使用方式來講,仍存在欠缺。當人們聽英語" title="英語">英語廣播、看英語節(jié)目或練習聽力時聽到一個詞的發(fā)音而又不知其含義時,又如何查到單詞的含義呢?按傳統(tǒng)的方法,只能先根據(jù)單詞發(fā)音猜測單詞的拼寫,然后再查詞典。由于英文單詞拼寫不規(guī)范,這種查詢的效率必然很低。
為此,應(yīng)尋求另一種查詢途徑。旨在通過音標輸入,根據(jù)單詞發(fā)音直接進行查詢,并配合模糊查詢算法,從而為這一問題的解決找到一條途徑。整個設(shè)計涉及到音標的提取和輸入、范例數(shù)據(jù)庫的建立、模糊查詢算法、界面的設(shè)計等。
1 音標的提取和輸入
系統(tǒng)設(shè)計首先考慮音標字庫問題。Windows自帶的音標符號不全且不方便引入,而一些商用軟件,如金山公司的KingSoft Phonetic音標字體則包含了英式音標所需要的基本符號,可在開發(fā)中引入該字體。當然,要以合法方式獲得。其方法是在裝有金山詞霸的系統(tǒng)中找到Ksphonet.ttf,將其拷貝到開發(fā)系統(tǒng)中,安裝此字體即可。開發(fā)時,將窗口缺省字體設(shè)置為 KingSoft Phonetic;最后,在程序發(fā)布安裝過程中自動為目標機安裝該字體。
由于無論是建立樣例數(shù)據(jù)庫還是系統(tǒng)運行時進行查詢,都涉及到音標的錄入,而通過鍵盤進行錄入顯然不方便。所以在程序窗口中設(shè)置一個音標輸入面板,通過點擊面板中的按鈕來錄入對應(yīng)的音標;還應(yīng)對面板中的按鈕排列做規(guī)劃,例如,雙元音按鈕排列在一個區(qū),方便錄入,見圖2。
2 樣例數(shù)據(jù)庫的設(shè)計
本電子詞典系統(tǒng)利用MS Access 2000建立了一個含500個單詞左右的樣例詞庫, 并使用MS Visual C++6.0作為前端工具,采用DAO技術(shù)實現(xiàn)對樣例數(shù)據(jù)庫的訪問。
雖然本詞庫的規(guī)模較小,但應(yīng)當體現(xiàn)出詞典在詞語分布上的特點。所以,特根據(jù)《郎文英漢雙解詞典》做粗略統(tǒng)計,得出數(shù)據(jù)如表1所示。其中,x、z按所占比例算不足一詞,均按一詞計。
數(shù)據(jù)庫字段設(shè)計如下:
其中,Yinbiao 存放單詞的音標,并作為主關(guān)鍵字;Eword為英文單詞;Cword為單詞的中文釋義。
3 模糊查詢處理
3.1 實時匹配的處理
系統(tǒng)可以以兩種方式進行查詢:按詞查詢和按音標查詢。限于篇幅,本文只討論后者。樣例數(shù)據(jù)庫中以音標字段作為主鍵,對于每一輸入,系統(tǒng)都進行匹配,將相近的結(jié)果顯示出來。例如,用戶輸入" title="用戶輸入">用戶輸入:a:則列表提示:art, arm, army, artist, article…等;若用戶輸入:a:t,則列表提示:art,artist, article…等。如用戶的輸入無法完全匹配,則從列表中選擇第一個" title="第一個">第一個匹配作為查詢結(jié)果或提示用戶手動選擇相近的詞條。
3.2 重音的處理
英語中多音節(jié)單詞都有各類重音,在音標中用重音符號標記。重音符號完全可以參加匹配查詢,但考慮到查詢復雜度和實用性,不將重音符號作為查詢的一部分,即輸入的重音符號在查詢時經(jīng)過預(yù)先處理過濾掉重音號。重音符號只用于建立樣例數(shù)據(jù)庫中的單詞條目,以便在查詢結(jié)果中正確地顯示單詞的完整音標。對于音標相同重音不同的單詞,同時給出釋義。
3.3 模糊查詢處理
基于音標的模糊查詢,類似于很多輸入法提供的“南方模糊音”功能,即以用戶潛在的由于音標讀音相似產(chǎn)生的輸入錯誤為基礎(chǔ),對無法直接匹配的輸入進行相似的代換并對每一種代換進行查找。例如對于音標tr很容易與音標混淆,
與e有時也不容易辨別,因此對于可能出現(xiàn)的習慣上的錯誤對音標進行查詢的等價類劃分,本系統(tǒng)做了如下劃分:
需要說明的是,這種劃分只是來源于實際的經(jīng)驗,衡量任何一種劃分成功與否必須通過音標的錯誤使用統(tǒng)計和用戶的反饋來確定。對于正常查詢無法查得的音標,用戶可以有選擇地應(yīng)用以上的等價代換重新進行查找。但應(yīng)用等價代換會非常顯著地降低查詢效率,因此必須對查詢的規(guī)模進行限制,如最多開啟三個等價集或者進行重新等價劃分等。
另外對于比較長的音標輸入,可以將音標輸入的前一半或者1/3長度作為模糊查詢的輸入依據(jù),這樣模糊查詢的范圍雖然會有所擴大,但是卻節(jié)省了查詢浪費的時間??傊?,以等價代換查詢?yōu)榛A(chǔ),可以采用很多策略來限制查詢的復雜度,但是具體哪一種策略更好,需要對音標構(gòu)成和用戶輸入習慣做大量的統(tǒng)計和實驗得出。查詢流程圖如圖1所示。
在具體的實現(xiàn)上,使用了遞歸" title="遞歸">遞歸函數(shù),其基本算法如下:
FuzzySearch(CString str,int n){
Length=str.GetLength();
if(length<=n) {
ExactSearch(str); //完全匹配查找
return;
}
else {//對第n個字母進行搜索尋找等價代換;
//如果找到則從該等價集第一個字母開始進行代換;
//代換后的音標str2作為遞歸入口送入;
FuzzySearch(str2,n+1);
//同樣的str3、str4;
FuzzySearch(str3,n+1);
FuzzySearch(str4,n+1);
//對于雙元音代換,則是:
FuzzySearch(str5,n+2);
//如無法找到等價代換,則:
FuzzySearch(str,n+1);
}
}
對已輸入的音標先進行完全匹配,如完全匹配失敗則對已輸入音標(剛輸入的音標)進行等價集代換,并把模糊查詢的結(jié)果添加到列表,作為進一步模糊查詢的基礎(chǔ)。由于縮小了搜索范圍,在速度上有一定優(yōu)勢。
4 界面設(shè)計
界面以及風格的設(shè)計已經(jīng)成為Windows編程十分重要的一環(huán),合理的設(shè)計會提高用戶使用效率。如果采用英式音標輸入,則至少需要44個音標按鈕。另一種方案是省略雙元音和某些由兩個音標符號組成的輔音(如 t?蘩),由用戶自行輸入t和?蘩,這樣可以減少面板上音標按鈕的數(shù)量。但多數(shù)人在學習音標時,習慣上是將雙元音作為一個整體來記憶,拆開后反而不自然。所以,面板排列由44個音標按鈕組成,為方便用戶快速錄入,將其按習慣分成三個區(qū),即單元音區(qū)、雙元音區(qū)和輔音區(qū),并將發(fā)音相似的音標排列在一起,如圖2所示。
本系統(tǒng)的設(shè)計與實現(xiàn)" title="設(shè)計與實現(xiàn)">設(shè)計與實現(xiàn)具有很強的實用價值。將本系統(tǒng)所帶的詞庫進行擴充,即可形成標準的電子詞典系統(tǒng)。若將本系統(tǒng)的算法加以固化,即可形成固件產(chǎn)品,具有很好的應(yīng)用前景。
參考文獻
1 呂丹陽. Visual C++.NET數(shù)據(jù)庫開發(fā)指南.北京:清華大學出版社,2002
2 Microsoft Co.MSDN Library:Visual C++ Programmer′s Guide.Using CrichEditCtrl Chapter
3 Microsoft Co.MSDN Library: User Interface Design and Development.Resources Icons Chapter
4 Microsoft Co.MSDN Library: Win32 Platform SDK.Developer Notes>General
5 Davide Calabro.Flat buttons with text/icon.www.codeguru.com July 25, 2002
6 Microsoft Co. MSDN Library: Windows Development.CWnd Chapter
7 Franz Wong.Demonstrates the use of GfxListCtrl control, CHyperlink class.www.codeguru.com 2002
8 Erich Gamma.設(shè)計模:可復用面向?qū)ο筌浖幕A(chǔ).北京:機械工業(yè)出版社, 2000.9
9 Microsoft Co. MSDN Library: Windows User Interface.Win-dowing. Windows
10 Microsoft Co. HOWTO: Programmatically Install a True Type Font.Microsoft Knowledge Base Article-186722.2003.2