Lu鹭输入法-基于小鹤双拼(形)的词组全码输入法

Lu鹭输入法-基于小鹤双拼(形)的词组全码输入法

一 概述

Lu鹭输入法(或者Lu输入法)基于小鹤音形输入法音形码,重点改进词组输入体验,适合全拼输入法转双拼输入法用户。当前小鹤音形输入法是一款优秀的双拼音形输入法,单字四码上屏是其最显著优势,类似五笔的输入体验,但没有五笔的高入门门槛。如果没有接触过双拼,基本通过一周练习即可熟练掌握。小鹤音形输入法对单字的支持较好,而且鼓励熟练掌握500常用字,但在词组输入方面存在不太合适地方,所以本文基于小鹤音形码,提出一种减少数字键选词(大部分情况下不需要),提升词组输入体验,降低输入门槛的Lu音形输入法。Lu输入法的主要创新点在于:1)支持大规模词组输入,并且基本不需要数字键来选择同音词组;2)弱化一简码和二简码的区别,提升双拼输入最常见26单字二码一字节奏感,同时保留一简码的一码一字;3)提出一种在音形输入法中引入智能输入法联想、纠错机制方法(暂未实现)。

二 背景介绍

智能输入法(qq、搜狗等输入法)仅支持全拼、双拼(双音)输入,无法实现盲打;五笔输入法入门门槛高,需要刻苦练习;语音输入法精度差(日常使用没问题,工作中则参考锤子TNT失败案例),无法在办公环境中使用;当前音形输入法(飞扬输入法强调单字录入,词组支持不足;大牛键道6形码基本为笔画,而且设置独立按键区,对我来说有点陌生)也存在一些问题。另外,还有就是某度著名的“隐私换效率”理论,让我对商业输入法产生害怕。所以,我需要一款自己觉得还OK的输入法。仅此而已。

先介绍一下本人使用输入法的情况吧。

本人07年接触电脑,使用智能ABC,后很快切入搜狗输入法。在2010年下半年开始接触双拼方案,搜狗自然码双拼方案。2018年下半年听说小鹤双拼,一个下午从自然码转到小鹤双拼码。后来使用飞扬输入法,开启音形输入。2019年2月,不满小鹤音形对词的支持、对简码的设置,自己设计Lu鹭输入法,一直用到现在。

为什么要自己设计输入法?

本人程序员,平时英文打码较多,中文输入场景主要在工作沟通以及编写文档。手机上的输入还是使用传统的全键盘全拼输入。由于工作场景的限制,所以中文输入速度一直不是很高,一般40-50字每分钟,专心打字的话能达到70左右。工作中,中文输入对词要求较高,因为领域内的词比较多,所以输入法必须具备较强的词语快速输入和积累能力,否则打字就是一种痛苦的输入体验。以搜狗输入法为代表的输入方法可以积累词,也能云联想,但是不能快速输入(必须空格上屏),选词必须翻页,整体输入体验中控制感不强。作为程序员,能不大范围移动左右手绝对不移动左右手,所以编码唯一自动上屏就是一个极具诱惑的输入方法。之所以最近才转音形,原因之前根本不知道有这种输入方式存在。接触小鹤音形之后就爱上了这个输入法。

使用小鹤音形一段时间后,还是无法适应小鹤音形这些设定:1. 一简码和二简码严格分开;2)输入词选择依赖数字键(或者可以配置“;”为第二候选);3)三字词(以及以上)必须简码输入,否则无效。

第一点是我个人主观感受,小鹤音形给新手的入门指引中强调了练习“单字”的重要性,如果将前500字练习熟练的话,可以提升输入效率。但是从搜狗等输入法的双拼方案过来的,用了那么多年的“二码一字”,很难习惯一键一字,虽然只有26个。但是我必须还得承认,一码一字如果熟练了真的比2码一字舒服,只可惜只有26个。

第二点是确实存在的问题,在输入词组的时候还得使用数字键来选词组,那码唯一上屏就等于只能用于单字,如果这样还不如回去使用搜狗输入软件呢。

基于以上两点,本人开始折腾之旅。

三 输入思路

出发点是以下两点:1)维持两码一字,保持从搜狗拼音转过来的用户的节奏感;2)词组也能码唯一上屏;3)方便加入整句输入功能。

第一点其实很好实现,飞扬输入法就可以,只要将26个一简码的字以二码的形式录入用户码表就行。我这么做了,但收到了小鹤音形用户的嘲讽,显的不和群。

第二点即数字键选词,毕竟同音码的词还是存在的,尤其是词组多了之后(飞扬大概预设8万词吧),选词概率会越来越大。当前主流方法是继续直接(或者间接)输入辅助码降低重码,直到词首选。手心、qq输入法、“大牛”系列的“键道6音形”输入方法等都具备这些功能。但他们辅助码仅仅是辅助码,实际使用体验并不好。下面重点说说“键道6”输入方法。

