T9输入法实现原理和步骤

         T9输入法全名为智能输入法,字库容量九千多字,支持十多种语言,是由美国特捷通讯软件公司开发的,该输入法解决了小型掌上设备的文字输入问题,已经成为全球手机文字输入的标准之一。

       一般手机拼音输入键盘如图:

                         T9输入法实现原理和步骤_第1张图片 

      在这个键盘上,我们对比下传统的输入法和T9 输入法,输入“中国”两个字需要的按键 次数。传统的方法,先按4次9,输入字母z,再按2 次4 ,输入字母h ,再按3 次6,输入字母o,再按2 次6,输入字母n ,最后按1次4,输入字母g 。这样,输入“中”字,要按键12次,接着同样的方法,输入“国”字,需要按6次,总共就是18 次按键。  如果是 T9,我们输入“中”字,只需要输入:9、4、6、6、4,即可实现输入“中”字,在选择中字之后,T9会联想出一系列同中字组合的次,如文、国、断、山等。这样输入“国”字,我们直接选择即可,所以输入“国”字按键0次,这样T9 总共只需要5 次按键。 这就是T9 智能输入法的优越之处。正因为T9 输入法高效便捷的输入方式得到了众多手机厂商的采用,以至于T9成为了使用频率最高知名度最大的手机输入法。

     先将汉语拼音所有可能的组合全部列出来,如下所示:

    const u8 PY_mb_space[]={""};

    const u8 PY_mb_a   []={"啊阿腌吖锕厑嗄錒呵腌"};

    const u8 PY_mb_ai  []={"爱埃挨哎唉哀皑癌蔼矮艾碍隘捱嗳嗌嫒瑷暧砹锿霭"};

    const u8 PY_mb_an  []={"安俺按暗岸案鞍氨谙胺埯揞犴庵桉铵鹌黯"};

                      更多组合见代码: http://blog.csdn.net/markmin214/article/details/8730671

     我们将这些组合称之为码表,然后将这些码表和其对应的数字串对应起来,组成一个拼音索引表,如下所示:

    const py_index py_index3[]=

    {

           {"","",(u8*)PY_mb_space},

    {"2","a",(u8*)PY_mb_a}, 

           ……

  {"586","lun",(u8*)PY_mb_lun}, 

  {"586","luo",(u8*)PY_mb_luo}, 

  {"586","kun",(u8*)PY_mb_kun}, 

  {"586","kuo",(u8*)PY_mb_kuo}, 

            ……

   {"94664","zhong",(u8*)PY_mb_zhong},

   {"94824","zhuai",(u8*)PY_mb_zhuai},

   {"94826","zhuan",(u8*)PY_mb_zhuan},

    }

    其中py_index 是一个结构体,定义如下:

     typedef struct

     {

          u8 *py_input; //输入的字符串

          u8 *py;      //对应的拼音

         u8 *pymb;    //码表

      }py_index;

           py_input是与拼音对应的数字串,比如“94824 ”。py是与py_input 数字串对应的拼音,如果py_input=" 94824 ”,那么py 就是“zhuai ”。最后pymb,就是我们前面说到的码表。注意,一个数字串可以对应多个拼音,也可以对应多个码表。

     在有了这个拼音索引表(py_index3)之后,我们只需要将输入的数字串和py_index3 索引 表里面所有成员的py_input 对比,将所有完全匹配的情况记录下来(例如记录在py_index **matchlist中),然后由用户选择可能的拼音组成(假设有多个匹配的项目),再选择对应的汉字,即完成一次汉字输入。当然还可能是找遍了索引表,也没有发现一个完全符合要求的成员,那么我们会统计匹配数最多的情况,作为最佳结果,反馈给用户。比如,用户输入“323”,找不到完全匹配的情况,那么我们就将能和“32”匹配的结果返回给用户。这样,用户还是可以得到输入结果,同时还可以知道输入有问题,提示用户需要检查输入是否正确。

   一个完整的T9 拼音输入步骤(过程):

    1)输入拼音数字串

         我们用到的T9 拼音输入法的核心思想就是对比用户输入的拼音数字串,所以必   须先由用户输入拼音数字串。

    2 )在拼音索引表里面查找和输入字符串匹配的项,并记录

       在得到用户输入的拼音数字串之后,在拼音索引表里面查找所有匹配的项目,如果有 完全匹配的项目,就全部记录下来,如果没有完全匹配的项目,则记录匹配情况最好的一个项目。

    3 )显示匹配清单里面所有可能的汉字,供用户选择.

       将匹配项目的拼音和对应的汉字显示出来,供用户选择。如果有多个匹配项(一个数字串对应多个拼音的情况),则用户还可以选择拼音。

    4 )用户选择匹配项,并选择对应的汉字.

       用户对匹配的拼音和汉字进行选择,选中其真正想输入的拼音和汉字,实现一次拼音输入。

    以上4 个步骤,就可以实现一个简单的T9 汉字拼音输入法。 

  相关的代码:http://blog.csdn.net/markmin214/article/details/8730671

            




                 顶一下吧O(∩_∩)O谢谢支持

你可能感兴趣的:(T9输入法实现原理和步骤)