汉字输入到底能有多快?输入法狂想杂记

写这篇文章主要讲述对于个人偶然的一个想法,在极其不成熟的条件下走过的探索的过程以及探索过程中的一些收获。

关键词:输入法,打字速度,2012德国红点设计奖(全球顶级工业设计奖项)

感慨:大奖离我如此之近,又如此之远。我在很早之前就想到这样的设计思路,但是没有做出来。不过一切都在情理之中。做的好的,上帝不会亏待。

先看看本人近期的输入记录统计吧。

数据统计区间:2013.5.11 - 2013.6.9 (共29天)

输入总字数:64434字

今日输入总字数:6449字

当前打字速度:40字/分钟

今天最快速度:81字/分钟

历史最快速度:86字/分钟(这是新电脑记录,原纪录98字/分钟)

我在大一的时候要写点材料用同学的电脑打字,因为寝室卫生很糟糕,键盘巨脏,加上他们经常打游戏的缘故,键盘不灵敏,按键很费劲,另外电脑上的输入法也巨不爽,是神马智能ABC,搞了半天没打多少字,回去的路上我就开始琢磨怎么着可以让打字更快,让用户使用起来不那么麻烦,如果我是输入法的开发者我应该搞出一个什么样的输入法来。神马智能ABC,一点也不智能,很多东西并没有他们宣传的这么好,那客观看待,他们到底是什么样的一种状态呢?开始想啊想,当时还没什么数学基础和数学建模意识。就开始从这最直观的键盘布局上着手,开始了解键盘的设计历史,输入法的演进历史,各种输入法的对比等等,搜集了很多资料,碰巧又赶上2008年九月份Google有个全球创意征集计划10100,全球筛选五个创意项目,每个项目200万美刀,开始黄箱我要是种了这张彩票了该那啥啥了,哈哈!于是乎很激动的写了下面这一篇自认为比较通俗的文章,事实上也确实比较那啥,你懂的,贴过来供大家练习拍砖使用

电脑的处理速度越来越快,软件开发也越来越丰富,电脑的整体性价比越来越高,互联网发展如火如荼,可有一样东西始终在原地踏步,那就是电脑的键盘——所有使用电脑的人必用的设备之一。虽然也有了触屏输入,但无非是从硬键盘变成了软键盘,本质上没有改变,从设计思想上来讲并没有飞跃。对于电脑初学者,打字都是必过的一关,也即是熟悉看起来并没有什么规律可言的电脑键盘。这对于年轻人来说或许比较容易些,但对于老年人和其他特殊群体来说就不是那么容易了。打字要求使用者会拼音、五笔等基本常识,也有手写输入但速度比较慢。对于其中很多人来说并没有学习过拼音,五十岁以下的人会拼音的或许多些,五十岁以上的人会拼音的比率可能就小些,因为拼音方案不过才使用几十年而已,过去汉语的读音不是像今天这样表示的。而五笔作为一种目前来说最高效的输入方法对于即便是大学生这样的高智商群体接受和普及起来也有一定的困难,大部分人还是选择使用拼音作为打字的第一选择,首先因为这不需要重新学习其他知识,只需要对电脑的键盘做熟悉了解即可,其次这符合思维心理,想一个字的读音,而不是写法,就像日常说话一样。所以很多人会说话,但是不会写字的缘由就在这,但是目前的拼音输入法用起来并不是那么方便,传统的思路是让人去适应电脑,那么能否让“聪明的”电脑去适应人,提供一种个性化的服务呢?现做出以下构想:(个人自评:当时意识到拆字影响思维,但是没用专业的词汇表达清晰,例如吴军博士的,认识科学方面的研究讲,拼音输入符合认知心理学;拼音输入法取代五笔有背后的逻辑)

(1)键盘设计的最大硬伤:布局不合理

