拼音輸入法

輸入法輸入漢字的快慢取決於 對漢字編碼的平均長度,也就是 擊鍵次數 乘以 尋找這個鍵所需要的時間。

對漢字的編碼分爲兩部分:對拼音的編碼和消除歧義性的編碼

最終選擇拼音輸入法,原因有三個優點,可以讓他輸入速度並不慢:

1、不需要專門學習

2、輸入自然,不會中斷思維,也就是找每個鍵的時間非常短

3、編碼長,有信息冗餘量,容錯性好

 然後要解決的問題是。排除一音多字的歧義性。

 

對常見的字用較短的編碼對不常見的字用較長的編碼,這樣平均起來每個漢字的編碼長度可以縮短。我們假定每一個漢字的頻率是
p1, p2, p3, ..., p6700
它們編碼的長度是
L1, L2, L3, ..., L6700
那麼,平均編碼長度
p1×L1 + p2×L2 + ... + p6700×L6700
香農第一定理指出:這個編碼的長度的最小值是漢字的信息熵,也就是說任何輸入方面不可能突破信息熵給定的極限。當然,香農第一定理是針對所有編碼的,不但是漢字輸入編碼的。這裏需要指出的是,如果我們將輸入法的字庫從二級國標擴展到更大的字庫 GBK,由於後面不常見的字頻率較短,平均編碼長度比針對國標的大不了多少。讓我們回憶一下漢字的信息熵(見
http://www.googlechinablog.com/2006/04/4.html),
H = -p1 * log p1 - ... - p6700 log p6700。

我們如果對每一個字進行統計,而且不考慮上下文相關性,大致可以估算出它的值在十比特以內,當然這取決於用什麼語料庫來做估計。如果我們假定輸入法只能用 26 個字母輸入,那麼每個字母可以代表 log26=4.7 比特的信息,也就是說,輸入一個漢字平均需要敲 10/4.7= 2.1 次鍵。
如果我們把漢字組成詞,再以詞爲單位統計信息熵,那麼,每個漢字的平均信息熵將會減少。這樣,平均輸入一個字可以少敲零點幾次鍵盤。不考慮詞的上下文相關性,以詞爲單位統計,漢字的信息熵大約是8比特作用,也就是說,以詞爲單位輸入一個漢字平均只需要敲 8/4.7=1.7 次鍵。這就是現在所有輸入法都是基於詞輸入的內在原因。當然,如果我們再考慮上下文的相關性,對漢語建立一個基於詞的統計語言模型(見
http://www.googlechinablog.com/2006/04/blog-post.html),我們可以將每個漢字的信息熵降到 6 比特作用,這時,輸入一個漢字只要敲 6/4.7=1.3 次鍵。如果一種輸入方法能做到這一點,那麼漢字的輸入已經比英文快的多了。

但是,事實上沒有一種輸入方法接近這個效率。這裏面主要有兩個原因。首先,要接近信息論給的這個極限,就要對漢字的詞組根據其詞頻進行特殊編碼。事實上像王碼這類的輸入方法就是這麼做到,只不過它們第一沒有對詞組統一編碼,第二沒有有效的語言模型。這種編碼方法理論上講有效,實際上不實用。原因有兩個,第一,很難學;第二,從認知科學的角度上講,人一心無二用,人們在沒有稿子邊想邊寫的情況下不太可能在回憶每個詞複雜的編碼的同時又不中斷思維。我們過去在研究語言識別時做過很多用戶測試,發現使用各種複雜編碼輸入法的人在脫稿打字時的速度只有他在看稿打字時的一半到四分之一。因此,雖然每個字平均敲鍵次數少,但是打鍵盤的速度也慢了很多,總的並不快。這也就是爲什麼基於拼音的簡單輸入法佔統治地位的原因。事實上,漢語全拼的平均長度爲 2.98,只要基於拼音的輸入法能利用上下文徹底解決一音多字的問題,平均每個漢字輸入的敲鍵次數應該在三次左右,每分鐘輸入 100 個字完全有可能達到。

另外一個不容易達到信息論極限的輸入速度的原因在於,這個理論值是根據一個很多的語言模型計算出來的。在產品中,我們不可能佔有用戶太多的內存空間,因此各種輸入方法提供給用戶的是一個壓縮的很厲害的語音模型,而有的輸入方法爲了減小內存佔用,根本沒有語言模型。拼音輸入法的好壞關鍵在準確而有效的語言模型。另一方面,由於現有輸入方法離信息論給的極限還有很大的差距,漢語輸入方法可提升的空間很大。

 

輸入法(拼音轉漢字)和尋找最短路徑一樣,都是動態規劃。

 

個性化的語言模型:

訓練一個個性化的語言模型,並且要處理好它和通用語言模型的關係。

訓練一個一元模型不需要太多數據,經驗做法:用戶詞典,是一個小規模的一元模型加上非常小量的N元組。

更好的訓練個性化的語言模型,需要用到餘弦定理和文本分類技術。

最好的辦法是 綜合 通用模型 和 個性化模型。使用最大熵的簡化模型:線性插值的模型

新的組合模型不確定性小,是更好的模型。

 

轉自《數學之美》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章