从输入法谈确定性的代价
中文输入法中,由于键盘只有26个字母,却要对通用规范汉字表收录的8015个汉字进行编码。
由于汉字结构相似,部首只有300个左右,且拼音音节只有413个,算上读音也只有1300个。
只能通过多个字母来对应单个汉字或多个汉字。
这样一来,最主要的问题就是重码问题,即如何让一串字符对应单个汉字。
在有重码时,比如全拼输入方案,平均一个拼音对应20个汉字(8015/413),如何选择出一个确定的汉字,这个是一个面对选字不确定性的问题。
在这点上,不同的输入方案,对此的解决方案不同。
对于全拼输入法,主要的解决方案是让用户打词。由于同音的单字个数太多,而同音的词语较少,于是有词打词成了主要是输入方案。但由于同样发音的词语还是较多,比如shishi对应的词有:“实施,事实,试试”等。这时,单纯的大词库不是一件很好的解决方案,因为它会提供非常多的同音选项给人选择,会降低选词的效率。
于是,现有的智能输入法会通过之前的输入内容,预测用户当前想要打的词语,显示恰当的词语顺序。在云输入的帮助下,拼音输入法有在输入长句或网络用语等新词时优势明显。在它显示候选词时,会按照字词出现的概率(频率)来排列字词,也一种降低不确定性的方法。但依旧不能完全解决输入字词句发音后出现多个候选的问题,也就是得到的输出结果依旧是不确定的。
那其它人是怎么解决这个问题呢?
为了确定性的选字,就需要对每个字进行编码,输入时通过多个字母的组合,确定性的输出字词。
有人开发出了形码等通过仅通过字形或附加字形来输入汉字的方式,如五笔、音形等输入方案。为达到近乎100%的确定性,它们对常用的字或词进行编码,给每个字词分辨不同的编码。同时为提高输入的效率,减少输入的码长,他们会把常用字用短编码来表示,并限制了单字对应的最大编码。这种方案最大的难点就在于,需要找一个有规律、规律易学且重码低和码长短的方案。单纯的通过编码来提高输入效率,容易制造出一个无规律、无人能驾驭的输入法,字词会被编码的毫无理解性。
比如五笔是将一个字形拆成不同字根,字根按横、竖、撇、捺、点为分类,规律排布在25个字母上。打字时分别输入一个字拆成的不同字根,来输入汉字。其优点是,在知道每个字对应拆字结果的编码后,在绝大多数情况下,可以不看屏幕打字。
但需要背下五笔的所有字根,及每个汉字的拆字方式。才能顺利打字,学习成本较为高昂。
于是,现有的输入方式,均是在确定性与学习成本之间谋求平衡。
比如,对全拼用户,能短时间显著提高输入效率的输入方式是双拼,即一个按键表示声母,一个按键表示韵母。通过双拼能有效缩短全拼所需的字母数量,在一两周内能提高近30%的打字速度。
只是依旧不能避免同音时需要选字的问题。这时可以考虑挂辅助码或者学习音形帮助选字。
辅助码主要是在输入一个字的拼音后,继续输入组成这个字的字根的读音,来筛选出想要打的汉字。
但如果想要100%的确定性,就需要学习音形、甚至形码。这样,学习成本会明显提高,这也是100%确定性的代价,即大量的“记忆”汉字编码。其最主要的优点,就是自己所有的行为都是确定的。
如果只是为了快速输入,那么一个调教好的词库配合双拼,通过大量的词组输入,其实就可以把输入的速度提升。然后对于单字,再使用辅助码来帮助选字即可。