个性化词库与同步:自定义与管理个人输入数据¶
从少量固定短语,到大规模专业词库,再到多设备之间的用户词同步,万象提供了不同层级的数据扩展方式。
根据数据规模、使用方式和是否需要参与正常组句,可以将个性化词库大致分为以下几类。选择合适的方式,可以避免不同词库之间相互干扰,也便于后续更新、维护和同步。
1. 自定义短语:固定内容快速上屏¶
自定义短语适合用短编码触发固定内容,如常用短语、符号串、邮箱、签名等。不能同步、不能同步、不能同步,只能备份。 不同于传统TXT引用
- 词库引入可编译成bin性能更好
- 在共键方案中,如输入597打出静夜思,编码区显示jys
- 被Lua管理,有更高效的组织置顶词和简词关系
工作方式与配置规范
系统会读取用户目录中的文本文件,例如 custom_phrase.dict.yaml,并将其内容作为固定短语加载。
- 格式:
上屏文本\t编码\t排序权重 \t必须是 Tab,不能用空格代替。- 排序权重越大,同编码下越靠前。
- 建议用 VS Code、Sublime Text 等能显示 Tab 和编码的编辑器,避免格式错误。
长期维护的短语建议单独建文件,并通过 wanxiang.custom.yaml 改调用路径,不要直接改万象默认文件。
注意:先确认你的方案由哪个用户词方案提供服务。例如九键对应 wanxiang_phrase_t9,普通方案通常是 wanxiang_phrase。在 dependencies 中一般能看到:
dependencies:
- wanxiang_mixedcode # 混合编码
- wanxiang_reverse # 部件拆字、反查及辅码
- wanxiang_english # 英文
- wanxiang_abbrev # 公共简码库
- wanxiang_phrase # 用户词库
所以,改自定义短语时,生成端和使用端都要改:
如果还要使用简码插入,也要同样成对修改:
定义后将默认携带的
custom_phrase.dict.yaml 修改成 my_phrase.dict.yaml 打开将内部name修改为:my_phrase
wanxiang_abbrev.dict.yaml 修改成 my_abbrev.dict.yaml 打开将内部name修改为:my_abbrev
只有生成端和使用端对上,配置才会生效。相关 patch 在后面的固定词库自定义中还会继续说明。
2. 固定词库自定义:扩展专业或行业词汇¶
如果需要加入较大规模的医学、法律、工程、专业术语或其他领域词汇,并希望这些词像主词库一样参与正常候选和组句,更适合使用固定词库 (Dict)。
词库预处理¶
万象词库的编码要求
普通的纯拼音词库不能直接作为万象固定词库使用,因为万象的基础词库包含带调拼音等编码信息,Pro 版还涉及辅助码数据。
外部词库需要先通过对应工具处理,使词条编码与万象当前使用的 chars 数据保持一致。
Base 版通常需要先处理拼音;Pro 版在完成拼音处理后,还需要进一步生成对应的辅助码数据。
相关工具可以在下面的页面获取:
挂载固定词库的两种方式¶
完成预处理后,可以通过 wanxiang.custom.yaml 将自己的固定词库加入方案。
方法 A:通过 Packs 扩展(推荐)
这种方式不需要修改主词库文件,自己的词库可以单独维护,后续更新也更加方便。
但有两个前置约束一定要知道:
⚠️注意词库文件放在用户目录,不能折叠到dicts等文件夹
编码必须与单字一样,比如词库中“cè shì测试”你又在这个里面写了“cè shí测试”就会无法使用,因为单字表中“试”找不到“shí”读音
因此如果有各种异读需求考虑方法B吧!
假设新词库文件命名为:
userxx.dict.yaml
其词库表头中的 name 需要保持一致:
然后在 wanxiang.custom.yaml 中追加:
重新部署后,该词库即可作为主词库的扩展参与输入。
方法 B:自定义主词库
如果需要直接维护一套自己的完整主词库,可以复制根目录中的 wanxiang.dict.yaml,例如重命名为:
wanxianguser.dict.yaml
同时将词库内部的 name 等信息修改为对应名称。
随后通过 Patch 将相关词库调用统一指向新的主词库:
patch:
translator/dictionary: wanxianguser
user_dict_set/dictionary: wanxianguser
add_user_dict/dictionary: wanxianguser
这种方式会直接替换方案原本调用的主词库,更适合已经了解万象词库结构和相关调用关系的用户。
3. 挂接方案与主方案:扩展词库的调用关系¶
在万象中,wanxiang.schema 和 wanxiang_pro.schema 属于主输入方案,而 wanxiang_english.schema 等方案则承担独立词库的编译和挂接工作。
理解两者之间的关系后,可以进一步替换或扩展英文等独立词库。
挂接方案与主方案的关系
以 wanxiang_english.schema 为例,它负责调用对应的英文词典并完成编译,最终生成主方案可以使用的词库数据。
主方案中则存在对应的 Translator 配置,用于调用这套已经编译完成的英文词库:
因此可以简单理解为:
挂接方案负责生成对应词库,主方案负责调用该词库。
如果修改了挂接方案使用的词库名称,主方案中的调用名称也需要同步修改。
示例:替换或扩展英文挂接词库¶
假设需要使用一套自己的专业英文词库,可以同时调整挂接方案和主方案。
步骤 1:修改挂接方案使用的词库
例如将原来的:
wanxiang_english.dict.yaml
复制或重命名为:
wanxiang_english_user.dict.yaml
并确保词典内部的 name 与文件名对应。
随后新建或修改 wanxiang_english.custom.yaml:
这样重新部署时,英文挂接方案会使用新的词库进行编译。
步骤 2:修改主方案中的调用名称
随后在主方案对应的补丁文件中修改英文词库调用。
Base 版使用 wanxiang.custom.yaml,Pro 版使用对应的 wanxiang_pro.custom.yaml:
两处名称保持一致后重新部署,即可让主方案调用新的英文词库。
4. 用户词库同步:在多设备之间迁移 UserDB¶
日常输入过程中产生的用户词会记录在动态数据库中。
Base 版主要使用:
wanxiang.userdb
Pro 版则根据当前方案配置使用对应的 UserDB,例如:
zc.userdb
Rime 自带同步机制,可以将用户数据库导出为文本数据,并在不同设备之间进行合并。
不要直接使用网盘同步整个 Rime 用户目录
不建议将正在运行的整个 Rime 用户目录直接放入坚果云、OneDrive 等网盘中进行实时同步。
UserDB 属于运行中的动态数据库文件。网盘程序直接读取、占用或同步这些数据库文件,可能造成文件锁定,从而影响 Rime 正常读写用户词库。
更合适的方式是使用 Rime 自带的同步功能:先将 UserDB 导出到同步目录,再通过网盘同步这个目录。
只同步 Rime 设置的 sync 目录,不直接同步正在使用的 UserDB 数据库目录。
步骤 1:设置同步目录与设备 ID¶
打开用户目录中的 installation.yaml,为当前设备设置独立的 installation_id:
distribution_name: Rime
installation_id: "windows" # 建议使用容易识别的设备名称,例如 windows、mac、linux
然后配置 sync_dir。
Linux、macOS、Android 等环境可以使用类似:
Windows 可以根据 YAML 字符串写法选择双引号或单引号:
或者:
建议将最终同步目录统一设置到网盘中的 sync 目录,便于多设备共享。
步骤 2:了解同步后的目录结构¶
执行 Rime 同步后,会在 sync 目录中创建以当前 installation_id 命名的设备目录。
例如当前设备设置为:
installation_id: "windows"
则可能生成:
/sync/windows/
用户词库会被导出为对应的文本文件,例如:
wanxiang.userdb.txt
文件头包含数据库和设备相关信息:
# Rime user dictionary
#@/db_name wanxiang
#@/db_type userdb
#@/rime_version 1.13.1
#@/tick 793
#@/user_id windows
其中需要特别注意:
-
db_name应与当前方案实际使用的 UserDB 名称对应。 -
user_id应与当前设备的installation_id保持一致。 -
对应的设备目录名称也应与该设备 ID 对应。
Pro 版如果实际使用的是 zc.userdb,导出的数据库名称也应以当前实际配置为准。
步骤 3:导入旧数据与多设备同步¶
- 导入已有用户词数据
如果需要恢复以前的用户词,可以在确认数据库名称和编码格式正确的前提下,将历史数据整理到对应的 *.userdb.txt 文件中。
用户词编码必须与当前万象方案使用的编码体系保持一致;从其他词库导入的数据,应先完成必要的编码预处理。
完成后执行 Rime 的同步操作,由同步机制重新读取并合并这些数据。
- 多设备同步
每台设备应设置不同的 installation_id,例如:
windows
linux
mac
执行同步后,各设备会在共同的 sync 目录中保留自己的同步数据。
Rime 在执行同步时会读取这些设备目录中的用户词数据,并按照自身的同步机制进行合并,使不同设备产生的用户词可以相互迁移。
如何选择合适的方式?¶
几种方式的用途并不相同:
-
少量固定内容、邮箱、签名、特殊短语:使用 Custom Phrase。
-
大量行业词汇或专业语料:制作独立固定词库,并通过
translator/packs挂载。 -
需要替换英文等独立挂接词库:同时调整挂接方案与主方案中的词库名称。
-
日常输入产生的人名、术语和个人造词:保存在 UserDB,并通过 Rime 原生同步机制进行多设备迁移。
固定词库解决的是预先准备的数据扩展,UserDB 解决的是使用过程中逐渐积累的个人数据。将两者分开管理,后续更新、备份和同步会更加清晰。