电脑键盘的布局来源:关于现在流行的键盘布局设计来源的一种说法:在还没有电脑的时候,打字员使用打字机打字。最开始打字机的字母排列顺序也是ABCDEFG这样的,但是经常出现的问题是键盘不能及时弹回复位,打字速度比较慢。之所以不能及时弹回复位是因为当时的工业水平还不能制造出弹性很好的弹簧使键盘很快复位,于是设计者就尝试着把键盘顺序打乱,降低打字者的打字速度,这样就不会出现键盘难以复位的情况了。打字机很快普及,这种键盘布局方案也得以广泛流传。到后来工业上能够制造出性能很好的弹簧了,但是这种布局方案已经流传的太久了,没有人愿意再去重新学习一种新的方案,企业也不愿意投资去培训员工去学习一种更高效的打字方案。所以这种QWER型的键盘布局方案就这样一直流传到现在。没有人愿意去改变,尝试一种新的方案。也曾经有一些工程师设计出一些“最合理的”键盘,但是没有一个能够被市场接受,只停留在实验室阶段或者概念阶段。原因依然是因为强大的“标准”惯性。(个人自评:了解一个产品为什么是这样子的,它刚开始什么样子的,比如火车轨道的宽度决定于几百年前罗马马车等。现在的这个样子是不是最合理的,它是怎么来的?往往不是一开始就这个样子的)

标准化设计的局限:

默认前提:右手习惯,手指,胳膊长度,视力等符合初始设计标准等;(个人自评:似乎这个还有点思考深度,找出默认的平常不会注意到的限制选项,Out of box,吴军博士的个性化语言模型有提到,同样对于硬件也可以进行群体的个性化定制,因为基数足够庞大,每一项定制都会有一定规模的市场,比如左撇子)

世界上大多数人是右撇子,而在打字的过程中,左手有时往往要担负起更多的击键任务,这样显然不合理,并且是低效的。现在的输入法比如搜狗,虽然有了个人词库等,但愿说不上是完美。使用起来依然不是那么方便。(个人自评:直观感受,缺乏量化统计分析,有思路没方法)

如果要对现行的输入法进行变革就必须从设计思想上进行变革。。(个人自评:典型的学生思维,空泛,不着地气)前面已经说到传统的设计是人来适应机器,而优秀的设计则是机器来适应人。每个人都有自己不同的特点,每种语言都自身的特点,如何让机器来适应繁多的个体,打破传统的标准束缚呢?靠一劳永逸的重新布局键盘是不可能的,但要改变这个键盘布局还必须得改变,如何克服这一矛盾?现在的输入法软件公司和键盘生产者绝对不会坐视挑战其利益的新兴者不顾。既然是革新就必然有利益的重新分配。要恰当的处理好这个问题,不仅仅是技术和设计上的问题,但本质和关键还在技术和设计。(个人自评:考虑到现实的阻力,没理想化,把产品开发和市场推广统筹考虑,但是不够深入,依旧缺少方法和落地措施)

那些工程师们做出来的概念产品使用的输入法依然是传统的输入法,只是把键盘布局这个硬伤给“一下子”解决了,这个没有成功的原因,第一是因为没有给用户带来明显的效率上的提高,大多用户甚至不会去尝试,所以也就不会有比较,也不会有重新选择,也就不会有革新,选择权在用户手中。那么直接的改变键盘布局显然不行。既然输入法和键盘都有问题,配合使用并不算完美,那么将两者都做一些微小的改变会不会提供一些思路呢?

(2)改建软件的启发:很多游戏中都有改建功能,即将用户最长使用的几个功能键移植到用户最方便击打的几个键上,以便用户使用。那么这个模型能否扩大一下到整个电脑键盘?仅仅然用户去自定义是不行的,用户需要诱导。“人们通常不知道自己想要什么,除非你秀出产品给他们看”——乔布斯。“如果当时我问顾客想要什么,那么,他一定回答说一匹更快的马”——福特。用户掌握最终选择自定义的权利,但是还必须有一套让他们去尝试的比较完备的方案,这是一种开放式的方案,用户可以根据自己的需求和习惯进行修改。(个人自评:见微知著,从特例抽象出一般思维,值得发扬,但是不够深入,改建软件的产品设计思维是什么?方便,效率!通过可以改变的程序改变不可改变的键盘布局完成自己的目的)

