2009年3月28日星期六

我想要一个怎样的拼音输入法?

我是一名使用中文的 Mac 用户,Mac 上的简体中文拼音输入法,还停留在智能 ABC 时代(Tiger 的时候),实在是难用(Leopard 的时候有了不错的改善)。后来有了 QIMFITSunPinyin 等优秀的输入法,但是总是还不那么顺手。在输入法上,除了引擎的效能提升外,对用户来说更重要的是体验上的优化,一般用户并不能直接比较出输入法给出的候选的“智能”程度,所以当前输入法的竞争也就体现在词库以及附带功能上。这里就说说自己对输入法产品设计的理解。

拼音输入法

首先看看拼音输入法。拼音输入法是使用基于语音的汉语拼音方案,在受到限制的英文字母键盘上输入复杂多样形意文字的一种辅助软件。这里用户真正的目的是需要输入中文,而输入法本身是一个工具,工具应当是接近“透明”的,用户在正常使用的时候可以不被输入法所打扰。拼音输入法的特点是拼音重码比较高,而输入法必须适应快速输入的需求,拼音输入法上就采用词组输入、词频调整,以及“整句输入”等智能化的方式,让用户可以使用词语甚至句子代替单字作为输入的单元,而词组的重码就大大降低了,结合了统计和分词的整句输入,进一步降低了词组的重码率。但是,在涉及到一些非标准词组输入时候,就会遇到必须单字输入并选择,当前的输入法都可以做到把用户的输入作为用户词库保存下来,这是用户可以理解的“输入法学习”过程,但是也有一些输入法采用了大词库的方式(比如黑马神拼、智能狂拼等输入法,采用了相当巨大的语料库),或者是自动下载新词库(比如搜狗拼音、谷歌拼音),来对词库进行修正。这两种方式各有千秋,大词库的方式比较适合专业用户输入较生僻的词语,在涉及到大量专业文章录入的时候,结合了整句识别的大词库可以尽量减少用户的选词,但是在日常使用的时候,会遇到重码增多的负面影响。而自动更新词库的方式适合一般用户使用,因为其词库更新来源是来自互联网,更新快但是依然无法通过这种方式覆盖到生僻词汇,只能对流行的新词有较好的覆盖。还有专业词库下载的方式,针对不同用途提供不同方向的词库,这适合词语输入为主的输入法,整句输入上对词库进行调整应该来说不太容易(这个不确定,请有经验的人指正)

“经典风格”和“即时转换”风格

这个说法来源于 SunPinyin,“即时转换”风格是相对与“经典风格”的在输入后使用空格来确认输入上屏的方式。在用户键入拼音串后将用户输入的内容即时转换成中文,并显示在 pre-edit 中,当用户键入上屏键或标点符号并继续输入的时候确认并上屏之前转换的内容。采用即时转换风格的输入法典型如微软拼音等整句输入法,采用经典风格主要是以词语为输入单位的紫光、搜狗等输入法。即时转换和经典风格的主要差异在于上屏方式导致的确认/修改候选方式的差异。

在“经典风格”中,用户可以一边输入一边确认候选,但是当使用经典风格进行整句输入的时候,如果是最后的几个词组转换结果错误,用户需要根据词组逐一确认当前的输入直到最后进行更改。此处需要确认的词组个数是不明确的,万一用户在确认过程中出错,选错了候选,也不方便修改。

在“即时转换”风格中,应当是用户键入词组的音节,在用户输入第三个词组的时候,对第一个词组进行转换(当前 SunPinyin 的处理方式是直接转换前一个音节,不太妥当)。当词库中不存在需要转换的音节对应的词组的时候,判定词组切分,将用户输入的音节转换为第一个候选。由于整句输入法的输入原理,可能会对之前已经转换的词组进行修改,因此用户会发现本应该确认的词组被替换成了不希望的词组,需要回头修改。但是在即时转换模式下,之前的输入是已经确认的,修改最后出现错误的内容比较方便,但是确认修改之前输入内容颇为不便。

从这里可以看出,除去用户的使用习惯的差异,用户需要的是可以方便对转换正确的结果进行确认,对错误的转换结果进行纠正,对键入错误进行方便纠正。当前的输入法对这里处理的都不是太理想。

快捷键的键位设置

输入法是需要使用当前的键盘来完成输入的。因此也必须考虑用户使用时候的击键方便,不和操作系统/软件使用的快捷键冲突。比如一个典型的例子是 Leopard 中的智能 ABC 输入法,使用光标键来进行候选词翻页。基本在所有键盘布局上,光标键都不是正常打字时方便使用手指接触到的按键,因此只能使用光标键来翻页的拼音输入法会让用户的右手频繁在光标键和 JKL; 上频繁移动,影响效率。还有许多下的输入法,使用 shift 作为一键切换中英文输入的快捷键,但是 shift 又是一个输入标点符号的常用按键,很容易误操作。因此,在考虑功能键位的时候,需要照顾到不同操作系统的环境,以及用户的具体输入习惯。

状态提示

