写在前面
输入法安全一直是被大众,甚至可以说是很多人忽视的问题。但恰恰相反的是,最了解你的产品,往往是你最信任的产品。输入法是我们每天都会用到的工具,它记录了我们的输入习惯,也记录了我们的一些隐私信息。
当然,针对输入法安全的考量是一部分,另一部分的考量就是输入法的词典了。
RIME - 中州韵 是一款开源的输入法引擎,它的词典是由用户自己维护的。正如中州韵官网主页所描述的一样:
聪明的输入法懂我心意。
这样的设计,一方面可以保证用户的隐私安全,另一方面也可以让用户自己定制自己的输入法。
RIME 横跨三大平台,在每个平台上都有开箱即用的软件。
- 在 Windows 平台上,RIME 有 小狼毫
- 在 macOS 平台上,RIME 有 鼠须管
- 在 Linux 平台上,RIME 有 fcitx5-rime
- 在 iOS 上,RIME 有 Hamster - 仓
但本文并不着重介绍 RIME 的安装和使用,而是介绍如何自己维护 RIME 的词典。
词典
正如前文所述,RIME 的词典是 RIME 的灵魂,只有适合自己的词典,才是真正“懂我心意”的输入法。为了兼和我平时的发言习惯,兼览各大佬们维护的词典,以及我自己的使用体验,最终挑选了以下词典:
base.dict.yaml
luna_pinyin.dict.yaml
zhwiki.dict.yaml
ext.dict.yaml
tencent.dict.yaml
这些词典的选用既能保证日常高频词的覆盖,又能保证专业词汇的覆盖,也能保证网络流行词的覆盖。
-
中文维基百科词典
zhwiki.dict.yaml
是中文维基百科的词典,收录了非常巨量的专业词汇,比如各类书籍、人名、地名、机构名等等。