(3)组合快捷键:比如,汉语拼音里有声母和韵母之分,声母有zh,sh,ch等组合,韵母有ing,ang,ong等组合其他语言里也有常用的组合,如果将这些常用的组合设置快捷键,那么就可以有效的减少击键次数,提高打字效率。(个人自评:自以为聪明的设计,殊不知前人已经做过了,并且碰了钉子)对于自定义的快捷键,如果比较少比较常用的话,还可以记住,但是当整个键盘布局被打乱重新布局之后就不是那么容易了,这时可以给键位上贴上识别用的贴膜。这在个人电脑上可以比较容易实现,但是在公用电脑上就不是那么容易了,不可能到哪都带着贴膜,而自己的习惯是已经养成了再改也就不是那么容易了。再去用传统的电脑键盘可能就有些不适应了,那么可以在这种方案的键盘获得大面积推广的时候,推出带LED的键盘。即每个键位的显示是靠用户自定义的,登录输入法客户端,键盘就会根据网络上保存的用户习惯数据显示每个键的字母和功能。这样的话,也许以后的用户打开电脑的第一件事就不是登录QQ等聊天软件了,而应该是登录输入法客户端。(个人自评:理论上输入法是可以成为窗口软件,但是只在理论上,过了几年到现在依旧没有成为事实)

(4)语法:一般用户不会直接输入一个长句子后逐个选择词,而是以两个或者三个位基本单位进行输入,这也符合汉语的构词方式,以二个字的词为最多。现在的输入法只识别单个的字和词,而不会根据前后文给出用户最可能需要的词,或者把用户最可能使用的词放在比较靠前的位置,这一点有很大的改进空间。比如比如我上文打的“以两个字的词为最多”,如果我打的是“yilianggezideciweizuiduo”则显示的是“一两个字的词尾最多”,显然这就不符合语法,不符合用户期望,我下文再分开打“yiliangge”,还会出现“一两个”作为第一选择,显然这不是一个“聪明”的输入法。

(5)专业词库:不同的人有不同的职业,在不同的环境下有不同的需求,对于各种词语的使用频率也就不一样,所以对于词语的排序就不能按照统一的规则。自然科学和社会科学的工作人员显然用的词的频率不会太一样。面向大众的输入法,其词序排列是最大众化的一种统计后的结果,但并不能让每一个使用这个的人都达到理想的使用效果,所以还需要对这些进行个性化的设置。以化学为例:比如一个人是搞化学的,他可能就需要经常输入各种元素符号,各种人名反应等专业术语,而这些术语在普通的输入法上也是可以打出来的只是比较慢,需要翻页选择等等。而化学符号在一般的输入法里是打不出来的,需要用专业的软件制作后复制,比较费事。还有就是各种复杂的化合物的结构式,这需要用专门的软件进行输入然后复制,比较麻烦,降低了专业工作者的效率。有时很常用的一个符号需要经常输入,却不得不反复的进行复制粘贴。如果能够将这些也存进词库,设置一键输入无疑将给专业工作者带来很大的方便。还有就是对于初学者,对于有些知识只知道其中的一个方面,比如我只知道一个化合物的名称,但是不知道结构式是怎么写的,通常我需要上搜索引擎去找结果,但是当没有联网的时候就比较麻烦了,再者专业工作者的电脑有很多为了防止重要资料被窃一般不联网。如果能够提供专业词库下载,比如我输入“乙烷”就会在选择框里有乙烷的结构式供选择,这样无疑会方便很多,对于科研工作者发现的新的物质,自己解构出来的可以自定义词库,方便其后续输入。如果输入法能够提供专业词库,将这些各行各业的人常用的专业词汇,大众基本上不用的词汇做分门别类的汇总,由用户在使用时选择输入模式,则词条的匹配就会按照专业的需求进行,从而提高输入效率。鉴于这些专业词库的使用者不是很多,是否采取收费模式下载或者积分兑换这个作为商业模式另行考量。但可借鉴百度文库等平台,贡献者贡献新的文档,然后用积分换取其他文档。这些符号不必由开发人员一一输入编辑,可以让用户自己来编辑,上传,像百度百科那样给予编辑词条的用户积分。让开发人员编辑所有符号也是不现实的,一个人甚至一群人也不可能什么都知道。(个人自评:其实总结起来4和5说的都是一个个性化客户端提高输入效率的问题,想法是好的,但是表达起来不清晰,重于细节描述,没认识到精髓并简单表达。把复杂的东西简单化需要思维积淀,水之积也不厚,其负大舟也无力)

(6)一键输入:对于汉语中的一些常用字,比如“的”“你”“我”“他”等(这些有学者统计过汉字使用频率可以参考),可以设置一键输入,而不必再用拼音打出然后空格确定。字母键上方的数字键在全键盘电脑上基本上处于闲置状态,输入数字一般用右侧的数字键。能否将这些数字键进行改建是用户可以一键输入自己常用的一些字词甚至句子。这样就可以有效的利用键盘上的每一个键位,充分提高打字效率。(个人自评:个人想象,未必能够经过市场检验和认可,不一定符合大多数用户的习惯,习惯的培养并不容易)

