方案生成工具
本项目提供一个强大的方案生成工具 tools/schemagen.py,可满足方案生成和维护的诸多需求。
INFO
该工具不随方案打包分发,请从 GitHub repo 上获取。
通用参数
参数 | 取值 | 说明 |
---|---|---|
--double-pinyin | zrm 或 flypy,默认 zrm | 双拼方案 |
--auxiliary-code | zrm 或 user,默认 zrm | 辅助码方案 |
--auxiliary-code-fallback | 字符串,默认 ?? | 当辅助码表中不存在该字时,使用这个参数作为辅助码 |
--pinyin-table | 文件路径,默认 data/pinyin.txt | 字词的拼音和词频 |
拼音表文件格式
使用 tab 分隔的三列数据,依次是字词、读音和词频。词语的读音可留空,这些读音会被自动生成。例:
〇 ling 981
音乐会 yin yue hui 1361
新闻办 718
预置拼音表
data/pinyin.txt
繁体数据,来自 Rime 八股文和朙月拼音data/pinyin_simp.txt
简体数据,来自 Rime 八股文和 pinyin_simp
INFO
在处理简化字方案时,通常需要设定 pinyin-table 参数。
命令 gen-chars
用于生成 moran.chars.dict.yaml
格式的文件。
直接使用拼音表数据。
python3 schemagen.py gen-chars
命令 gen-dict
用于生成整句词库,格式类似 moran.base.dict.yaml
。
在产生读音时:首先使用词库中的读音,若无,则会自动注音。自动注音过程可以调用 opencc 先进行简繁转换(因为所用注音库要求输入是简化字)。
在产生词频时:首先使用词库中的词频,若无,则会取 0。
参数 | 取值 | 说明 |
---|---|---|
--input-dict | 必须 文件路径 | pinyin-table 格式的词库 |
--opencc-for-pinyin | 文件名,默认 t2s.json | 在注音前简繁转换,默认繁转简 |
--opencc-for-output | 文件名,默认为空 | 在输出词语前简繁转换,默认不转换 |
--compact | 不保留容错码,只使用主码产生词典 | |
--no-freq | 不输出词频 | |
--freq-scale | 浮点数,默认 1.0 | 在输出词频时,可以乘上一个因子放大或缩小词频 |
输入词库格式
完整格式应是 pinyin-table 格式,即三个数据分别是词、读音、词频。
词库读入时对两列数据的情况做了兼容,同时支持词、读音和词、词频两种格式。即支持如下格式:
你好 ni hao
再见 123
命令 gen-fixed
该命令用于生成简码码表。
简码码表生成的逻辑:
- 首先依次产生所有字的全码,然后逐级尝试把字放入一级、二级、三级简码位。每个简码位最多容纳(tolerance 参数设定的数字)个简码。
- 词语和全码词放在,并依据词频统一排序。
若不指定 --short-word
则不生成简词。简词生成的逻辑:
- 给每个词语产生几种特定的短码:
- 二字词,使用两个字的首码产生二简码
- 三字词,使用三个字的首码产生三简码
- 然后将该简词码像简字码一样,逐级尝试放入简码位
参数 | 取值 | 说明 |
---|---|---|
--charset | 建议设置 文件路径,默认 data/trad_chars.txt | 设定码表中的单字 |
--input-dict | 建议设置 文件路径 | 与 gen-dict 命令使用相同的词库格式;设定码表中的词语 |
--format | 建议设置 code-words 或 code-word 或 word-code 或 word-codes | 输出码表格式 |
--opencc-for-pinyin | 文件名,默认 t2s.json | (与 gen-dict 命令相同)注音时使用的简繁转换设定 |
--tolerance | 逗号分隔的3个数字,默认 1,1,1 | 每级简码可以容纳几个简码 |
--short-word | 是否生成简词 |
命令 update-compact-dict
根据最新的 zrmdb 定义,更新 compact 词库中的辅助码部分。
INFO
这个命令可用于将繁体词库自动转换成简体词库后,再更新辅助码。
具体用法可参照 tools/update_compact_dicts.sh。
参数 | 取值 | 说明 |
---|---|---|
--rime-dict | 必须 文件名 | Rime 词库 |
命令 update_char_weight
根据最新 pinyin-table,更新 chars 码表的词频。
INFO
这个命令可用于将繁体字表自动转换成简体字表后,再更新辅助码。
具体用法可参照 make_simp_dist.sh
。
参数 | 取值 | 说明 |
---|---|---|
--rime-dict | 必须 文件名 | Rime 词库 |
命令 update_sp
根据最新 pinyin-table,重新修改词的双拼部分。
参数 | 取值 | 说明 |
---|---|---|
--rime-dict | 必须 文件名 | Rime 词库 |
--find | 必须 字符串 | 只更新含有这些字的词 |
例如,更新只含「朝」字的词语的读音:update-sp --find "朝"
命令 convert_sp
转换词库的双拼方案为其他方案。可以将本方案的自然码双拼转换成其他双拼。
输入双拼方案由通用参数中的 --double-pinyin
指定,输出方案由 --to
指定。
参数 | 取值 | 说明 |
---|---|---|
--rime-dict | 必须 文件名 | Rime 词库 |
--to | 必须 支持的双拼 | 目标双拼方案 |
命令 convert_fixed_sp
转换固定码表的双拼方案为其他方案。可以将本方案的自然码双拼转换成其他双拼。
输入双拼方案由通用参数中的 --double-pinyin
指定,输出方案由 --to
指定。
参数 | 取值 | 说明 |
---|---|---|
--rime-dict | 必须 文件名 | Rime 词库 |
--to | 必须 支持的双拼 | 目标双拼方案 |