使用rime的万象拼音方案
今天将rime的拼音方案从之前的白霜拼音换到了万象拼音。两者的主要差别在于,白霜(以及雾凇拼音等)的原理都是基于词库,需要开发者手动维护更新词库;而万象拼音主要维护的重点在于一个组词模型。也正因如此,前者体积小许多,后者需要加载一个100—200M不等的模型,且资源占用也会大一点。
不过我更看重的是后者强大的造句能力,所以切换了过来。简单记录关键操作如下。
1. 下载万象拼音
进入万象拼音pro的release界面,下载想采用的辅助码对应压缩包及语法模型,将语法模型放在rime文件夹首层。我用的小鹤方案,以下均以此为例。
2. 配置万象拼音
rime的各种方案配置其实很简单。只需要记住两个规则:
- 对于
default.yaml
文件,需要在default.custom.yaml
文件中使用patch:
相关指令才可覆盖; - 对于
*.schema.yaml
文件,需要在对应的*.custom.yaml
文件中使用patch:
相关指令才可覆盖。
所以我们要做的就是打开方案内置的各个yaml文件,然后按照注释复制一份之后在新的custom.yaml文件里通过 patch:
方式进行覆盖式修改。
3. 取消万象拼音的辅助声母
万象拼音有一个自带的辅助码功能,其中第一个选项会默认启用:
辅助码它可以在输入一个确定得拼音后面继续输入一个部首的读音,使得这个字出现在靠前甚至第一位。这种方式易于理解,无须记忆字根,一切基于拼音得基础上。例如:
功能1 如果想要 镇 字显示在前面 那么在本方案下提供两种方式,第一种就是辅助码声母,vf继续输入j 也就是金字旁得声母即可出现结果,如果还是出现不了你要的结果,可以输入另外主体字的声母来继续缩小范围。
这个的意思是,想找 镇
的时候可以输入 vfj
,这样就会在候选栏里出现拼音为 zhen
而且又带 金 字旁的候选字了。
但是这个输入方式会出现一个问题,那就是如果相关的拼音没有这个声母的候选词,那么整个输入框就会完全消失。所以如果你默认启用这个选项,就会发现打字的时候候选词框是一闪一闪的,非常不习惯。
我们可以在 wanxiang.custom.yaml
中如下设置:
patch: speller/algebra: - xlit/āáǎàōóǒòēéěèīíǐìūúǔùǖǘǚǜü/aaaaooooeeeeiiiiuuuuvvvvv/ - xform/^ng(;.*)/eng$1/ - xform/ńg|ňg|ǹg/eng/ - xform/ń|ň|ǹ/en/ - derive/^([jqxy])u(;.*)$/$1v$2/ - derive/^([aoe])([ioun])(;.*)$/$1$1$2$3/ - xform/^([aoe])(ng)?(;.*)$/$1$1$2$3/ - xform/^(\w+?)iu(;.*)/$1Ⓠ$2/ - xform/^(\w+?)ei(;.*)/$1Ⓦ$2/ - xform/^(\w+?)uan(;.*)/$1Ⓡ$2/ - xform/^(\w+?)[uv]e(;.*)/$1Ⓣ$2/ - xform/^(\w+?)un(;.*)/$1Ⓨ$2/ - xform/^(\w+?)uo(;.*)/$1Ⓞ$2/ - xform/^(\w+?)ie(;.*)/$1Ⓟ$2/ - xform/^(\w+?)i?ong(;.*)/$1Ⓢ$2/ - xform/^(\w+?)ing(;.*)/$1Ⓚ$2/ - xform/^(\w+?)uai(;.*)/$1Ⓚ$2/ - xform/^(\w+?)ai(;.*)/$1Ⓓ$2/ - xform/^(\w+?)eng(;.*)/$1Ⓖ$2/ - xform/^(\w+?)en(;.*)/$1Ⓕ$2/ - xform/^(\w+?)[iu]ang(;.*)/$1Ⓛ$2/ - xform/^(\w+?)ang(;.*)/$1Ⓗ$2/ - xform/^(\w+?)ian(;.*)/$1Ⓜ$2/ - xform/^(\w+?)an(;.*)/$1Ⓙ$2/ - xform/^(\w+?)ou(;.*)/$1Ⓩ$2/ - xform/^(\w+?)iao(;.*)/$1Ⓝ$2/ - xform/^(\w+?)[iu]a(;.*)/$1Ⓧ$2/ - xform/^(\w+?)ao(;.*)/$1Ⓒ$2/ - xform/^(\w+?)ui(;.*)/$1Ⓥ$2/ - xform/^(\w+?)in(;.*)/$1Ⓑ$2/ - xform/^sh/Ⓤ/ - xform/^ch/Ⓘ/ - xform/^zh/Ⓥ/ - xlit/ⓆⓌⓇⓉⓎⓊⒾⓄⓅⓈⒹⒻⒼⒽⒿⓀⓁⓏⓍⒸⓋⒷⓃⓂ/qwrtyuiopsdfghjklzxcvbnm/ - derive|^(.+);.*$|$1| # 纯双拼的情况 - erase/^(.+);(.+)$/ # 删除原始编码加速检索
上面这段代码实际上是对原方案的一个覆盖。在原始的 wanxiang.schema.yaml
中, speller/algebra
的内容如下:
- set_shuru_schema #拼音转双拼码 - fuzhu_flypy #辅助码部分
辅助声母的代码就在下面的 fuzhu_flypy
内容里:
fuzhu_flypy: ########################################位于词库第七个分号后 __append: - derive|^(.+);.*$|$1| # 纯双拼的情况 - abbrev|^(.+);(\w).*$|$1$2| # 双拼+一位辅助码的情况 - derive|^(.+);(\w).*$|$1$2/| # 双拼1位辅助码+/ - abbrev|^(.+);(\w)(\w).*$|$1$2$3| # 双拼+2位辅助码的情况 - derive|^(.+);(\w)(\w).*$|$1$2$3/| # 双拼+2位辅助码+/ - derive|^(.+);(\w)(\w).*$|$1$2$3o| # 双拼\+2位辅助码\+o,主要用来应对小企鹅这类输入法没法使用符号的场景,但同时有些辅助码会出现异常,如:ui uio>uiuio,手机小企鹅使用时开启 #分号后面第二组辅助码 - abbrev/^(.+);.*?,(\w).*$/$1$2/ - derive|^(.+);.*?,(\w).*$|$1$2/| - abbrev/^(.+);.*?,(\w)(\w).*$/$1$2$3/ - derive|^(.+);.*?,(\w)(\w).*$|$1$2$3/| - derive/^(.+);.*?,(\w)(\w).*$/$1$2$3o/ - xform/◯/;/ #对于微软双拼、搜狗双拼,前面将分号保护了起来,现在放出来让其发挥作用 - erase/^(.+);(.+)$/ # 删除原始编码加速检索
可以看见,从第二行到倒数第二行,都在处理双拼+辅助码的情况。所以我们可以在 wanxiang.custom.yaml
中把这几行移除掉,只剩下第一行和最后一行。