(7)重新排列键盘布局:这个需要有人体工程学和统计学等学科的支持来制定出最方便的键盘布局,但不能立即投入推广。从现在的键盘布局到最终的布局需要一个比较长时间的渐进过程。现在最主要的应该是软件性能的提高,这也是相对比较容易实现的。如果一个用户经常把G打成H那么就可以把二者的位置调换一下,这只是在俩个键之间,如果扩大到多个键之间,这个数学模型就比较复杂了。比如用户可能有漏打声母,将平舌音打成翘舌音,将xian打成xain等,这些都是可以加以改进的,而不用用户每次都得删除重新输入,可以将错就错,错的多了,错的就是规则。(个人自评:让机器适应人,有点意思,估摸着要先从发烧友开始练手)

(8)保密防木马:鉴于木马工作的原理我尚不是很清楚,只知道木马可以记录用户的击键行为。如果仅仅是这样,那么就可以通过改键让这中记录失去意义。比如按照现在布局的键盘输入abcde,而实际上我输入的是12345或者其他,或者我就一个快捷键输入设定好的密码,这样木马即便记录也只记录了一次击键行为,而我输入的是一串字符,记录无效,用密码学的话说就是编码规则发生了变化,而解码规则没有对应发生变化,解码必然失败。即便击键行为被记录,用户账号和密码还需要重新破解。另外也可以加入冗余设计或者组合设计比如设置O、L等键为冗余键,即击键行为可以被记录,但是实际上不输入任何数据。或者是组合设计,类似上文所说的一键输入,例如I键输入ING,一个键代表三个,这样即便被木马记录到,再破解起来就更加困难。其余像组合键等等有待进一步探讨。(个人自评:如果每个客户端的解码方式不一样的话,确实有这种可能性,但是专业知识的积淀依旧非常欠缺,最基础的原理都没搞清楚)

(9)键盘造型外观设计:这一块有很大的商业空间,即便是目前的键盘布局基础之上。目前流行的菱形和四方形的键盘是否是最完美的,这个暂不确定。但是就键盘的美学设计方面来说还有很大的提升空间,即个性化,不只是黑白色,不只是固定布局,材质上能不能换成其他的,比如木质的,玻璃的等。这一部分我们可以很快的实现商业化运作。LED技术能否在电脑键盘上应用,如何把键盘做的更炫?(个人自评:理论上把技术和艺术搞到一起是很那啥啥的,比如乔帮主,归根到底想到不如做到,也许不止你一个人在想这个玩意,有想法,没啥稀罕)

手机键盘的设计对于电脑键盘的设计有没有可借鉴之处?

各功能键位布局是否可以根据个人需求作为类似七巧板来回移动调换?(个人自评:2012年德国红点设计的奖项即是这么干的)

能否把游戏设计的思想借鉴到输入法中?

语言学和体质人类学的思想如何更好的为计算机设计提供帮助?

输入法和文字处理软件如何更好的功能互补使电脑的运作更加有效?

如何满足少年,儿童群体的使用需求,设计合理的尺寸?

如何针对残疾人群体设计出最方便其使用的输入工具和输入法?(个人自评:少年,工程很庞大,先琢磨一下搞一些简单的出来维持团队生存再琢磨更炫的,先满足大众需求,再满足小众需求,不然你没钱烧)

对于一个具体的使用者来说,除了一般意义上会遇到的这些问题,还会遇到一些自己经常遇到但是别人不经常遇到的问题,反映到概率论上可以这么说,一个数学家可能需要频繁输入一个字符,γ,但是对于另外一个作家来说,可能一辈子都用不到这个字符,对于数学家来说,γ的出现概率为万分之几,属于常用字符,但是对于作家来说就是无效字符。同样对于我们大多数人来说,可能一辈子都不会输入一个西班牙语,或者一个麦克斯韦方程式。再进行抽象一层说,就是每个人的常用语库不一样。

我很高兴的看到一些输入法做了很好的改进,在用户体验上有比较大的进步,比如搜狗最新发布的智慧输入法,当输入顺序出现错误的时候,在输入的过程中机会给出提示。

