t9輸入法,名字聽起來陌生,可是大家卻經常使用它。可以說t9輸入法是輸入法歷史中的一次革命。至少自t9輸入法開始,輸入法有長足的進步。
如圖手機中九個數字鍵。26個英文本母被分配到2至9這8個數字鍵上。以前想輸入英文單詞的時候總是需要連續多次按某個鍵,才能得到目標字母。比如想輸入「hello」,就需要按兩次4,兩次3,三次5,三次5,三次6.輸入乙個單詞需要數十次的按鍵,更何況還有經常按錯的情況。編輯一條簡訊非常麻煩。
t9輸入法很好的解決了這一問題。使用者利用9個數字鍵輸入非常雜的英文單詞並且不用重複按某個字元。系統將會根據已有詞庫找出可能性最大的單詞。例如,目標單詞為「hello」,只需輸入4,3,5,5,6即可,系統會自動過濾掉不合法的單詞如「gdjjm」。排除非法單詞,只考慮合法單詞,這樣大大加速了輸入速度。
然而這只是第一步,因為每次輸入數字之後,可能有多個候菜單詞字首與此匹配。這就需要按可能性提供可能性最大的(最常用)的英文單詞。比如系統已知兩個單詞:"idea","hello"。idea最常用(可能度最高)。那麼當依次輸入4,3,5,5,6時,對於每次按鍵系統給出的候菜單詞應該是:
i (4)
id (3)
hel (5)
hell (5)
hello (6)
這樣的話,通過t9輸入法就可以大大提高輸入速度和簡潔度。
如何實現t9輸入法呢?
(1)建立詞庫
將大量單詞儲備起來便於快速查詢,字典樹無疑是很好的選擇。每個節點將儲存此字首的可能度,結構如下:
/*
* 字典樹
*/public class trie }
public void insert(string str, int probablity) else
} }public int search(string str) else
} return p.probablity; }
}
(2)查詢
建立好的字典樹,每個節點最多有26個孩子分別代表下乙個字元。當給出乙個查詢串「43556」的時候,利用廣度優先遍歷來搜尋長度x的所有字首的可能度。找出最大的即可。廣搜的時候要用到佇列。
舉例模擬過程:
當輸入4(g,h,i)之後,通過字典樹遍歷發現只有"h","i",找出可能讀最大的輸出(i),並將h,i都入隊。
輸入3(d,e,f)後,拿出佇列中的"h",分別組成"hd","he","hf",去字典樹中查,將其中合法串入隊,記錄最大可能度對應串。再將h出隊。對"i"做同樣操作。最終找出最大的可能讀最大串。
……可以看出廣搜的過程中大量剪枝,以及常用單詞的長度最多不過十幾個字母。所以字典樹的深度也是十幾,加上大量剪枝,效能還不錯。
static int ref = ,
, ,//按鈕2,三個字母a,b,c
, ,, ,
, , };
public static queuequeue = new linkedlist(); //用於廣度優先遍歷過程中的佇列
public static trie trie; //字典樹
public static void bfs(string str)
if(trie.search(tempstr) > max_probablity)
}queue.poll();
} if("".equals(probastr)) else
} while('1' != str.charat(i++))
}
思考:1.以上模擬過程只是給出最大可能度的串,也可以按可能度將所有匹配串按順序都給出,然後由使用者選擇。
2.感覺t9輸入法打破了之前輸入法的僵局,雖然只是用在手機輸入。但是個人認為當前流行的智慧型鍵盤輸入法也採用了類似的處理。比如利用搜狗輸入法依次輸入"hao""zi""wei""zhi"
給出的最大候選依次為:「好」「耗子」「好滋味」「好自為之」。是不是有點t9輸入法的味道?如果有興趣的話可以交流討論!
智慧型T9英文輸入法
智慧型t9英文輸入法 time limit 1s memory limit 1000k total submit 1556 accepted 534 某款新型手機為了方便使用者,希望開發一種新的英文輸入法.要求在輸入英文的時候輸入法不但能夠做到自動聯想,還能進行自動 糾錯.譬如使用者希望輸入hell...
乙個轉來的簡單T9輸入法
關於t9輸入法的核心程式 由朋友nix提供 共兩個檔案,乙個是nixinputmethod.h,還有乙個是t9.c 參見附錄。具體輸入法的實現方法如下 1 首先建立乙個對話方塊,然後在其中放入兩個控制項 idc edit1 和 idc word static控制項 2 為了實現在edit中一邊輸入,...
T9手機輸入法的發明者Martin King
martin king是曾經最流行的手機文字輸入法t9的發明者,2010年9月21日因癌症醫治無效去世,享年60歲,他長期抗爭的疾病來自越南戰爭時期美軍試用的橙劑所誘發。他的生命如同隕星短暫地掃過天空,整個世界都從他的才智中受益非淺。martin king最大的貢獻就是為所有手機使用者熟知的t9輸入...