“大牛”系列也是双拼输入的优秀代表,出生比小鹤晚,但是发展势头很好。大牛系列涵盖双拼、音形、飞键等双拼技术,尤其是键道6,直接囊括了所有双拼的理论和实践。键道6是一种音形输入法,以双拼音在前,形在后(形码使用单独预留的5个按键代表(撇、竖、点、折、横)),词组的话如果重音可以继续打形码。了解了键道6的方案后,果断入手进行练习。键道6的音码和自然码或者小鹤码完全不同,而且之前经常使用的五个按键从音码中删除,总是误触;形码类似笔画,虽然简单,但主观感觉别扭,不如小鹤形码好拆(纯个人看法)。那天断断续续练了一天,结果每分钟只能打10-20个字。完全就是抛弃自己多年的双拼输入习惯重新学习!至少当前我还没有打算彻底投入“大牛”。

所以,最后还是打起小鹤音形码主意。受小鹤音形启发,“字”其实也是词,无非就是只有一个字,同理,词也是字,无非是多个字组成。想到这里,我的词的形码方案就已经出来了,即:词的形码取第一个字的第一个鹤形,最后一个字的最后一个鹤形,共2码。跟鹤形取字的开始音托和末尾音托道理相同。(2020年1月22日更新:经过实践,还有另外一种形码方案,即首字首形码+尾字首形码,详见v1.3.0发布公告。)

例如:“无理wulial”“物理wulinl”这两个词,“无理”第一个字“无”第一个鹤形是“a(一)“,最后一个字”理“末尾鹤形是“l“,所以”无理的全码是“wulial“。同理,”物理“的全码是”wulinl“。

词组有了全码,就可以愉快的全码上屏了。

四 制作流程

主要结果了以下几步:音形码准备、字词准备、音形标注、字词频率准备,和运行框架。

音形码准备

自己熟悉小鹤音形,所以这部分采用小鹤音形码。小鹤音码如下图(摘自小鹤官网)所示。


根据上图,可以很快制作一个全拼到小鹤音形码的转换表,如下图所示。

有了这个表,就能将各种字进行小鹤音码的标注了。目前一共收录8200多字音,甚至有许多我不认识的字和认识的字的不同读音,如下图所示。

小鹤形码如下图(摘自小鹤官网)所示。

形码的准备也比较容易获取,因为小鹤音形准备了一个api(小鹤编码查),可以供任何人查询某一个字的音形码。所以,我准备了自己所有的汉字,输入这个API,获取所有字的形码,如下图所示。

音形码准备完毕。

注意,这里并没有对比是否符合国家规范字规定的所有汉字,理论上常用的汉字应该都包括,后续会进行严格校准。

字词准备

首先字是使用上文搜集的8000多字音,词则是搜集的大概93000个词。如果在网上多搜索一会儿,应该能搜集到更多。这里暂时用这些。

音形标注

汉字形码一字一形,不会重复,只需要照表影射即可。音有多音字,所以略麻烦,所以使用外部工具pypinyin。流程大致如下。

1)使用pypinyin工具将词转换为全拼拼音;

2)使用全拼到双拼转换转换为双拼;

3)保存词的双拼信息。

这里的多音字完全靠pypinyin的工具预测,肯定有不准地方,但整体上使用效果还可以。

字词频率

到这里准备的码表基本已经可以工作了,但是输入体验很差,因为会把很多不常用的词放到输入法候选前面。解决这个问题就需要使用字词的统计信息,即哪些字词应该优先展示。

这里使用一个最简单的方法,统计字频。词频则是字频的平均值。简单粗暴。统计字频的语料是千万级别的句子。

经过统计字频实现候选展示顺序,我的感觉是基本达到主流输入法的候选体验,输入常用汉字不用翻第二页。

运行框架

有了想法和码表,必须得有输入法程序才能真正产生价值。小鹤音形使用“多多输入法生成器”,所以这里也采用该工具生成可运行、使用的输入法。

五 输入体验

经过一番挣扎,甚至中间数次想放弃,最终,Lu鹭输入法1.0测试版还是出炉了。

UI设置

托盘中文,Lu输入法图标如下图所示。

简单粗暴,¥符号代表中文,$符号代表英文,LU这个图片是使用word打的微软雅黑字母,然后截图。(不会UI设计的程序员)。

设置页面

可以很明显看出来浓浓的程序员风,因为不会UI,图标都是截取的“font awesome“开源项目。

LU输入法体验

LU基本上有多种输入模式,一码单字模式,二码单字模式,四码单字模式,以及全码词模式。

1)一码单字模式

这个跟小鹤音形的一简码一致,共26个字,按键一次即可第一候选,空格上屏。

26个字分别是:去 我 二 人 他 一 是 出 哦 平 啊 三 的 非 个 和 就 可 了 在 小 才 这 不 你 没。

