白雙成,張勁松 ,呼斯勒
(1. 北京語言大學(xué) 對(duì)外漢語研究中心,北京 100190; 2. 內(nèi)蒙古社會(huì)科學(xué)院 蒙古語信息處理研究所,內(nèi)蒙古 呼和浩特 010020; 3. 內(nèi)蒙古蒙科立軟件有限責(zé)任公司,內(nèi)蒙古 呼和浩特 010019)
依據(jù)蒙古文編碼國際/國家標(biāo)準(zhǔn)及用戶協(xié)定[1-3],在Windows Vista/7/8、iOS等平臺(tái)上,依托其復(fù)雜文本布局引擎(complex text layout engine),開發(fā) OpenType[4-5]或AAT(Apple Advanced Typography)字體,再配合一個(gè)簡單的鍵盤映射輸入法即可實(shí)現(xiàn)蒙古文的錄入和名義字符到變形顯現(xiàn)字形的轉(zhuǎn)換顯示。但是,為了更好地滿足用戶需求,開發(fā)一套簡便快捷的智能輸入法是非常有必要的。對(duì)于一個(gè)錄入速度和準(zhǔn)確度要求較高的智能輸入法而言,研究制定科學(xué)合理的輸入碼方案至關(guān)重要。
我們將輸入一個(gè)單詞所需的輸入碼的碼元個(gè)數(shù)稱為碼長[5-6]。就詞級(jí)錄入來說,蒙古文輸入法的錄入速度取決于詞的平均碼長,其中含兩層含義,一個(gè)是對(duì)應(yīng)一個(gè)單詞的碼長越短越好,另一個(gè)是輸入這個(gè)輸入碼時(shí)用戶思考尋找的時(shí)間越短越好。輸入法的碼長越長,輸入信息越多,對(duì)應(yīng)重碼詞就越少。反之,碼長越短,所含信息越少,對(duì)應(yīng)重碼詞就越多。單純地減少碼長未必能提高速度,因?yàn)閷ふ乙粋€(gè)鍵的時(shí)間可能變得較長[5,7]。所以縮短平均碼長的關(guān)鍵在于兼顧兩者,輸入碼方案確定就是在碼長與信息量之間尋找一個(gè)平衡點(diǎn)的過程。需要特別說明的是,好的方案能否落到實(shí)處,還要看具體工程實(shí)現(xiàn)能力和實(shí)際條件。
以往,確定輸入法輸入碼方案時(shí)更多的是研發(fā)人員從感官認(rèn)識(shí)和個(gè)人的主觀意識(shí)去選擇一套方案。為此我們想通過本文較為系統(tǒng)的量化比較各類輸入碼方案,為下一步的研究和工程實(shí)現(xiàn)提供理論依據(jù)。
1) 蒙古文輸入也可以用字形、字符編碼等信息來輸入,但這類輸入方式畢竟不是普遍做法,本文討論的輸入法,只限于讀音輸入(類似于漢字拼音輸入),也就是按蒙古文讀音為基礎(chǔ)的輸入法。
2) 限定在PC普通鍵盤上,不涉及數(shù)字鍵盤或其他類。組成輸入碼的字符集(通常稱為碼元)默認(rèn)為英文字母{abcdefghijklmnopqrstuvwxyz},也可以是普通鍵盤內(nèi)的其他所有字母,如蒙科立整詞輸入法[8]中“NG”用“;”輸入。碼元越多,重碼可能性越小,輸入就會(huì)更快捷,但會(huì)加大用戶記憶壓力。本文雖不涉及數(shù)字鍵盤,依然對(duì)其有一定的借鑒意義。
5) 以詞組為單位統(tǒng)計(jì)的單詞的信息熵保證比以單詞為單位的信息熵小,也就是說,以詞組為單位進(jìn)行輸入碼編碼的話,其輸入碼長度會(huì)小很多。如果進(jìn)一步考慮單詞及詞組之間的上下文相關(guān)性,建立統(tǒng)計(jì)語言模型的話信息熵會(huì)更小。但本文暫不涉及這些內(nèi)容。因?yàn)槲覀兺ㄟ^n元模型試驗(yàn)得知,只要單詞輸入碼方案選定合理,直接應(yīng)用于詞組及語言模型,即可獲得較好的效果。因篇幅所限,暫不細(xì)述。
6) 如果加入單詞頻率因素,量化比較會(huì)更合理些。但礙于目前所能獲得的熟語料量嚴(yán)重不足,生語料利用中的部分技術(shù)問題還未完成,所以本文暫時(shí)無法考慮詞頻因素。
7) 輸入碼方案中優(yōu)先考慮輸入的簡短快捷和易學(xué),但本文提出的模糊輸入特性恰恰是標(biāo)準(zhǔn)音教學(xué)和推廣中所不能容忍的。我們認(rèn)為可通過輸入法選項(xiàng)來限定,就此不做額外說明。
按輸入碼方案的特點(diǎn),將其分為三類,即方案1為全拼方案,方案2和方案3為整詞方案,其余為模糊輸入方案。各方案介紹如下:
方案1: 全拼方案
該方案是目前多數(shù)讀音輸入法(或稱其為音碼輸入法)采用的輸入碼方案。其核心思想是依據(jù)拼音(音素)文字特點(diǎn),為每一個(gè)音素安排一個(gè)輸入鍵(實(shí)際應(yīng)用中可能會(huì)用n+g來輸入(),用lh輸入(l)等策略), 通過上下文的分析,盡力解決一字多形,多字同形(同形異音)問題。例如,音素(a)的輸入鍵為a,則不管其詞內(nèi)位置如何,都用這個(gè)a鍵輸入,如的輸入碼為agana。為區(qū)分同一音素在相同上下文中的多個(gè)變體,引入變體選擇方案(用詞典或規(guī)則方式特殊處理除外,此處特指此類特殊問題),如蒙科立音碼輸入法2002版中用1、2、3選擇不同變形(如輸入為banana1),用-a、-e選擇詞尾a、e變形(harahar-a)。后續(xù)版中引入窮舉候選項(xiàng)和大寫輸入碼(也就是shift+鍵值)輸入非常用變體字形方式?;贠penType技術(shù)實(shí)現(xiàn)的鍵盤映射可歸為此類。
方案2: 整詞輸入法方案
表1 整詞輸入法半音字母映射關(guān)系表
方案3: 在方案2的基礎(chǔ)上要求補(bǔ)充所有半音字母。提出這一方案的目的僅僅是想在數(shù)據(jù)上比較一下方案2以外的半音字母對(duì)重碼過濾的貢獻(xiàn)度。實(shí)際應(yīng)用中錄入復(fù)雜度已接近方案1,還要記憶半音字母對(duì)應(yīng)關(guān)系,無實(shí)際應(yīng)用價(jià)值。
方案4: 只取各音節(jié)的首字母,忽略所有其他字母。此方案將在詞組輸入和基于統(tǒng)計(jì)語言模型輸入中具有重要作用。
圖1 模糊輸入方案示意圖
方案5: 取各音節(jié)首字母,再取首音節(jié)元音。此方案主要觀察首音節(jié)元音貢獻(xiàn)度。
方案6: 取各音節(jié)首字母,再取詞尾半音字母。此方案主要觀察詞尾半音字母貢獻(xiàn)度。
試驗(yàn)中使用的是1 215 799條詞。
表2 各方案重碼分布表
從表中分析可知
全拼方案類—方案1:
1) 只需了解鍵盤布局即可會(huì)拼寫,易學(xué)性突出;
2) 拼寫所有可能組合,沒有拼不出來的字,是其他方案的必要補(bǔ)充;
3) 高達(dá)91.185 5%的無重碼率,重碼集中前3項(xiàng),便于盲打;
4) 音節(jié)切分沒有歧義;
5) 只需規(guī)則推導(dǎo),不用詞表也可以;
(三)預(yù)防用藥 一些疾病,如仔豬黃、白痢,只要事先在飼料中加入藥物,完全是可以做到事半功倍的預(yù)防作用。為了預(yù)防常見病,一般養(yǎng)殖場(chǎng)都定期或不定期在飼料中加入土霉素粉、黃芪多糖粉、氟哌酸粉、環(huán)丙沙星粉等,做到防患于未然。
6) 輸入碼長,效率低;
7) 沒有詞庫支持錯(cuò)誤率較高;
整詞方案類—方案2至方案3
1) 平均碼長比方案1短很多,但無重碼率還是高達(dá)81.721 0,重碼分布與方案1接近;
2) 音節(jié)切分基本沒有歧義;
3) 需記憶對(duì)應(yīng)關(guān)系,按人類學(xué)理論,易中斷錄入者的思維過程,不符合人的自然行為;
4) 錄入未登錄詞時(shí),需要在方案1與方案2之間進(jìn)行切換;
模糊方案類—方案4至方案7
1) 平均碼長接近方案2,但與其相比,輸入更自然流暢,符合自然行為;
2) 補(bǔ)充信息越多重碼率越低,輸入靈活,便于讀音不確定詞的錄入;
3) 與方案1結(jié)合錄入未登錄詞更為自然,無需切換;
4) 利于用更為簡短輸入碼用于基于統(tǒng)計(jì)模型的連續(xù)輸入;
5) 失去音節(jié)結(jié)構(gòu),重碼率升高;
6) 輸入靈活,但同時(shí)輸入隨意性增大,盲打難度提高;
為進(jìn)一步用一個(gè)單值直觀比較輸入碼方案的特性,在此借用平均碼長概念。長度為len的輸入碼有n個(gè)重碼時(shí),我們還需要用一個(gè)空格或數(shù)字鍵選擇,所以每個(gè)詞需擊鍵len+1次。我們認(rèn)為按空格選擇第一候選項(xiàng)和按數(shù)字鍵選擇其他候選項(xiàng)具有決然不同的消耗,以至于放大其影響而忽略空格輸入時(shí),平均擊鍵數(shù)可公式化為(len*n+n-1)/n=len+1-1/n。例如同樣是碼長為2的輸入碼,如果重碼為2,則平均碼長為2+1-1/2=2.5,如果重碼為3時(shí)平均碼長為2+1-1/3=2.66。所以總平均碼長公式為:
其中l(wèi)en(i)是第i個(gè)輸入碼長度,C(i)為輸入碼i的重碼詞個(gè)數(shù)。
需要說明的是當(dāng)n大于閾值時(shí),還需要翻頁。但我們比較的幾種輸入碼方案中10以上重碼量較少,為簡化公式,沒有對(duì)其進(jìn)行細(xì)化。
表3 平均碼長對(duì)照表輸入碼方案
從表中可以看到,我們方案6和方案7之間可以找到一個(gè)近似方案2的平均碼長。
需要說明的是,表3所示數(shù)據(jù)中,沒有考慮單詞實(shí)際出現(xiàn)頻率,加上計(jì)算單詞中涵蓋大量蒙古文形態(tài)變化派生的單詞,所以平均碼長要比現(xiàn)實(shí)文字錄入的平均碼長長很多。
基于本文試驗(yàn),我們?cè)谛螺斎敕ㄖ胁捎昧巳诤戏桨?至方案7的改進(jìn)型混合輸入碼方案,即,用戶必須輸入各音節(jié)首字母,其余字母都可以隨意忽略。通過本試驗(yàn)我們明確了所采取輸入碼方案的優(yōu)缺點(diǎn)。為進(jìn)一步研究與工程實(shí)現(xiàn)奠定了基礎(chǔ)。
除上述量化比較中凸顯的優(yōu)點(diǎn)外,此方案還有如下優(yōu)點(diǎn)值得闡述:
1) 輸入中可避開讀音易混淆字母
2) 有助于輸入外來詞和特殊詞拼寫
值得說明的是,輸入碼中的各成分的權(quán)值不一樣,更為合理的方式是測(cè)定各信息的熵[9-10]或互信息,通過熵或互信息來確定單詞的最短輸入碼更為合理,但這種方式推導(dǎo)出來的輸入碼僅僅是滿足最小化輸入碼的需求,會(huì)增加人們輸入碼記憶難度,實(shí)際意義需要研究。如果與上述分析類似,將輸入碼分為音節(jié)首字母、元音、半音字母等,通過熵或互信息,自底向上推導(dǎo)出一個(gè)合理的詞級(jí)編碼方法將是我們近期另一項(xiàng)研究內(nèi)容。
更進(jìn)一步,以上所有分析源于一個(gè)思想,認(rèn)為蒙古文讀音輸入法的編碼方案的不同,實(shí)質(zhì)上是從音素、音節(jié)、單詞、詞組等不同層次進(jìn)行編碼的結(jié)果。從音素層次,對(duì)每個(gè)音素進(jìn)行編碼,就是全拼方案。而其余都是從音節(jié)層次(更準(zhǔn)確說是抽象音節(jié)結(jié)構(gòu)角度考慮,而不是窮舉所有音節(jié)結(jié)構(gòu))進(jìn)行編碼。基于單詞及以上單位的編碼方式目前不太適合蒙古文。這個(gè)需要合適的語言模型及語料庫的支持。
[1] The Unicode Consortium[EB]. http://www.Unicode.org.
[2] 確精扎布. 蒙古文編碼[M] . 呼和浩特: 內(nèi)蒙古大學(xué)出版社, 2000.
[3] 國家質(zhì)量監(jiān)督檢驗(yàn)檢疫總局,國家標(biāo)準(zhǔn)化管理委員會(huì).GB 25914-2010.信息技術(shù)傳統(tǒng)蒙古文名義字符、變形顯現(xiàn)字符和控制字符使用規(guī)則[S]. 北京.中國標(biāo)準(zhǔn)出版社,2011.11.
[4] OpenType specification[EB]. http://www.microsoft.com/typography/otspec/ .
[5] 姚延棟, 吳健, 孫玉芳,呼斯勒. 傳統(tǒng)蒙古文變形顯示機(jī)制研究與實(shí)現(xiàn)[J].中文信息學(xué)報(bào),2005, 18(5): 84-89.
[6] 朱巧明、李培鋒等.中文信息處理技術(shù)教程[M].北京.清華大學(xué)出版社,2005.9.
[7] 吳軍.數(shù)學(xué)之美[M].北京.人民郵電出版社.2012.6: 185-196.
[8] S·蘇雅拉圖.蒙古文整詞計(jì)算機(jī)生成理論研究[J].中文信息學(xué)報(bào),2001,15(4): 59-65.
[9] 那日松,淑琴.蒙古文信息熵和拉丁轉(zhuǎn)寫研究[A]. 中國計(jì)算技術(shù)與語言問題研究——第七屆中文信息處理國際會(huì)議論文集[C], 2007: 782-785.
[10] Thomas M.Cover, Joy A. Elements of information theory[M]. New York. Wiley.1991.