以下内容学习、摘录自《数学之美》
亚洲语言及所有非罗马拼音式的语言( non-roman Languages)的输人原本是个间题,但是近20年来,以中国为代表的亚洲国家在输入法方面有了长足的进步,现在这已经不是人们使用计算机的障碍了。以中文输入为例,过去的25年里,输入法基本上经历了以自然音节编码输入,到偏旁笔画拆字输入,再回归自然音节输入的过程。和任何事物的发展一样,这个螺旋式的回归不是简单的重复,而是一种升华。
输入法中对汉字的编码分为两部分:对拼音的编码(参照汉语拼音标准即可)和消除歧义性的编码。对一个汉字编码的长度取决于这两方面,只有当这两个编码都缩短时,汉字的输入才能够变快。早期的输入法常常只注重第一部分而忽视第二部分。
由于种种原因,早期的拼音输入法不是很成功,这就给其他输入法的迅速崛起创造了条件。很快,各种中文输入法如雨后春笋般地冒了出来,总数上,有的报道说有上千种,有的报道说有三千多种。到20世纪90年初,各种输入法的专利已经有上千件,以至于一些专家认为中国软件行业之所以上不去,是因为大家都去做输入法了。所有这些输入法,除了少数对拼音输入法的改进,大多是利用26个字母和10个数字对汉字库(二级国标汉字)中6300个左右的常见字直接编码。大家知道,即使只用26个字母编码,三个键的组合也可以表示26≈17000个汉字,因此,所有这些编码方法都宣称自己能两三个键就输入一个汉字,常见字两个键,非常见字三个键也足够了。其实这里面没有什么学问,很容易做到。
但是,这些复杂的编码要让人记住几乎是不可能的,因此这里面的艺术就是如何将编码和汉字的偏旁、笔画或者读音结合,让人记住。其实,这些输入法的编码方法从信息论的角度来看都在同一个水平,互相也比不出什么优劣。但是为了证明自己的方法比别人的快,大家继续走偏,单纯追求击键次数少,最直接的方法就是对词组进行编码。但这样一来,使用者就更无法记住了,只有这些输入法的表演者能记住。这已经不是技术的比赛,而是市场的竞争。最后,王永民的五笔输入法暂时胜出,但并不是他的编码方法更合理,而是他比其他发明者(大多数是书呆子)更会做市场而已。现在,即使五笔输入法也已经没有多少市场了,这一批发明人可以说是全军覆没。
本书一开头就强调把语言和文字作为通信的编码手段,一个重要目的是帮助思维和记忆。如果一个输入法中断了人们的思维过程,就和人的自然行为不相符合。认知科学已经证明,人一心无二用。
最终,用户还是选择了拼音输入法,而且是每个汉字编码较长的全拼输入法。虽然看上去这种方法输入每个汉字需要多敲几个字,但是有三个优点让它的输入速度并不慢:第一,它不需要专门学习;第二,输入自然,不会中断思维,也就是说找每个键的时间非常短;第三,因为编码长,有信息冗余量,容错性好。
如果对每一个字进行统计,而且不考虑上下文相关性,大致可以估算出它的值在10比特以内。如果假定输入法只能用26个字母输入,那么每个字母可以代表log26≈4.7比特的信息,也就是说,输入一个汉字平均需要敲10/4.7≈2.1次键。聪明的读者也许已经发现,如果把汉字组成词,再以词为单位统计信息熵,那么,每个汉字的平均信息熵将会减少。这样,平均输人一个字可以少敲零点几次键盘。不考虑词的上下文相关性,以词为单位统计,汉字的息熵大约是8比特,也就是说,以词为单位输入一个汉字平均只需要8/4.7≈1.7次键。这就是现在所有输入法都是基于词输入的根本原因。当然,如果再考虑上下文的相关性,对汉语建立一个基于词的统计言模型(见第3章“统计语言模型”),就可以将每个汉字的信息熵到6比特左右,这时,输入一个汉字只要敲6/4.7≈1.3次键。如果种输入方法能做到这一点,那么汉字的输入已经比英文快得多了
拼音转汉字的算法和在导航中寻找最短路径的算法相同,都是动态规划。这听起来多少有点牵强,拼音输入法和导航又有什么关系呢?其实可以将汉语输入看成一个通信问题,而输入法则是一个将拼音串变到汉字串的转换器。每一个拼音可以对应多个汉字,把一个拼音串对应的汉字从左到右连起来,就是一张有向图,它被称为网格图或者篱笆图( Lattice),形式如下。
寻找最大概率的问题就变成了寻找最短路径的问题。这样就可以直接利用动态规划算法实现拼音输入法中最重要的拼音到汉字的转换问题。数学的妙处在于它的每一个工具都具有相当的普遍性,在不同的应用中都可以发挥很大的作用。
从理论上讲,只要语言模型足够大,拼音输入法的平均击键次数就可以接近信息论给的极限值。如果把输入法放在云计算上,这是完全可以实现的,而在客户端上(比如个人电脑上)这样做不现实。好在客户端有客户端的优势,比如可以建立个性化的语言模型。
我们在最大熵模型中介绍过,把各种特征综合在一起最好的方法是采用最大熵模型。当然,这个模型比较复杂,训练时间较长,如果为每一个人都建立这样一个模型,成本较高。因此可以采用一个简化的模型:线性插值的模型。这种线性插值的模型比最大熵模型效果略差,但是能得到大约80%的收益。(如果最大熵模型比原来的通用模型的改进收益是1000%的话。)顺便说一句, Google拼音输入法的个性化语言模型就是这么实现的。
汉字的输入过程本身就是人和计算机的通信,好的输入法自觉地遵循通信的数学模型。当然要做出最有效的输入法,应当自觉使用信息论做指导。