RIME输入法个人词库及方案配置
在RIME输入法中引入搜狗个人词库和一些个人快捷键
简介
最近实在是被搜狗输入法的各种附加功能整烦了,之前各种给右键菜单里塞什么pdf处理工具,图片处理工具的,后面不知道哪个版本又给整了个汪仔AI进来💢,净给我往电脑里搬💩,一个输入法占我一堆空间😡,终于在最近痛定思痛决定把他换掉。(主要还是因为找到了能自定义个人词库的输入法)
RIME输入法
偶然间看到了基于RIME输入法算法框架的开源输入法方案,自定义程度极高、离线运行、支持多种语言的多种输入方案。自定义仅需修改对应的yaml文件即可,上手相对简单。
输入法方案
我使用了官方的安装脚本来安装输入方案,我使用的输入方案是 iDvel/rime-ice (雾凇拼音),并导入了我在搜狗积累的个人词库。
注意安装使用WSL的用户可能无法正常安装输入方案,因为官方的安装脚本依赖
git自带的git-bash环境来下载不同的配置方案,可以在程序文件夹手动打开git-bash并运行rime-install.bat脚本来安装。
搜狗个人词库处理
从搜狗设置的词库中导出个人词库的 .bin 文件后使用 深蓝词库转换 转换为RIME格式的词库文件。
注意导出的文件需要拆分成为纯中文的中文词库、纯英文的英文词库和中英混输的中英混合词库,如果直接将转换出的词库导入主词库会导致很多的英文词排在前面,不符合一般的输入习惯。
词库的拆分可以简单写一个python脚本用正则表达式匹配完成,提供一个简单的脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import re
# 文件路径
input_file = "input.txt"
cn_file = "cn.txt"
en_file = "en.txt"
cn_en_file = "cn_en.txt"
# 匹配中英混输
pattern_cn = re.compile(r"^[^A-Za-z\t]+\t.*$")
pattern_en = re.compile(r"^[A-Za-z]*\t.*$")
with open(input_file, "r", encoding="utf-8") as fin, \
open(cn_file, "w", encoding="utf-8") as cn, \
open(en_file, "w", encoding="utf-8") as en, \
open(cn_en_file, "w", encoding="utf-8") as cn_en:
for line in fin:
# 去掉行尾换行符再判断,避免换行影响匹配
content = line.rstrip("\n")
if pattern_cn.match(content):
cn.write(line)
else if pattern_en.match(content):
en.write(line)
else:
cn_en.write(line)
print("处理完成")
print(f"中文词库已写入:{cn_file}")
print(f"英文词库已写入:{en_file}")
print(f"中英混合词库已写入:{cn_en_file}")
个人词库配置
rime-ice的总词库在用户文件夹的 rime_ice.dict.yaml 文件中,但是如果后续对方案进行拉取更新的话会覆盖掉更改,因此建议自定义一个另外的总词库文件。
每个方案都有一个对应的自定义文件 xxx.custom.yaml 用于配置一些个人偏好,更新时不会被覆盖。对于雾凇拼音这个文件就是 rime_ice.custom.yaml 雾凇拼音原本的方案配置文件为 rime_ice.schema.yaml。这个文件默认是没有的需要自己手动创建。在文件中写入以下内容就可以将个人词库合并进雾凇拼音的词库了。
rime_ice.custom.yaml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Rime schema
# encoding: utf-8
patch:
# 智能纠错(适用于全键盘全拼)
# translator/enable_correction: true
translator/dictionary: rime_ice_custom # 挂载自定义词库,防止更新之后被覆盖
custom_phrase/user_dict: rime_ice_custom_phrase # 使用个人自定义短语文件,防止更新之后被覆盖
melt_eng/dictionary: melt_eng_custom # 挂载词库 melt_eng_custom.dict.yaml
engine/translators/+:
- table_translator@cn_en_custom
cn_en_custom:
dictionary: ""
user_dict: en_dicts/cn_en_sogou_personal
db_class: tabledb
enable_completion: true
enable_sentence: false
initial_quality: 0.6
comment_format:
- xform/^.+$//
可以看到我自定义了总词库文件为 rime_ice_custom 即 rime_ice_custom.dict.yaml,在其中首先复制原本的总词库文件的内容,再加入自己的词库,最终文件内容为:
rime_ice_custom.dict.yaml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Rime dictionary
# encoding: utf-8
---
name: rime_ice_custom
version: "2026-06-01"
import_tables:
- cn_dicts/8105 # 字表
# - cn_dicts/41448 # 大字表(按需启用)(启用时和 8105 同时启用并放在 8105 下面)
- cn_dicts/base # 基础词库
- cn_dicts/ext # 扩展词库
- cn_dicts/tencent # 腾讯词向量(大词库,部署时间较长)
- cn_dicts/others # 一些杂项
- cn_dicts/sogou_personal_cn # 搜狗个人词库中文词
# 建议把扩展词库放到下面,有重复词条时,最上面的权重生效
# - mydict1 # 挂载配置目录下的 mydict1.dict.yaml 词库文件
# - cn_dicts/mydict2 # 挂载 cn_dicts 目录里的 mydict2.dict.yaml 词库文件
...
# 省略后续内容,见rime_ice.dict.yaml
中文词库配置
需要注意我这里将个人的中文词库命名为了 sogou_personal_cn 即 sogou_personal_cn.dict.yaml 放在 cn_dicts 文件夹下,需要注意词库文件前面记得加上下面的元数据,才能被程序识别。
sogou_personal_cn.dict.yaml:
1
2
3
4
5
6
7
8
9
10
11
12
# Rime dictionary
# encoding: utf-8
#
#
# 搜狗个人词库的中文词汇,使用[深蓝词库转换器](https://github.com/studyzy/imewlconverter)生成后手动提取
#
---
name: sogou_personal_cn
version: "2026-06-02"
sort: by_weight
...
# 以下省略个人词库文件内容
个人短语词库配置
雾凇拼音还有一个个人短语文件,即配置文件中的 custom_phrase/user_dict: rime_ice_custom_phrase,为了防止被覆盖我也使用了个人自定义的文件。只要将原本 custom_phrase.txt 文件的内容复制进自己的文件再增加自己的短语即可。
注意修改个人短语词库的元数据。
英文词库配置
英文词库的配置稍有复杂,因为雾凇拼音的英语输入依赖其他输入方案,即 melt_eng ,而 melt_eng 在自己的方案配置文件中说明了自己的总词库文件,因此我们只在雾凇拼音的方案配置文件中修改自定义词库文件是不管用的。我们除了修改上面雾凇拼音的个人自定义配文件之外还要修改以下文件。
melt_eng 的方案自定义配置文件(同样这个文件默认没有需要自己创建) melt_eng.custom.yaml:
1
2
patch:
translator/dictionary: melt_eng_custom # 自定义总词库文件
自定义的 melt_eng 总词库文件 melt_eng_custom.dict.yaml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Rime dictionary
# encoding: utf-8
#
# 挂载英文输入方案的词库
#
---
name: melt_eng_custom
version: "2026-06-03"
import_tables:
- en_dicts/en_sogou_personal # 搜狗个人词库
- en_dicts/en_ext # 补充(里面有些许带权重的,且和 en 重复,需要把 en_ext 放在上面)
- en_dicts/en # 英文主词库
...
这里我将个人词库放在了最前面,不知道合不合适(我个人觉得是合适的,毕竟里面有自己真实使用之后生成的权重)。我的个人词库和雾凇拼音的路径一致放在了 en_dicts 文件夹下。
记得在个人英文词库中加入元数据 en_sogou_personal.dict.yaml:
1
2
3
4
5
6
7
8
9
10
# Rime dictionary
# encoding: utf-8
#
#
# 搜狗输入法的个人英文词汇,使用[深蓝词库转换器](https://github.com/studyzy/imewlconverter)生成后手动提取
---
name: en_sogou_personal
version: "2026-06-02"
sort: by_weight
...
中英混合词库配置
因为雾凇拼音有自己专门的中英混合输入引擎,而且好像没法往里面加个人词典,因此我额外增加了一个输入引擎,即 engine/translators/+ 和 cn_en_custom 下定义的内容。不想折腾的话也可以直接把自己的字典内容合并到 en_dicts\cn_en.txt 文件中。
混合词库的元数据别忘了写 cn_en_sogou_personal.txt
1
2
3
4
# Rime table
#@/db_name cn_en_sogou_personal.txt
#@/db_type tabledb
#@/tick 3
个人快捷键配置
我把之前在搜狗输入法中常用的以下快捷键添加了进来,同样配置在对应方案的custom文件中。
rime_ice.custom.yaml:
1
2
3
4
5
6
7
8
9
10
patch:
key_binder/import_preset: default
key_binder/bindings/+:
# 繁体切换快捷键Ctrl+Shift+F
- { when: always, accept: Control+Shift+F, toggle: traditionalization }
# 全半角切换快捷键Ctrl+.
- { when: always, accept: Control+period, toggle: full_shape}
# 配置左Shift切换中文右Shift切换英文
- { when: always, accept: Release+Shift_L, unset_option: ascii_mode}
- { when: always, accept: Release+Shift_R, set_option: ascii_mode}
其中的全角半角切换好像和我理解的不太一样,我本来以为是可以在中文输入环境中敲出英文符号但是好像不是。就只是一个字符占一个字符的宽度还是半个字符的宽度,举个栗子,英文输入下:全角.和半角.。
我配置里的左右Shift分别切换中英文在某些场景下好像有点问题,比如你在英文输入模式下用Shift敲了一个大写字母,结果你松开Shift之后输入法切换成了中文模式。目前我没有什么好的解决办法😢。
其他配置
为了自定义一个好看的输入法皮肤我又花了不少力气所以我要单独再水一篇文章,详见另一篇自定义外观的文章。