比如一些常用符号的输入,我想要一个箭头,但是找起来很麻烦,现在我直接输入箭头的拼音:

频繁翻页比较麻烦,而且翻页键比较难找,于是方向键向下出现多个选项:

还有一个可以偶尔拿出来卖弄一下的技巧就是当你不知道一个字的读音,但是知道这个字的各个组成部分偏旁的读音的时候就可以很快打出这个字,比如三个土,先输入字母U,接下来,输入,tu,tu,tu

而且还有拼音哦!基本上秒杀,我已经试过好几次了,你会瞬时迎来美女欣赏的目光,呵呵,尽情享受吧!

还有各种个性化的皮肤各个输入法都有就不说了,用户体验在一点一滴的地方做的很细微,很方便,让用户的学习成本很低,很快就可以上手。OK,这些是已经做的比较好的,还可不可以做的更好,让我们用着更舒服?接下来看一些比较炫的例子,

http://v.youku.com/v_show/id_XMzMwNDcyMjE2.html

OK,不错吧,输入的时候手指不用离开屏幕了,但是又比写字比划输入快,以第一个输入为核心进行相关扩展,快速找到可能敲击的键。

http://v.youku.com/v_show/id_XMjIzMTE3MTMy.html

这个在黑莓手机上的输入法软件做得更炫,突破了传统的物理键盘和虚拟键盘方形布局的逻辑,因为六边形可以对接六个方向,这样就有了更好的拓展性能,当你点击中心字母的时候旁边会自动弹出韵母,分一级相关和二级相关,同样手指不用离开屏幕就可以完成输入了。从击键输入到滑动输入,是思维的一次跳跃,跳出常态思维才有破坏性创新。最近腾讯又在开发一款结合两者优势的输入法,wi输入法,在此不做介绍。

着重介绍一下键盘方面的设计突破

上面这个像不像小孩子玩的拼图?但他也是键盘,而且可以打字,基本上就是我上面想象的那种键盘,不过设计者做的更炫,进行打破后重新设计,。需要告诉各位的s和i,这个名叫Puzzle Keyboard的作品获得了2012年德国红点设计界的奖项,是全球公认的设计界的顶尖奖项。

但是可以确定的是这种设计只能成为小众化的产品,不足以颠覆目前的键盘产业,因为推广学习成本依旧很好,只能摆在发烧友的家里炫耀一下,好的设计不应该只为一些人服务,应该为更多的人带来方便。希望接下来我们可以做出更好的设计

接下来看一篇吴军博士的博客看看专家和真正d哦大牛解决问题的思维方式

《数学之美》系列二十三:拼音输入法的数学原理

亚洲语言及所有非罗马拼音式的语言的输入原本是个问题,但是近20年来,以中国为代表的亚洲国家在输入法方面有了长足的进步,现在已经不是人们使用计算机的障碍了.以中文输入为例,过去的25年里,输入法基本上经历了以自然音节编码输入,到偏旁笔画拆字输入,再回归自然音节输入的过程.和任何事物的发展一样,这个螺旋式的回归不是简单的重复,而是一种升华。

输入法输入汉字的快慢取决于对汉字编码的平均长度,用通俗的话来讲就是击键次数乘以寻找这个键所需要的时间。单纯地减少编码长度未必能提高速度,因为寻找一个键的时间可能变得较长。提高输入法的效率在于同时优化这两点,而其中有着坚实的数学基础。我们可以通过数学的方法说明平均输入一个汉字需要多少次击键,如何编码能够使得输入法接近理论上的最小值,同时寻找一个键的时间又不至于过长。

1.输入法与编码

将一个方块形状的汉字输入到计算机中,本质上是一个将我们认为约定的信息记录编码——汉字,转换成计算机约定的编码的信息转换过程。键盘是一种主要的输入工具。当然还有其他输入工具,比如手写板和麦克风.一般来讲,键盘上可使用的只有26个字母加上10个数字键作为对汉字编码的基本键,外加一些控制键.因此,最直接的编码方式就是让这26个字母对应拼音,当然为了解决一些汉字的一音多字问题,得用10个数字键来消除歧义性。

