按音標(biāo)查詢的英漢電子詞典的設(shè)計(jì)與實(shí)現(xiàn) 作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對(duì)面交流海量資料庫(kù)查詢 收藏 摘要:系統(tǒng)增加一種功能,即通過(guò)音標(biāo)來(lái)查詢單詞,同時(shí)加入模糊查詢功能,使查詢方式更加靈活和全面。詳細(xì)地說(shuō)明了系統(tǒng)的設(shè)計(jì)思想和實(shí)現(xiàn)技術(shù)。 關(guān)鍵詞:按發(fā)音查詢 電子詞典 模糊查詢 目前的各類電子詞典系統(tǒng)在查詢速度、詞庫(kù)容量等方面都日趨完善。用戶在英文閱讀時(shí),可以方便快捷地查找生詞的詞義、用法、同義詞或反義詞。然而,就使用方式來(lái)講,仍存在欠缺。當(dāng)人們聽(tīng)英語(yǔ)廣播、看英語(yǔ)節(jié)目或練習(xí)聽(tīng)力時(shí)聽(tīng)到一個(gè)詞的發(fā)音而又不知其含義時(shí),又如何查到單詞的含義呢?按傳統(tǒng)的方法,只能先根據(jù)單詞發(fā)音猜測(cè)單詞的拼寫(xiě),然后再查詞典。由于英文單詞拼寫(xiě)不規(guī)范,這種查詢的效率必然很低。 為此,應(yīng)尋求另一種查詢途徑。旨在通過(guò)音標(biāo)輸入,根據(jù)單詞發(fā)音直接進(jìn)行查詢,并配合模糊查詢算法,從而為這一問(wèn)題的解決找到一條途徑。整個(gè)設(shè)計(jì)涉及到音標(biāo)的提取和輸入、范例數(shù)據(jù)庫(kù)的建立、模糊查詢算法、界面的設(shè)計(jì)等。 1 音標(biāo)的提取和輸入 系統(tǒng)設(shè)計(jì)首先考慮音標(biāo)字庫(kù)問(wèn)題。Windows自帶的音標(biāo)符號(hào)不全且不方便引入,而一些商用軟件,如金山公司的KingSoft Phonetic音標(biāo)字體則包含了英式音標(biāo)所需要的基本符號(hào),可在開(kāi)發(fā)中引入該字體。當(dāng)然,要以合法方式獲得。其方法是在裝有金山詞霸的系統(tǒng)中找到Ksphonet.ttf,將其拷貝到開(kāi)發(fā)系統(tǒng)中,安裝此字體即可。開(kāi)發(fā)時(shí),將窗口缺省字體設(shè)置為KingSoft Phonetic;最后,在程序發(fā)布安裝過(guò)程中自動(dòng)為目標(biāo)機(jī)安裝該字體。 由于無(wú)論是建立樣例數(shù)據(jù)庫(kù)還是系統(tǒng)運(yùn)行時(shí)進(jìn)行查詢,都涉及到音標(biāo)的錄入,而通過(guò)鍵盤進(jìn)行錄入顯然不方便。所以在程序窗口中設(shè)置一個(gè)音標(biāo)輸入面板,通過(guò)點(diǎn)擊面板中的按鈕來(lái)錄入對(duì)應(yīng)的音標(biāo);還應(yīng)對(duì)面板中的按鍵排列做規(guī)劃,例如,雙元音按鈕排列在一個(gè)區(qū),方便錄入,見(jiàn)圖2。 2 樣例數(shù)據(jù)庫(kù)的設(shè)計(jì) 本電子詞典系統(tǒng)利用MS Access 2000建立了一個(gè)含500個(gè)單詞左右的樣例詞庫(kù),并使用MS Visual C++6.0作為前端工具,采用DAO技術(shù)實(shí)現(xiàn)對(duì)樣例數(shù)據(jù)庫(kù)的訪問(wèn)。 雖然本詞庫(kù)的規(guī)模較小,但應(yīng)當(dāng)體現(xiàn)出詞典在詞語(yǔ)分布上的特點(diǎn)。所以,特根據(jù)《郎文英漢雙解詞典》做粗略統(tǒng)計(jì),得出數(shù)據(jù)如表1所示。其中,x、z按所占比例算不足一詞,均按一詞計(jì)。 表1 單詞選取分布表 首字母 所占百分比(%) 詞庫(kù)中單詞數(shù)(個(gè)) 首字母 所占百分比(%) 詞庫(kù)中單詞數(shù)(個(gè)) a 5.12 26 N 2.15 11 b 6.07 30 O 2.09 10 c 9.99 50 P 2.09 44 d 5.69 28 Q 0.44 2 e 3.48 17 R 5.57 28 f 5.63 28 S 11.70 59 g 3.54 18 T 5.00 25 h 3.92 20 U 1.58 8 i 3.61 18 V 1.58 8 j 0.76 4 W 3.61 18 k 3.29 16 Y 0.25 1 m 5.12 26 Z 0.13 1 數(shù)據(jù)庫(kù)字段設(shè)計(jì)如下: YinbiaoEwordCword其中,Yinbiao存放單詞的音標(biāo),并作為主關(guān)鍵字;Eword為英文單詞;Cword為單詞的中文釋義。 3 模糊查詢處理 3.1 實(shí)時(shí)匹配的處理 系統(tǒng)可以以兩種方式進(jìn)行查詢:按詞查詢和按音標(biāo)查詢。限于篇幅,本文只討論后者。樣例數(shù)據(jù)庫(kù)中以音標(biāo)字段作為主鍵,對(duì)于每一輸入,系統(tǒng)都進(jìn)行匹配,將相近的結(jié)果顯示出來(lái)。例如,用戶輸入:a:則列表提示:art,arm,army,artist,article…等;若用戶輸入:a:t,則列表提示:art,artist,article…等。如用戶的輸入無(wú)法完全匹配,則從列表中選擇第一個(gè)匹配作為查詢結(jié)果或提示用戶手動(dòng)選擇相近的詞條。 3.2 重音的處理 英語(yǔ)中多音節(jié)單詞都有各類重音,在音標(biāo)中用重音符號(hào)標(biāo)記。重音符號(hào)完全可以參加匹配查詢,但考慮到查詢復(fù)雜度和實(shí)用性,不將重音符號(hào)作為查詢的一部分,即輸入的重音符號(hào)在音詢時(shí)經(jīng)過(guò)預(yù)先處理過(guò)濾掉重音號(hào)。重音符號(hào)只用于建立樣例數(shù)據(jù)庫(kù)中的音詞條目,以便在查詢結(jié)果中正確地顯示單詞的完整音標(biāo)。對(duì)于音標(biāo)相同重音不同的單詞,同時(shí)給出釋義。3.3 模糊查詢處理 基于音標(biāo)的模糊查詢,類似于很多輸入法提供的“南方模糊音”功能,即以用戶潛在的由于音標(biāo)讀音相似產(chǎn)生的輸入錯(cuò)誤為基礎(chǔ),對(duì)無(wú)法直接匹配的輸入進(jìn)行相似的代換并對(duì)每一種代換進(jìn)行查找。例如對(duì)于音標(biāo)tr很容易與音標(biāo)t∫混淆,因此對(duì)于可能出現(xiàn)的習(xí)慣上的錯(cuò)誤對(duì)音標(biāo)進(jìn)行查詢的等價(jià)類劃分,本系統(tǒng)做了如下劃分: 需要說(shuō)明的是,這種劃分只是來(lái)源于實(shí)際的經(jīng)驗(yàn),衡量任何一種劃分成功與否必須通過(guò)音標(biāo)的錯(cuò)誤使用統(tǒng)計(jì)和用戶的反饋來(lái)確定。對(duì)于正常查詢無(wú)法查得的音標(biāo),用戶可以有選擇地應(yīng)用以上的等價(jià)代碼重新進(jìn)行查找。但應(yīng)用等價(jià)代換會(huì)非常顯著地降低查詢效率,因此必須對(duì)查詢的規(guī)模進(jìn)行限制,如最多開(kāi)啟三個(gè)等價(jià)集或者進(jìn)行重新等價(jià)劃分等。 另外對(duì)于比較長(zhǎng)的音標(biāo)輸入,可以將音標(biāo)輸入的前一半或者1/3長(zhǎng)度作為模糊查詢的輸入依據(jù),這樣模糊查詢的范圍雖然會(huì)有所擴(kuò)大,但是卻節(jié)省了查詢浪費(fèi)的時(shí)間??傊缘葍r(jià)代換查詢?yōu)榛A(chǔ),可以采用很多策略來(lái)限制查詢的復(fù)雜度,但是具體哪一種策略更好,需要對(duì)音標(biāo)構(gòu)成和用戶輸入習(xí)慣做大量的統(tǒng)計(jì)和實(shí)驗(yàn)得出。查詢流程如圖1所示。 在具體的實(shí)現(xiàn)上,使用了遞歸函數(shù),其基本算法如下: FuzzySearch(Cstring str,int n){ Length=str.GetLength(); if(length<=n){ ExactSearch(str); //完全匹配查找 return; } else {//對(duì)第n個(gè)字母進(jìn)行搜索尋找等價(jià)代換; //如果找到則從該等價(jià)第一個(gè)字母開(kāi)始進(jìn)行代換; //代換后的音標(biāo)str2作為遞歸入口送入; FuzzySearch(str2,n+1); //同樣的str3、str4; FuzzySearch(str3,n+1); FuzzySearch(str4,n+1); //對(duì)于雙元音代換,則是: FuzzySearch(str5,n+2); //如無(wú)法找到等價(jià)代換,則: FuzzySearch(str,n+1); } } 對(duì)已輸入的音標(biāo)先進(jìn)行完全匹配,如完全匹配挫敗則對(duì)已輸入音標(biāo)(剛輸入的音標(biāo))進(jìn)行等價(jià)集代換,并把模糊查詢的結(jié)果添加到列表,作為進(jìn)一步模糊查詢的基礎(chǔ)。由于縮小了搜索范圍,在速度上有一定優(yōu)勢(shì)。4 界面設(shè)計(jì) 界面以及風(fēng)格的設(shè)計(jì)已成為Windows編程十分重要的一環(huán),合理的設(shè)計(jì)會(huì)提高用戶使用效率。如果采用英式音標(biāo)輸入,則至少需要44個(gè)音標(biāo)按鈕。另一種方案是省略雙元音和某些由兩個(gè)音標(biāo)符號(hào)組成的輔音(如t∫)由用戶自行輸入t和∫,這樣可以減少面板上音標(biāo)按鈕的數(shù)量。但多數(shù)人在學(xué)習(xí)音標(biāo)時(shí),習(xí)慣上是將雙元音作為一個(gè)整體為記憶,折開(kāi)后反而不自然。所以,面板排列由44個(gè)音標(biāo)按鈕組成,為方便用戶快速錄入,將其按習(xí)慣分成三個(gè)區(qū),即單元音區(qū)、雙元音區(qū)和輔音區(qū),并將發(fā)音相似的音標(biāo)排列在一起,如圖2所示。 本系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)具有很強(qiáng)的實(shí)用價(jià)值。將本系統(tǒng)所帶的詞庫(kù)進(jìn)行擴(kuò)充,即可形成標(biāo)準(zhǔn)的電子詞典系統(tǒng)。若將本系統(tǒng)的算法加以固化,即可形成固件產(chǎn)品,具有很好的應(yīng)用前景。
評(píng)論