中文维基百科词汇 macOS 鼠须管
由于这个词 “新戈利斯科耶农村居民点” 比较特别,属于中文维基百科词典的专属词,也比较长,一般的词典没有收录,所以可以尝试能否打出来这个词可以用来测试词典是否生效。
-
腾讯词向量词典
tencent.dict.yaml
来自 雾凇拼音 是腾讯词向量的词典,收录了一些网络流行词汇,比如各类网络用语、网络流行语等等。是 dvel 长期维护的词典。
-
两字词
两字词统一放到 base.dict.yaml
中,便于平时修订和调频。
因为两字词的排序基本决定了词库舒适度,重码较多,所以都加上注音和权重,并大量增删和调频。
-
扩展词库
主词库缺少了很多常用词和流行小短句,挂载扩展词库后体验会好很多。
ext.dict.yaml
一些平时随手的扩充。
扩展的词库默认权重为 100,因为不写权重时,Rime 默认给到的权重比 1 还小,输入长句时,初始的候选项有很大可能会被意料之外的两字词及单字挤占。比如想输入「抽根烟 / 再看看」,当「抽根烟」这个词没有权重时,默认候选项是「抽根 / 淹在 / 看看」。
词典的维护
有了这些大佬们维护的词典,就方便我们来组建适合自己的词典了。以上词典列表是我的选择,各位也可以有更多的选择。
由于各个词典来自不同的仓库,和不同的维护方式,比如 zhwiki.dict.yaml
是从 felixonmars/fcitx5-pinyin-zhwiki 来的,词典是放在 release 里面的;而 luna_pinyin.dict.yaml
则是从 rime/rime-luna-pinyin 来的,词典却是放在仓库的根目录下,其他的词典也是类似的情况。
这就导致每次更新词典的时候,需要手动去下载,然后放到 RIME 的配置文件夹下。非常繁琐。而且各个词典更新的时间和频率并不一致。而我有三台设备: macOS、Debian 以及 iOS 都在使用 RIME,于是手动维护词典成了一个繁琐的事情。
词典的自动化更新与获取
为了解决这个问题,我透过 GitHub Actions 来实现词典的自动化维护。GitHub Actions 每天自动运行一次,去检查我词典中词典维护者的各个仓库和 release 是否有更新,然后将更新的词典推送到我的仓库中,并最终将词典内容打包推到仓库的 release 中。
macOS
针对 macOS 设备的词典更新,我使用了 ShortCuts 来实现自动下载词典,并且将这个 ShortCuts 按钮放到桌面,只要点击即可更新词典。
ShortCuts 的脚本如下:
#!/bin/bash
# 获取当前日期(格式为 yyyyMMdd)
DATE=$(date +%Y%m%d)
# 构建 GitHub Release 下载链接
URL="https://api.bdim.moe/magic/https://github.com/bdim404/rime-dictionaries/releases/download/release-${DATE}/rime-dictionaries.tar.gz"
# 使用 curl 下载最新的 rime-dictionaries 文件
echo "正在下载 rime-dictionaries 文件..."
curl -L "$URL" -o rime-dictionaries.tar.gz
# 解压缩下载的 tar.gz 文件到 Rime 目录,注意!!请将 $username 更改为你的实际用户名。
echo "正在解压文件到 Rime 目录..."
tar -zxvf rime-dictionaries.tar.gz -C /Users/$username/Library/Rime
# 清理下载的 tar.gz 文件
rm rime-dictionaries.tar.gz
iOS
针对 iOS 的词典更新,我通过 macOS 更新时,使用 iCloud 的同步功能,将词典放到 iCloud Hamster
的路径下,即可完成更新。
如果你希望能够同步进行,那么 ShortCuts 脚本应该加上这几行:
# 复制字典文件到 iCloud 路径,注意!!请将 $username 更改为你的实际用户名。
cp /Users/$username/Library/Rime/cn_dicts/zhwiki.dict.yaml /Users/$username/Library/Mobile\ Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/RIME/Rime/zhwiki.dict.yaml
cp /Users/$username/Library/Rime/cn_dicts/tencent.dict.yaml /Users/$username/Library/Mobile\ Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/RIME/Rime/cn_dicts/tencent.dict.yaml
cp /Users/$username/Library/Rime/cn_dicts/base.dict.yaml /Users/$username/Library/Mobile\ Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/RIME/Rime/cn_dicts/base.dict.yaml
建议你根据自己的实际路径和Hamster的实际配置来修改具体的路径以及所需要的词典。
Debian
针对 Debian 的词典更新,我也写了自动化脚本,脚本本身会安装 fcitx5-rime
以及相关库,但也可以单纯用作词典更新。
可以通过执行以下命令来使用:
curl -sSL https://api.bdim.moe/rime-deploy | bash
当然,你也可以将后续的词典更新编写为一个 systemd
服务,这样就可以实现每天自动更新词典。
#!/bin/bash
cd ~/.local/share/fcitx5
# 获取当前日期(格式为 yyyyMMdd)
DATE=$(date +%Y%m%d)
# 构建 GitHub Release 下载链接
URL="https://api.bdim.moe/magic/https://github.com/bdim404/rime-dictionaries/releases/download/release-${DATE}/rime-dictionaries.tar.gz"
# 使用 wget 下载最新的 rime-dictionaries 文件
echo "正在下载 rime-dictionaries 文件..."
wget -q --show-progress "$URL" -O rime-dictionaries.tar.gz
# 解压缩下载的 tar.gz 文件到 rime 目录
echo "正在解压文件到 rime 目录..."
tar -zxvf rime-dictionaries.tar.gz -C ~/.local/share/fcitx5/rime
# 清理下载的 tar.gz 文件
rm rime-dictionaries.tar.gz
echo "${DATE}字典更新完成!"
如果你和我的配置一样,那么你可以通过执行以下命令来一键部署:
curl -sSL https://api.bdim.moe/rime-update | bash
关于软件安装
- macOS 鼠须管 详见博客 在 macOS 上配置中州韵输入法
- Debian fcitx5-rime 详见博客 Debian GNOME 安装配置备忘录
个人词典仓库
以上拉取的词典文件均来自个人仓库,仓库地址为 bdim404/rime-dictionaries,非常欢迎你的 Star 和 Fork。构建属于你自己的词典。