这里面,对汉字的编码分为两部分:对拼音的编码(参照汉语拼音标准即可)和消除歧义性的编码。对一个汉字的编码长度取决于这两个方面,只有当这两个编码都变短时,汉字的输入才能够变快。早期输入法常常只注重第一部分而忽视第二部分。

虽然全拼输入法和汉语拼音标准一致,容易学习,但是拼音输入法早期甚至是双拼早于全拼,原因是为了缩短对拼音的编码。在双拼输入法中,每个声母和韵母只用一个键即可表示。中国最早可以输入汉字的微机中华学习机和长城0520,分别对应苹果系列和IBM系列,采用的都是双拼的输入方案。台湾地区的注音字母也等效于双拼。各家的双拼对应键字母的方式还略有不同。对应如下

这些输入法看似节省了一点编码长度,但是输入一点也不快,因为它们只优化了局部,而伤害了整体。首先,双拼输入法增加了编码上的歧义性:键盘的字母只有26个,可是汉语的声母和韵母综合却有50多个,从上表可以看到,很多韵母不得不共享一个字母键。增加歧义性的结果就是更多汉字候选中找到自己想输入的字,也就是增加消除歧义性编码的长度不断重复“翻页,扫描后续字”的过程,第二,它增加了每一次击键的时间。因为双拼的方法不自然,比全拼的方法多出来一道将读音拆成声母和韵母编码的过程。认知科学的研究表明,在脱稿输入是,拆字的过程会使得思维变慢。第三,双拼对读音的容错性不好,因为前鼻音,an,en ,in和对应的后鼻音ang,eng,ing,卷舌音ch,sh,zh和相应的平舌音,编码完全没有相似性。全中国除了北京周围的人,大部分人前鼻音和后鼻音,卷舌音和非卷舌音多少有点分不清楚,经常出现输入韵母和圣母后,翻了好几页,也找不到自己想要的字的情况。原因是一开始就选错了韵母或者声母。一个好的输入法不能要求用户一定得把每个字的音都读准,就如同一架普及型的照相机不应该要求使用者都精通光圈和快门速度的设置。

由于种种原因,早期的拼音输入法不是很成功,这就给其他输入法的迅速崛起创造了条件。很快,各种输入法如雨后春笋般地冒了出来,总数上,有的报道说有上千种,有的报道说有三千多种。各种输入法的专利到20世纪90年代初,已经有了上千种,以至于一些专家认为中国软件行业之所以上不去是因为大家都去做输入法去了。所有这些输入法,除了少数对拼音输入法的改进,大多是利用26个字母和10个数字对汉字库中6300个左右的常见字直接编码。大家知道,即使只用26个字母编码,三个键的组合也可以表示263≈17000个汉字,因此,所有这些编码方法都宣称自己能两三个键就输入一个汉字,常见字两个键,非常见字三个键也就足够了。其实这里面没有什么学问,很容易做到。但是,这些复杂的编码要让人记住几乎是不可能的,因此这里面的艺术就是如何将边和和汉字的偏旁,比划或者读音结合,让人记住。当然,每一种编码都宣称自己比其他方法更合理,输入更快。因为这些输入法的编码方法从信息论的角度来看都在同一个水平,互相也必不出什么优劣。但是为了证明自己的方法比别人的快,大家继续走偏,单纯追求击键次数少,最直接的方法就是对词组进行编码,但是这样一来,使用者就更无法记住了,只有这些输入法的表演者能记住。这已经不是技术的比赛,而是市场的竞争。最后,王永民的五笔输入法暂时胜出,但并不是他的编码方法更合理,而是他比其他发明者(大多数是书呆子)更会做市场而已。现在,即使五笔输入法也已经没有多少市场了,这一批发明人可以说是全军覆没。这一代输入法的问题在于减少每个汉字击键的次数,而忽视了找到每个键的时间。要求非专业使用者背下这些输入方法里所有的汉字编码是不现实的,这比背6000个GRE单词还难。因此,他们在使用这些输入方法时都要按照规则临时“拆字”,即找到一个字的编码组合,这个时间逼近长,而且在脱稿打字时严重中断思维。本书一开头就强调语言和文字作为通信的编码手段,一个重要的目的就是帮助思维和记忆。如果一个输入法中断了人们对的思维过程,就和人的自然行为不相符合。认知科学已经证明,人一心无二用。过去在研究语音识别时做过很多用户测试,发现使用各种复杂编码输入法的人在脱稿打字时,速度只有他在看稿打字时的一半到四分之一。因此,每个字平均敲键次数少,但是敲键的速度也满了很多,总的来安并不快。因此,广大中国计算机用户对这一类的输入法认可度极地,这是自然选择的结果。