输入法通常情况在界面上会有一个当前状态的提示,用以告知用户当前所处在的输入状态。在使用用户设置的输入状态时,是不需要对用户进行提示的,因为用户已经知道当前所处于的状态,只需要在输入状态发生改变的时候,提醒用户当前不处于用户默认的输入状态即可,这比直接显示当前输入状态对用户的影响更小,体现了输入法的工具性原则。比如用户在设置中选择了半角输入/中文标点 作为默认的状态,则当输入法处于全角输入或英文标点状态下的时候,可以在屏幕上告知用户,对用户来说不需要识别两个状态,只需要看特定的状态有或没有。

以词定字
在输入一些重码比较多的单字的时候,一个比较高效的输入方式就是输入一个以这个字开始的词组,然后删去多输入的字。通常情况使用这个方式是在确定一些不组词的单字时,比如人名的输入。以词定字是在确认的时候使用特殊的按键来确认第一个或者第二个单字,而用户使用的时候往往是直接输入词组并向前删除一个字。只是在需要输入的字在后面的时候比较麻烦。因此,以词定字功能主要需要提供用户一个只上屏当前词组第二个字的功能。这个功能用的不多,就不详细说了。

英文输入
输入法的输入状态提示往往不显眼(也不应当显眼),因此会存在用户希望输入英文的时候实际上正处在中文输入状态,但是用户已经输入了一部分内容,需要将输入的内容转用英文输出的这个需求。在许多输入法中,是使用 enter 键来直接输入英文内容的。最早应该是紫光拼音使用了这个方式,希望可以避免用户在早期 Windows 提供的智能 ABC 在中文状态下误输入英文时的挫败感。这里也体现了不丢失用户输入内容这一原则。同时还应当对用户常见的输入进行判定,如用户输入 www/blog 之类的字母组合,则将用户的输入判定为英文输入,后续的输入直接上屏而不进行转换。典型的场景是在浏览器中输入中文提交后,转到地址栏输入网址。

模糊拼音
针对有南方口音的(来一句“化肥会挥发”),模糊拼音是一个拼音输入的容错方案。典型的规则有 ng和 n ,l 和 n,h 和 f 这几对。模糊拼音对不同用户是不一样的,因此应当是一个可以详细开关的设置,用户可以根据自己的实际输入情况来选择合适的模糊拼音方案。

完整拼音和简拼/双拼
在拼音输入法中,主要的停顿来自于出现重码的选择,对拼音错误的纠正,而非用户输入的速度。因此,简拼/双拼考虑更多的是“用户习惯”而不应当是输入效率。为了提高键入的速度,用户会对一些常用词组采用只输入声母的方式进行输入,在整句输入法的智能判定做的比较好的情况下可以比较显著降低输入的键数。而在词组输入的时候使用简拼会增加重码,进而降低输入的速度。使用简拼输入的词语不适宜考虑用户词库,否则重码的大量增加会导致输入效率的下降。

双拼输入可以提高键入速度,并不增加重码。双拼方案存在多种,需要针对不同双拼方案进行兼容性选择。

键入错误和中英文混合输入

在用户键入拼音的时候,难免会出现输入拼音错误。在出现不符合拼音方案的键入的时候,应当允许用户继续键入,并根据用户的偏好判定是将这些部分作为简拼,还是进行纠错,或者输出英文。纠错可以将一些常见的键入错误,比如把 ng 输入成 gn ,或者是 zheng 输入成 zehng 这样的“键入顺序错误”进行纠正,将原文输出和纠正的结果均作为备选让用户确认。在用户忘记输入音节切分的时候,比如用户键入“xian”的时候可能希望输入的是“西安”,但是西安的音节应该是“xi'an”,这里应该将“西安”和“先”放在一起提供候选。如果用户键入了 tign,其本意应该是输入 ting,因此应当将 “ting” 的候选和 “ti g n” 的候选同时提供给用户。在用户关闭了简拼输入的情况下,可以提供 “ting” 的候选和 tign 的英文同时提供候选。

中英文混合输入必须是在打开了完整拼音的输入的情况下才可以使用。当判别出用户输入的拼音是非完整拼音时,将用户的非完整拼音当作英文字串输出。应此当用户键入“weiruanwindows”的时候,微软被转换成中文,而windows按照原样输出。特别的是如果用户在输入的时候键入了大写的字母,则将之后的内容都按照原样输出,直到空格/回车作为结束判定。这里不应当根据用户的输入自动转换输入状态,而应当将这个功能作为用户在中文文章中临时插入英文单词的输入方式。如果采用空格作为结束,则应当将空格作为上屏键,不需要在用户输入的英文后添加空格。在 Mac 下,可以使用系统内置的拼写检查/提示功能(可以使用 cmd+; : 以及 option + esc)完成英文的键入提示,因此不需要额外提供英文词典。但是在 Windows 下,有许多输入法提供单词补全等功能,是颇实用的。

如果我不知道这个字怎么念...
有许多字接触的比较少,因此看到字不会念,因此不知道怎么输入的情况是很常见的。在拼音输入法中还可以加入一些笔形输入,比如根据笔划,或者结构拼音“拆白”。笔划输入就不详细说了。结构拼音是可以将输入的词看作是字的结构性拼音,将每个拼音视作字根。因为复杂的中文字很多是有结构的,通过上-下、左-右的常见顺序,是可以比较方便地输入一些字的。

以上是对拼音输入法的功能点的描述,之后再写一个具体的拼音输入法交互描述。
 
Creative Commons License
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。