例如:

按键“q“,即可将”去“第一候选,然后空格即可上屏。

如果熟悉了这26个最高频字,输入会舒服很多。

2)二码单字模式

一码虽然方便,但毕竟只有26个,所以将更多的单字放到了二码模式中。双拼方案本身就是二码(声母键、韵母键)一个字,但是同音字的存在让二码一字存在很多候选字。二码单字模式就是将常用的将近500个字放到二码中,实现输入二码常用字第一候选,空格上屏。当然,这些还是从小鹤音形来的方案,不同在于上文的一码单字也是二码单字,如下所示。

按“qu“,可出一码单字,也可出二码单字,一码单字排序靠前,空格可上屏。如果要选后面的字,就得输入形码,下文介绍。

3)四码单字模式

这个是小鹤音形的全码模式,即一个单字有四码(声母键、韵母键、字首形码、字尾形码),四码输全即可自动上屏单字。如下所示。

这个模式主要用来选择同音字,一般情况下输入到第三码就会第一候选,再空格即可上屏。

4)全码词模式

“全码词”,即每个词的双拼码加上词首字的首形码和尾字的尾形码。如下所示。

“屋里”的音码是“wuli“,”屋“的首形码是”u“,“里”的尾形码是“a“,所以”屋里“的词全码是”wuliua“。同理,”无理“的词全码是“wulial“, ”物理“的词全码是“wulinl"。

为什么要给词配上形码

小鹤音形的词很精准,基本涵盖常用的词,但是输入中各种词都有可能出现,靠常用的词肯定有不在词表中的情况,这时候小鹤音形就会建议打单字。如果用户自定义了词,跟系统词同音,则需要通过数字键来选,例如小鹤音形输入法输入wuli结果如下图所示。

要输入“屋里”(用户词),则需要按键“3"。这个时候人的手掌就会向上移动,输入体验不是那么的好。

输入词句是智能输入法的优势,小鹤音形则不具备。为了更可能输入词,需要更大的词表,如果词表太大,则会更多出现数字键选词的情况,输入体验会持续下降。所以小鹤音形建议入门者熟练单字模式。

LU输入法尝试通过“全码词”解决词表过大导致的输入体验下降问题。还是LU输入法的“wuli“这个例子,如下图所示:

如果要选“无理”,则接着输入“al“(如果码唯一,则只需要输入a),“无理”即可上屏;如果要选“物理”,则接着输入“nl“(如果码唯一,则只需要输入n),“物理”即可上屏。整个输入过程中,手指不用选数据键,手掌不会在键盘上大范围移动,输入体验是比数字键好一些。

舍弃了小鹤音形的词的简码模式,即不存在“声声声韵“三字词,以及这个规则下的三个以上的词。原因为,如果不熟悉小鹤音形的6万词,怎么可能会知道要用“简码”才能出词。LU输入法按照“声韵”来,如果有词则会出现候选,多个则通过形码来选,降低打多字词(二字以上的词)门槛。相比记住小鹤音形的三字词,不如交给机器来呈现,我负责选。

六 FAQ

1)为什么叫Lu鹭输入法?

为什么叫“LU“(中文‘鹭’)输入法?因为这里的码表采用的小鹤,鹭是鹤科的一种,也算是一种关系的体现。二码一字是双拼的特色,就像“一行白鹭上青天“,很整齐、很优美,所以就叫“LU鹭“。

2)如何学习Lu鹭输入法?

如果是小鹤音形用户,则可以直接使用,只是输入体验不同,很快就能适应。如果是新用户,则建议熟悉小鹤双拼(官网),熟悉后切入加形的Lu输入法。

小鹤音形网站(学习小鹤双拼和双形):

小鹤双拼・小鹤音形 - 官方网站www.flypy.com图标

小鹤音形编码查询网站:

小鹤编码查询xhup.club

3)Lu输入法适合人群?

所有人都可以尝试一下(哈哈),因为目前是根据个人习惯设计的,所以更适合人群:1)智能拼音输入法小鹤双拼用户;2)程序员键盘党;3)准备入手双拼的全拼用户;4)喜欢尝鲜的用户。

七 后续计划

如果有人对这种输入法感兴趣,后续计划加入智能输入法的长句输入功能。虽然比不了商业输入法,但也想尝试一下,思路如下。

1)如果输入在系统字词库和用户词库有命中,则优先;如果当前空码,则转智能输入;

2)智能输入时,根据用户输入双拼码,通过隐马尔可夫模型和维特比解码算法呈现多个候选;

3)通过形码选则候选上屏。

初步的想法,很希望有机会尝试一下。



下载地址:

Lu输入法122.51.142.93:8200


欢迎交流学习958293407,本人输入法新手,欢迎批评指正(一个人走的快,一群人走的远!)。

编辑于 2020-01-23