最终用户还是选择了拼音输入法,而且是每个单词编码较长的全拼输入法。虽然看上去这种方法输入每个汉字需要多敲几个字,但是有三个有点让它的输入速度并不慢。第一,它不需要专门虚席。第二,输入自然,不会中断思维,也就是说找到每个键的时间非常短。第三,因为编码长,有信息冗余量,容错性好。比如对分布亲前鼻音an,en,in和ang ,eng,ing的人来讲,输入zhan(占)这个字,即使他以为拼音是卷舌音zhang,当输入一半的时候已经看到自己要找的字了,就会停下来,避免双拼的那种不容错问题。当然,拼音输入法照样能够做到击键次数和哪些拆字方法差不多,这也是目前各种拼音输入法做的主要工作。接下来,我们就分析平均输入一个汉字可以做到最少几次键。

2.输入一个汉字需要敲多少个键——谈谈香农第一定理

从理论上分析,输入汉字到底能有对快?这里需要用到信息论中的香浓第一定律。

如果我们把汉字组成词,再以词为单位统计信息熵,那么,每个汉字的平均信息熵将会减少。这样,平均输入一个字可以少敲零点几次键盘。不考虑词的上下文相关性,以词为单位统 计,汉字的信息熵大约是8比特作用,也就是说,以词为单位输入一个汉字平均只需要敲8/4.7=1.7次 今天各种汉字输入法已经很成熟了,随便挑出一种主要的输入法比十几年前最好的输入法都 要快、要准。现在抛开具体的输入法,从理论上分析一下,输入汉字到底能有多快。

我 们假定常用的汉字在二级国标里面,一共有6700个作用的汉字。如果不考虑汉字频率的分布,用键盘上的26个字母对汉字编码,两个字母的组合只能对676个汉字编码,对6700个汉字编码需要用三个字母的组合,即编码长度为三。当然,聪明的读者马上发现了 我们可以对常见的字用较短的编码对不常见的字用较长的编码,这样平均起来每个汉字的 编码长度可以缩短。我们假定每一个汉字的频率是

p1, p2, p3, ..., p6700它们编码的长度是

L1, L2, L3, ..., L6700那么,平均编码长度是

p1×L1 + p2×L2 + ... + p6700×L6700

香农第一定理指出:这个编码的长度的最小值是汉字的信息熵,也就是说任何输入方面不 可能突破信息熵给定的极限。当然,香农第一定理是针对所有编码的,不但是汉字输入编码的。这里需要指出的是,如果我们将输入法的字库从二级国标扩展到更大的字库GBK, 由于后面不常见的字频率较短,平均编码长度比针对国标的大不了多少。让我们回忆一下汉 字的信息熵,H = -p1 * log p1 - ... - p6700 log p6700。 我们如果对每一个字进行统计,而且不考虑上下文相关性,大致可以估算出它的值在十比特以内,当然这取决于用什么语料库来做估计。如果我们假定输入法只能用26个字母输入, 那么每个字母可以代表log26= 4.7比特的信息,也就是说,输入一个汉字平均需要敲10/4.7=2.1次键。

聪 明的读者也许一经发现,如果我们把汉字组成词,再以词为单位统计信息熵,那么,每 个汉字的平均信息熵将会减少。这样,平均输入一个字可以少敲零点几次键盘。不考虑词 的上下文相关性,以词为单位统计,汉字的信息熵大约是8比特作用,也就是说,以词为单 位输入一个汉字平均只需要敲8/4.7=1.7次键。这就是现在所有输入法都是基于词输入的内 在原因。当然,如果我们再考虑上下文的相关性,对汉语建立一个基于词的统计语言模型,我们可以将每个汉字的信息熵降到6比特作用,这时,输入一个汉字只要敲6/4.7=1.3次 键。如果一种输入方法能做到这一点,那么汉字的输入已经比英文快的多了。

