# 将基于mediawiki框架的百科的词库转成rime词库

**URL:** <https://forum.beginner.center/t/topic/1793>\
**Category:** 🛠工具与编程\
**Created:** [2025 年3 月 4 日 16:11 UTC](https://forum.beginner.center/t/topic/1793 "2025-03-04T16:11:06Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![doggie](https://forum.beginner.center/user_avatar/forum.beginner.center/doggie/32/550_2.png) [@doggie](https://forum.beginner.center/u/doggie)\
发布日期： [2025 年3 月 4 日 16:11 UTC](https://forum.beginner.center/t/topic/1793/1 "2025-03-04T16:11:07Z")

</div>

> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码， 原文地址 [sspai.com](https://sspai.com/post/90068)

开源输入法 RIME，配合雾凇拼音等精心开发的输入方案，本身就已经满足日常需求——往往这些输入方案都配备包罗万象的常用词库。

然而，这些面向日常输入的词库，不可能涵盖方方面面，对于一些专门领域的词汇则未必有收录。例如，我在写一些游戏、动画番剧的文章时，常常会碰到角色名、地名、术语等没有被输入法收录的情况。因此，我常常免不了在候选字里一顿选，不觉间，输入效率大大降低。

幸运的是，RIME 的用户，可以站在 MediaWiki 百科志愿者们的肩膀上 [注释 1]。 **这些百科的词条名，本身就是非常丰富、专业的语料库。**

MediaWiki 是一个百科平台，由维基媒体基金会开发，维基百科就是基于它构建。[萌娘百科](https://mzh.moegirl.org.cn/%E8%90%8C%E5%A8%98%E7%99%BE%E7%A7%91:%E5%85%B3%E4%BA%8E)、[Bilibili 游戏百科（BWiki）](https://wiki.biligame.com/wiki/%E9%A6%96%E9%A1%B5)等知名平台也是建构在 MediaWiki 之上。你可以借助 [**MW2Fcitx**](https://github.com/outloudvi/mw2fcitx)\*\*（MediaWiki To Fcitx）\*\*这款工具，将这些百科的词条名做成 RIME 词库，大大拓展你的 RIME 输入体验。

## 背景：我是怎么发现 MW2Fcitx 的？

我的主力笔记本用的是 Arch Linux。在配置好 Arch Linux CN 源后，我想安装 RIME 输入法，在 Pacman 中搜索。这时，搜索结果中好像出现了什么神奇的东西：

```auto
$ 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，可以参考[菜鸟教程的文档](https://www.runoob.com/python3/python3-install.html)。

> **注意：**
> 
> 在 Windows 下，你只能使用 [Python 的官方版本](https://www.python.org/downloads/)。
> 
> 已知，Msys2 的 Python 无法正确安装 MW2Fcitx 的依赖项，安装时会出错；Scoop 安装的 Python 不带 Pip 工具。

在 Windows、macOS 与 Linux 发行版（除 Arch Linux）中， **借助** ` **pip** ` **即可轻松安装** ：

```auto
# 在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`。

正确的安装日志类似于下面这样：

```auto
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**](https://github.com/AnClark/mw2fcitx-arch-PKGBUILD) 来构建、安装 MW2Fcitx 软件包。操作步骤如下：

```auto
# 安装依赖项
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 站点。如果是，则打开的网页将会是帮助文档，如下图所示：

若能显示这个页面，那么这个百科就是由 MediaWiki 构建的。

## 编写配置文件

MW2Fcitx 需要配置文件来工作。配置文件名为`config.py`，它将用于指定 MW2Fcitx 如何获取并生成词库。

首先，创建一个目录，作为 MW2Fcitx 的工作目录。

在工作目录下，创建一个文件`config.py`，填入下面的内容。 **请你根据文件中的中文注释，修改相应的字段。注意这些字段是 Python 字符串格式的。**

```auto
# 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：

```auto
# 直接运行，不带参数
mw2fcitx

```

稍等片刻，MW2Fcitx 就会自动从百科网站获取词条名称列表，然后经过一系列处理流程，生成 RIME 词库。

正确的执行日志就像以下这样（节选）：

```auto
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/`。接下来我们把刚生成的词库复制到该目录下：

```auto
# 例如：生成的词库名为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`）：

小狼毫用户文件夹。红框中的文件就是我刚刚添加的 BWiki 原神词库。

### 3）macOS

macOS 下的 RIME 适配为鼠须管（Squirrel）。它的配置方法与小狼毫类似，只是用户文件夹位于`~/Library/Rime`。

由于笔者没有 macOS 的电脑，因此无法演示。你可以参照[这篇教程](https://github.com/ssnhd/rime)里的思路。

## 挂载词库

词库安装完成之后，我们还需要修改 RIME 输入方案的配置文件，以挂载词库。需要注意的是，每套输入方案选用的词库是独立的，这就意味着 **若你有多套方案，那么想给几套输入方案挂载词库，就要修改几套输入方案的配置文件** 。

修改配置文件需要在用户文件夹中进行 [注释 2]。

### 0）不同平台的用户文件夹目录

- Fcitx4：`~/.config/fcitx/rime/`
- Fcitx5：`~/.local/share/fcitx/rime/`
- 小狼毫、鼠须管：请参照上一章。

### 1）RIME 自带方案（以朙月拼音为例）

- \*\*第一步，新建自定义词典文件。\*\*在用户文件夹目录中，新建`luna_pinyin.mydict.dict.yaml`（`mydict`部分可任取），内容如下：

```auto
---
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`，内容如下：

```auto
# 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] 下方加入我们的词库。如下所示（下面为该文件的节选）：

```auto
# 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）](https://github.com/felixonmars/fcitx5-pinyin-zhwiki/releases)等大容量的词库，那么重新部署的过程会比较长。请耐心等待。

## 添加词库后的效果

最后，笔者给大家演示添加词库前后输入体验的对比。

我的测试环境是 Windows 11，安装小狼毫，启用雾凇拼音输入方案。添加的词库是 BWiki 原神词库。

添加前的输入效果如下，可见原神的一些词汇没有收录 [注释 4]，例如：

从上往下：枫丹、尘歌壶、芙宁娜、行秋、璃月。

添加词库后，上面的原神词汇都已经收录。笔者自己在做测试的时候，几乎感觉不到词库的完善，直到顺畅输入这些词汇后才反应过来（确信）：

添加词库后，上面的原神词汇都出现在了候选列表中。

## 写在最后

对于专门性强的词汇，尤其是游戏、动漫相关的词汇，RIME 的词库未必有收录。幸运的是，热爱相关领域的志愿者们，一直在各个基于 MediaWiki 的平台中做出贡献，他们创建的词条名称就是非常专业和宝贵的语料资源。

运用 MW2Fcitx 来获取这些百科的词条名，制成 RIME 词库并加载，就可以极大地充实我们的词库，满足这些专门领域的输入需求。从此，在撰写文章，尤其是相关领域的文章时，你再也不用一个个地找候选字来造词，想要的词汇都能信手拈来。你的 RIME 输入体验，从现在起，如虎添翼。

> 关注 [少数派小红书](https://www.xiaohongshu.com/user/profile/63f5d65d000000001001d8d4)，感受精彩数字生活 🍃

> 实用、好用的 [正版软件](https://sspai.com/mall)，少数派为你呈现 🚀
