Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
开源输入法 RIME,配合雾凇拼音等精心开发的输入方案,本身就已经满足日常需求——往往这些输入方案都配备包罗万象的常用词库。
然而,这些面向日常输入的词库,不可能涵盖方方面面,对于一些专门领域的词汇则未必有收录。例如,我在写一些游戏、动画番剧的文章时,常常会碰到角色名、地名、术语等没有被输入法收录的情况。因此,我常常免不了在候选字里一顿选,不觉间,输入效率大大降低。
幸运的是,RIME 的用户,可以站在 MediaWiki 百科志愿者们的肩膀上1。这些百科的词条名,本身就是非常丰富、专业的语料库。
MediaWiki 是一个百科平台,由维基媒体基金会开发,维基百科就是基于它构建。萌娘百科、Bilibili 游戏百科(BWiki)等知名平台也是建构在 MediaWiki 之上。你可以借助 MW2Fcitx(MediaWiki To Fcitx)这款工具,将这些百科的词条名做成 RIME 词库,大大拓展你的 RIME 输入体验。
背景:我是怎么发现 MW2Fcitx 的?
我的主力笔记本用的是 Arch Linux。在配置好 Arch Linux CN 源后,我想安装 RIME 输入法,在 Pacman 中搜索。这时,搜索结果中好像出现了什么神奇的东西:
$ pacman -Ss fcitx rime
...
archlinuxcn/fcitx5-pinyin-moegirl-rime 20220218-1
Fcitx 5 Pinyin Dictionary from zh.moegirl.org.cn
archlinuxcn/fcitx5-pinyin-zhwiki-rime 20210120-1
Fcitx 5 Pinyin Dictionary from zh.wikipedia.org for rime
...
好家伙,它们是专为 RIME 打造的词库,分别采撷自萌娘百科和维基百科。百科平台的条目本身是个宝藏语料库,添加它们可以大大提升输入体验,不再苦苦一个字一个字地去拼、去凑。尤其是萌娘百科的词库,对使用中州韵的ACG爱好者来说,更是天大的福音,从此再也不用担心打不出番剧名、角色名了!
制作这些词库,显然用不着一个个去翻百科。它们都使用 MW2Fcitx 生成。
MW2Fcitx 能够调用 MediaWiki 的 API,从基于 MediaWiki 的百科网站中获取所有的条目标题,将它们汇编成各类输入法可用的词库。像维基百科、萌娘百科都是基于 MediaWiki 搭建的,MW2Fcitx 自然支持它们。
安装 MW2Fcitx
MW2Fcitx 使用 Python 开发。如果你的电脑没有安装 Python,可以参考菜鸟教程的文档。
注意:
在Windows下,你只能使用 Python 的官方版本。
已知,Msys2 的 Python 无法正确安装 MW2Fcitx 的依赖项,安装时会出错;Scoop 安装的 Python 不带 Pip 工具。
在 Windows、macOS 与 Linux 发行版(除 Arch Linux)中,借助pip
即可轻松安装:
# 在Windows平台上(请先确保你正确安装了官方版Python)
py -m pip install mw2fcitx
# 在其他平台上
pip install mw2fcitx
它会安装一个脚本程序mw2fcitx
,pip 会将它放在正确的位置:
- 在 Windows 下,
pip
会把mw2fcitx
启动脚本安装到 Python 所在目录里。 - 在 Linux 中则默认安装到
~/.local/bin
,你需要手动将该目录加入PATH
中。做法是,打开~/.profile
(若无该文件则请创建),然后加入代码:export PATH=$PATH:/home/<你的用户名>/.local/bin
。
正确的安装日志类似于下面这样:
Collecting mw2fcitx
Using cached mw2fcitx-0.13.0-py3-none-any.whl.metadata (3.9 kB)
Collecting OpenCC>=1.1.1.post1 (from mw2fcitx)
Downloading OpenCC-1.1.7-cp312-cp312-win_amd64.whl.metadata (12 kB)
Collecting pypinyin>=0.38.1 (from mw2fcitx)
Using cached pypinyin-0.51.0-py2.py3-none-any.whl.metadata (12 kB)
Downloading mw2fcitx-0.13.0-py3-none-any.whl (14 kB)
Downloading OpenCC-1.1.7-cp312-cp312-win_amd64.whl (716 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 716.5/716.5 kB 1.8 MB/s eta 0:00:00
Using cached pypinyin-0.51.0-py2.py3-none-any.whl (1.4 MB)
Installing collected packages: OpenCC, pypinyin, mw2fcitx
Successfully installed OpenCC-1.1.7 mw2fcitx-0.13.0 pypinyin-0.51.0
[notice] A new release of pip is available: 24.0 -> 24.1.1
[notice] To update, run: C:\Users\AnClark\AppData\Local\Programs\Python\Python312\python.exe -m pip install --upgrade pip
对于 Arch Linux,由于系统限制,无法直接用 pip 安装。你可以使用我制作的 PKGBUILD 来构建、安装 MW2Fcitx 软件包。操作步骤如下:
# 安装依赖项
sudo pacman -Syu
sudo pacman -S python-hatchling pypinyin
git clone https://github.com/AnClark/mw2fcitx-arch-PKGBUILD
# 构建并安装MW2Fcitx软件包
cd mw2fcitx-arch-PKGBUILD
makepkg
sudo pacman -U python-mw2fcitx-3.10-1-any.pkg.tar.zst
寻找支持的 MediaWiki 站点
要想使用 MW2Fcitx,你首先需要找到一款使用 MediaWiki 搭建的百科平台,然后再找到该平台的 API 地址。
MW2Fcitx 通过调用 MediaWiki 的 API 来获取词条列表,API 调用的入口为站点上的一个 PHP 文件——api.php
。通常绝大部分 MediaWiki 站点的 api.php 位于站点根目录(如中文维基百科)。同时,也存在特殊的例子:
- 中文维基百科,API 地址为
https://zh.m.wikipedia.org/w/api.php
。 - BWiki,它由多个子百科组成,每个子百科都是独立的,因此 api.php 位于相应子百科站点的根目录。
一些百科网站的 MediaWiki API 路径如下表:
网站 | API地址 |
---|---|
中文维基百科 | https://zh.wikipedia.org/api.php |
萌娘百科 | https://zh.moegirl.org.cn/api.php |
BWiki——明日方舟 | https://wiki.biligame.com/arknights/api.php |
BWiki——原神 | https://wiki.biligame.com/ys/api.php |
BWiki——崩坏星穹铁道 | https://wiki.biligame.com/sr/api.php |
BWiki——赛马娘 | https://wiki.biligame.com/umamusume/api.php |
神奇宝贝百科 | https://wiki.52poke.com/api.php |
其他站点的 API 路径可以根据上面的例子推出。
通过直接在浏览器打开该路径的方法,你也可以判断一个站点是否为 MediaWiki 站点。如果是,则打开的网页将会是帮助文档,如下图所示:
编写配置文件
MW2Fcitx 需要配置文件来工作。配置文件名为config.py
,它将用于指定 MW2Fcitx 如何获取并生成词库。
首先,创建一个目录,作为 MW2Fcitx 的工作目录。
在工作目录下,创建一个文件config.py
,填入下面的内容。请你根据文件中的中文注释,修改相应的字段。注意这些字段是 Python 字符串格式的。
# By default we assume the configuration is located at a variable
# called "exports".
# You can change this with `-n any_name` in the CLI.
from mw2fcitx.tweaks.moegirl import tweaks
exports = {
# Source configurations.
"source": {
# MediaWiki api.php path, if to fetch titles from online.
# 【⬇️api_path这一项,指定百科网站的api.php⬇️】
"api_path": "https://zh.m.wikipedia.org/w/api.php",
# Title file path, if to fetch titles from local file. (optional)
# Only works if api_path is absent.
# 【⬇️file_path这一项,指定用于暂存获取内容的文件名⬇️】
"file_path": "titles.txt",
"kwargs": {
# Title number limit for online fetching. (optional)
# Only works if api_path is provided.
#"title_limit": 120,
# Title list export path. (optional)
# 【⬇️output这一项是可选的,指定词条列表的输出路径。⬇️】
#"output": "titles.txt"
}
},
# Tweaks configurations as an list.
# Every tweak function accepts a list of titles and return
# a list of title.
"tweaks":
tweaks,
# Converter configurations.
"converter": {
# opencc is a built-in converter.
# For custom converter functions, just give the function itself.
"use": "opencc",
"kwargs": {}
},
# Generator configurations.
"generator": [{
# rime is a built-in generator.
# For custom generator functions, just give the function itself.
# 【⬇️MW2Fcitx也可以为其他输入法生成词库。默认为RIME生成⬇️】
"use": "rime",
"kwargs": {
# Destination dictionary filename. (optional)
# 【⬇️output这一项,指定输出的词库文件名,建议以YAML为扩展名】
"output": "wikipedia.dict.yaml"
}
}]
}
特别注意以下字段:
api_path
,填写 MediaWiki 网站的 API 路径,通常指向站点的api.php
。找到百科平台的API路径后,请记得替换该字段。generator/kwargs/output
,是输出词库的文件名。建议以.dict.yaml
为扩展名,因为RIME似乎会优先识别这个扩展名的文件。source/kwargs/output
,是输出词条列表的文件名,这个参数是可选的。默认为「titles.txt」
注意:Windows 在输出词条列表文件时会发生异常,因此笔者在上面的例子中,把
"output": "titles.txt"
这一行给注释掉了。
开始生成词库
配置文件编写完成后,我们就可以着手生成词库了。
在工作目录下,打开命令行,然后运行 MW2Fcitx:
# 直接运行,不带参数
mw2fcitx
稍等片刻,MW2Fcitx 就会自动从百科网站获取词条名称列表,然后经过一系列处理流程,生成 RIME 词库。
正确的执行日志就像以下这样(节选):
2024-06-30 17:20:01,969 [DEBUG] Fetching titles from https://somewiki.com/wiki/api.php
2024-06-30 17:20:02,280 [DEBUG] Got 10 pages
.....
2024-06-30 17:20:23,288 [DEBUG] Got 38452 pages
2024-06-30 17:20:23,288 [INFO] Finished.
2024-06-30 17:20:23,289 [DEBUG] 38452 title(s) imported.
2024-06-30 17:20:23,291 [DEBUG] 1 title(s) imported.
2024-06-30 17:20:23,292 [DEBUG] Running 7 pipelines
2024-06-30 17:20:23,292 [DEBUG] Running pipeline 1/7 (cb')
......
2024-06-30 17:20:23,835 [DEBUG] Running pipeline 7/7 (tweak_normalize')
2024-06-30 17:20:23,848 [DEBUG] Deduplicating 119528 items
2024-06-30 17:20:23,856 [DEBUG] Deduplication completed. 37118 items left.
2024-06-30 17:20:23,857 [DEBUG] Exporting 37118 words with OpenCC
2024-06-30 17:20:24,162 [DEBUG] 1000 converted
......
2024-06-30 17:20:24,687 [DEBUG] 7724 converted
2024-06-30 17:20:24,712 [INFO] Dictionary generated.
生成的词库位于工作目录下,文件名在配置文件中指定,例如wikipedia.dict.yaml
、GenshinImpact.dict.yaml
。
安装词库
词库生成后,我们就可以把词库安装到系统中,以供 RIME 调用。不同平台有不同的安装方法。
1)Linux
生成的词库通常安装在 RIME 的资源目录下,位于/usr/share/rime-data/
。接下来我们把刚生成的词库复制到该目录下:
# 例如:生成的词库名为wikipedia.dict.yaml
sudo cp wikipedia.dict.yaml /usr/share/rime-data/
在 Arch Linux 中安装的fcitx5-pinyin-moegirl-rime
和fcitx5-pinyin-zhwiki-rime
这两个包,也会直接把词库安装在上述目录下。
2)Windows
Windows 版的 RIME 是小狼毫(Weasel),一般我们把生成的词库放在它的「用户文件夹」下。该文件夹集中存放用户的配置。
右击任务栏上的小狼毫图标(显示为黑色方框里一个「中」字,或红色方框里一个「A」字母),选择「用户文件夹」。
此时会在资源管理器里打开用户文件夹。把 MW2Fcitx 生成的词库粘贴到这里,例如我从 BWiki 获取的原神词库(取名为GenshinImpact.dict.yaml
):
3)macOS
macOS 下的 RIME 适配为鼠须管(Squirrel)。它的配置方法与小狼毫类似,只是用户文件夹位于~/Library/Rime
。
由于笔者没有 macOS 的电脑,因此无法演示。你可以参照这篇教程里的思路。
挂载词库
词库安装完成之后,我们还需要修改 RIME 输入方案的配置文件,以挂载词库。需要注意的是,每套输入方案选用的词库是独立的,这就意味着若你有多套方案,那么想给几套输入方案挂载词库,就要修改几套输入方案的配置文件。
修改配置文件需要在用户文件夹中进行2。
0)不同平台的用户文件夹目录
- Fcitx4:
~/.config/fcitx/rime/
- Fcitx5:
~/.local/share/fcitx/rime/
- 小狼毫、鼠须管:请参照上一章。
1)RIME 自带方案(以朙月拼音为例)
- 第一步,新建自定义词典文件。在用户文件夹目录中,新建
luna_pinyin.mydict.dict.yaml
(mydict
部分可任取),内容如下:
---
name: luna_pinyin.mydict # 必须与文件名的相应部分保持一致
version: "1.0"
sort: by_weight # 默认以词频排序
use_preset_vocabulary: true
# 此处为朙月拼音载入的词库列表
import_tables:
- luna_pinyin # 朙月拼音基本词库
- moegirl # 萌娘百科(由fcitx5-pinyin-moegirl-rime提供)
- zhwiki # 中文维基百科(由fcitx5-pinyin-zhwiki-rime提供)
- GenshinImpact # 在教程上文中生成的词库
---
注意:必须保留 YAML 正文前后的各 3 个横杠,这是词库的固定语法。
- 第二步,新建自定义拼音方案文件。在 RIME 中,用户修改拼音方案并不是直接修改源文件,而是以「打补丁」的形式进行。在配置文件目录中,新建
luna_pinyin_simp.custom.yaml
,内容如下:
# luna_pinyin_simp.custom.yaml
patch:
# 指定自定义词库,字段值就是第一步中"name"字段的内容
"translator/dictionary": luna_pinyin.mydict
- 第三步,重新部署。右键点击系统托盘的 RIME 图标,选择「重新部署」,稍等片刻即可使用。
2)第三方拼音方案(以雾凇拼音为例)
- 第一步:新建/打开配置文件。在用户文件夹目录中,打开
rime_ice.dict.yaml
。如果你是在 Arch Linux 发行版中安装雾凇拼音,那么用户文件夹目录里是没有该文件的,你需要从/usr/share/rime-data/
中复制一份过来。 - 第二步:修改配置文件。找到
import_tables
字段,在文件注释「建议把扩展词库放到下面...」3下方加入我们的词库。如下所示(下面为该文件的节选):
# Rime dictionary
# encoding: utf-8
---
name: rime_ice
version: "2023-11-13"
import_tables:
- cn_dicts/8105 # 字表
# - cn_dicts/41448 # 大字表(按需启用)
- cn_dicts/base # 基础词库
- cn_dicts/ext # 扩展词库
- cn_dicts/tencent # 腾讯词向量(大词库,部署时间较长)
- cn_dicts/others # 一些杂项
# 建议把扩展词库放到下面,有重复词条时,最上面的权重生效
# - cn_dicts/mydict
# 【⬇️在下面添加你的词库。注意每一行前面有两个空格缩进。⬇️】
- GenshinImpact # 在教程上文中生成的词库
...
# 以下部分省略。
- 第三步,重新部署。右键点击系统托盘的 RIME 图标,选择「重新部署」,稍等片刻即可使用。
友情提示:如果加载了中文维基百科(rime-pinyin-zhwiki)等大容量的词库,那么重新部署的过程会比较长。请耐心等待。
添加词库后的效果
最后,笔者给大家演示添加词库前后输入体验的对比。
我的测试环境是 Windows 11,安装小狼毫,启用雾凇拼音输入方案。添加的词库是 BWiki 原神词库。
添加前的输入效果如下,可见原神的一些词汇没有收录4,例如:
添加词库后,上面的原神词汇都已经收录。笔者自己在做测试的时候,几乎感觉不到词库的完善,直到顺畅输入这些词汇后才反应过来(确信):
写在最后
对于专门性强的词汇,尤其是游戏、动漫相关的词汇,RIME 的词库未必有收录。幸运的是,热爱相关领域的志愿者们,一直在各个基于 MediaWiki 的平台中做出贡献,他们创建的词条名称就是非常专业和宝贵的语料资源。
运用 MW2Fcitx 来获取这些百科的词条名,制成 RIME 词库并加载,就可以极大地充实我们的词库,满足这些专门领域的输入需求。从此,在撰写文章,尤其是相关领域的文章时,你再也不用一个个地找候选字来造词,想要的词汇都能信手拈来。你的 RIME 输入体验,从现在起,如虎添翼。
> 关注 少数派小红书,感受精彩数字生活 🍃
> 实用、好用的 正版软件,少数派为你呈现 🚀