但是,事实上没有一种输入方法接近这个效率。这里面主要有两个原因。首先,要接近信息论给的这个极限,就要对汉字的词组根据其词频进行特殊编码。事实上像王码这类的输入方法就是这么做到,只不过它们第一没有对词组统一编码,第二没有有效的语言模型。这种编码方法理论上讲有效,实际上不实用。原因有两个,第一,很难学;第二,从认知科学的角度上讲,人一心无二用,人们在没有稿子边想边写的情况下不太可能在回忆每个词复杂的编码的同时又不中断思维。我们过去在研究语言识别时做过很多用户测试,发现使用 各种复杂编码输入法的人在脱稿打字时的速度只有他在看稿打字时的一半到四分之一。因此,虽然每个字平均敲键次数少,但是打键盘的速度也慢了很多,总的并不快。这也就是为什么基于拼音的简单输入法占统治地位的原因。事实上,汉语全拼的平均长度为2.98, 只要基于拼音的输入法能利用上下文彻底解决一音多字的问题,平均每个汉字输入的敲键次数应该在三次左右,每分钟输入100个字完全有可能达到。

另外一个不容易达到信息论极限的输入速度的原因在于,这个理论值是根据一个很多的语言模型计算出来的。在产品中,我们不可能占有用户太多的内存空间,因此各种输入方法提供给用户的是一个压缩的很厉害的语音模型,而有的输入方法为了减小内存占用,根本没有 语言模型。拼音输入法的好坏关键在准确而有效的语言模型。

另一方面,由于现有输入方法离信息论给的极限还有很大的差距,汉语输入方法可提升的空间很大,会有越来越好用的输入方法不断涌现。当然,输入速度只是输入法的一项而不是唯一的衡量标准。我们也会努力把谷歌的输入法做的越来越好。大家不妨先试试现在的版本,http://tools.google.com/pinyin/,半年后再看看我们有没有提高。

注:博客里面的文章和《数学之美》中的有很多不一样,印刷版更适合阅读,建议参考原著

可以看出刚开始我写的这段文字是没有多少学术基础和水平含量在里面的,问的问题也相当业余,最多也只能算是一个比较挑剔的用户。那时个人潜意识里期待的是一个全能的技术大牛,我能瞬间回答我的这些比弱智的基础问题,我去找了,去问了,还没少问,结果我没找到,或者极其稀有,又有想法又有执行力的这样的大牛目前大概在我的人际圈里很难遇到。现在想想把自己的命运寄希望于那么一个极其不确定的似有似无的人身上简直就是赌博,幸亏那时候没有钱让我折腾,否则不堪设想。现在回过头来看看,记录下来自己哪怕自己都觉得幼稚的,潜意识里很鄙视的想法,但是你只要把它写出来了,它就会离清晰和成熟越来越近了,因为你敢于承认一个真实的自己了,敢于挑战和面对真实的困难了,本身不在想法上,而在面对这想法幼苗的态度上,另外也可以让自己有一个比较清晰的成长脉络。

很多人现在说我写的有些东西还不错,呵呵,那你看看开头那段就知道我当年什么水平了,何况现在也谈不上好,只是相比当年有一些进步而已。人有时候跟自己比就行了,最后发现最大的障碍其实就是自己。

今天打开刚收到的数学之美就很兴奋的发现有输入法这么一章,果然没有辜负我的期待,简单凝练的语言,通俗的定理,公式,娓娓道来的历史阐述,犹如醍醐灌顶,茅塞顿开,一下子搞明白很多问题。虽然当年的表达比较弱智,但是总体上思路还是有亮点的,需要积累的技术和基础知识也确实很多,也锻炼了思维。自己想了这么久的东西被人给说明白了,真爽。就一下在在这又码了几个小时的字。

我想未来输入法的改进和升级会更炫,用到我想象的产品会越来越快了。如果把这些想法做成一个商业计划书拿给VC去看的话,估计也就是个rubbish ,对IT圈子渐渐有了些认识,开始知道有想法不算啥,你就是把一个很普通的想法做成极致的产品,也比把一个极其牛叉的想法做成一个普通的产品要好。想法不是生产力!不断的自我否定过程中剪除一些耗费时间精力的思维和习惯,做事变得更有效率。虽然我并没有真正意义上参与过输入法的改进和设计,但是这一个原始的想法引燃的一系列的求索的过程中让我学到很多,也有很多意外的收获,如果说还有什么让我保持这种激情的状态的话,也许就是那种强烈的好奇心和探索的欲望吧!

本文写作于2013年6月10日

推荐阅读更多精彩内容