青简词库构建
把「某领域的专业词表」变成青简输入法可直接导入的词库,并保证格式、编码、词频三项口径与既有词库一致。
规则来源是青简官网文档《词库》与《五笔与混输》(qingjian.app/docs)。技能内的规则表不是凭印象写的:
已完成的 30,314 条机械行业词库,其拼音与格式规则已由本技能逐条复现验证,偏差为零。
既有成品词库统一放在案例库 <https://gitee.com/seaworld/qingjian-vocabulary-bank>,
可直接取来导入使用,也可作为新库的口径标尺与词源。做新库前先看下文「案例库」一节,能省掉「猜口径」与「从头攒词」两步。
何时使用
- 新建某个垂直领域的青简词库(拼音 / 五笔 / 双库)
- 在既有词库上扩充、改版、调词频
- 校验一份词库是否符合青简导入规范
- 分析既有词库的组成与规则,作为新库参照
- 想直接拿一套现成词库做起点,或看看同类词库长什么样(见「案例库」)
第一步:确认形态(必做,不可跳过)
在写任何词条之前,先问用户要做哪一种。 用一次三选一的提问,不要用文字罗列让用户自己挑:
| 选项 | 产物 | 适用 | 前提 |
|---|---|---|---|
| 拼音词库 | <标题>_<量级>.tsv + .dict.yaml |
用拼音打字的用户;覆盖面最广 | 无 |
| 五笔词库 | <标题>_五笔_<量级>.tsv + .dict.yaml |
用五笔(86)打字的用户 | 需一份单字码表 |
| 双词库 | 以上两套共 4 个数据文件 | 团队里两种输入法都有人用 | 需一份单字码表 |
判定规则:
- 用户已明确说了形态,直接采用,不要重复提问。
- 用户只说「做个词库」而未指定形态,必须提问。
- 用户选了五笔或双库但拿不出码表,先问清是「有现成 Rime 五笔词典」还是「需要我按某份码表转换」,
再走codes-import;不要在没有码表的情况下承诺五笔产物。 - 命令行等价写法:
--kinds pinyin/wubi/both;留空时init会自己在终端里问。
输入
| 类别 | 内容 |
|---|---|
| 必填 | 词库名(作 Rime name)、标题(文件名前缀)、领域名、形态 |
| 选填 | 目标条数、词频档位、领域归类关键词、分册核心词 |
| 素材四种给法 | ① 只给领域与零件/设备清单,由技能展开词族;② 给现成词表(空格或换行分隔);③ 给一份既有词库,先 profile 反推口径;④ 从案例库取同类词库,直接并入或改造 |
输出
| 文件 | 内容 |
|---|---|
<标题>_<量级>_<版本>.tsv |
拼音库主体,词 ⟶ Tab ⟶ 拼音 ⟶ Tab ⟶ 词频 |
<标题>_<量级>_<版本>.dict.yaml |
Rime 版,内容同源,头部 version 与文件名一致 |
<标题>_五笔_<量级>_<版本>.tsv |
五笔库主体,词 ⟶ Tab ⟶ 编码 ⟶ Tab ⟶ 词频 |
<标题>_五笔_<量级>_<版本>.dict.yaml |
五笔 Rime 版 |
词库说明.md |
统计、格式说明、导入步骤、构成方式、编码说明(六节),首部标注版本 |
版本号:finalize 自动生成并回写 spec.json 的 meta.version,格式 YYYY-MM-DD-NN——同一库当天首次为 01,
当天再改递增 02,隔天重置为 01。内容未变的重复定稿沿用原版本号,不会刷出新号;交付时把版本号一并报给用户。
out/_terms.tsv 与 out/_build.json 是中间产物,不交付。
.qj 格式为青简私有封装,本技能不产出。
工作流
- 确认形态(见上),据此决定
kinds。 - 建项目
bash
python scripts/qingjian.py init --name 机械行业专业术语 --dir ./mech_dict \
--title 机械行业专业术语词库 --domain 机械 --kinds both
- 填词表:
kb/core.txt(核心词)、kb/units.json(零件级词族)、kb/words.json(设备与搭配)。
字段定义见references/schema.md。 - 备码表(仅五笔/双库):
python scripts/qingjian.py codes-import --rime wubi86.dict.yaml --out <项目>/codes/wubi86.tsv - 生成:
python scripts/qingjian.py build --project ./mech_dict。会打印各范式产量与剔除计数。 - 校验:
python scripts/qingjian.py validate <tsv> --rime <yaml> --doc <说明>
五笔库另加--codes <码表>以复算词组编码。退出码 0 即通过。 - 交付:把成品三件套(或五件)路径给用户,说明导入位置与注意事项。
命令速查
| 目的 | 命令 |
|---|---|
| 建骨架 | qingjian.py init --name X --dir D --kinds pinyin\|wubi\|both |
| 生成 | qingjian.py build --project D [--limit N] |
| 重出成品 | qingjian.py finalize --project D |
| 校验 | qingjian.py validate 文件 [--kind] [--codes] [--rime] [--doc] [--json] |
| 体检既有库 | qingjian.py profile 文件 [--out 报告.md] |
| 转码表 | qingjian.py codes-import --rime X.dict.yaml --out codes.tsv |
| 自检 | python scripts/selfcheck.py |
关键约束(改动前先看这几条)
- 形态由第二列判定:多字词第二列含空格 → 拼音库;连续字母 → 五笔库。
拼音库必须空格分词,五笔库必须无空格,两者不可混写。 - 五笔库必须含多字词。全是单字的文件,青简会按拼音库导入。
- 词形为 2–14 个纯汉字,剔除首二字或末二字重复(如「轴轴肩」)与三连重复。
- 拼音音节数必须等于字数,ü 写作
v,不带声调。 - 五笔编码只用 a–y 25 键,多字词一律四码。词组码由单字全码推导,不可从拼音推。
- 词频确定性生成:
基数 + MD5(词)%跨度 + max(0, 8−词长)×40。同词同档恒定,便于比对。 - 文件为 UTF-8 无 BOM、LF 换行、Tab 分隔。
#开头为注释行,词频可省略。
案例库(既有词库,可直接取用)
<https://gitee.com/seaworld/qingjian-vocabulary-bank>
本技能产出的成品词库都收录在这里,既是能直接导入的成品,也是新库的参照样本。
| 词库 | 条数 | 领域 | 用途 |
|---|---|---|---|
机械行业专业术语词库_3万条 |
30,314 | 机械:紧固件、键、齿轮、轴承、加工工艺(车铣刨磨、热处理、焊接、铸造)、材料、量具与检测 | 格式规则金标;跨领域通用词多,常被借用 |
材料学专业术语词库_1.5万条 |
14,976 | 材料:晶体结构与相变、缺陷与扩散、力学性能与失效、表征试验、金属/陶瓷玻璃/高分子/复合材料、电池与半导体、腐蚀防护 | 三层构词范例(对象 + 组织 + 参数/缺陷/工艺) |
数学专业术语词库_1万条 |
10,257 | 数学:小学到大学本科——算术与数、平面与立体几何、代数式与方程、函数与三角、数列与极限、导数与积分、级数、线性代数、概率统计、复变与微分方程、实变与泛函、抽象代数、拓扑、数论、数值分析、运筹与图论、数理逻辑与集合 | 多音字语境定音范例(奇函数 ji、行列式 hang、重积分 chong、着色 zhuo) |
每个词库含 .tsv 与 .dict.yaml 各一份。取用方式:
# 首选:克隆整库(raw 直链会被 Gitee 防爬拦成跳转页,取不到正文)
git clone --depth 1 https://gitee.com/seaworld/qingjian-vocabulary-bank.git
# 只要目录清单
curl -s "https://gitee.com/api/v5/repos/seaworld/qingjian-vocabulary-bank/contents/"
三种用法:① 当口径标尺 —— profile 反推词频档位与词长分布,让新库对齐;② 当词源 —— 把重合领域的词条并入
kb/core.txt,build 自动去重;③ 当版式样本 —— 说明文档「五条首部统计 + 六节正文」照抄结构。
两处口径差异要留意:机械库的 .dict.yaml 写成连续拼音(duihan),按第二列判定会被当成五笔库,
导入前宜用本技能重出 Rime 版;三份 .tsv 都是空格分词,可直接导入。细节见 references/case-library.md。
没有明确授权时不要向该仓库推送;需要入库时先把改动清单与提交信息交给用户确认。
与既有词库的一致性
- 拼音规则(55 个单字定音、42 组词组定音)源自对既有 30,314 条机械库的逐条复现,此后按标准读音补入
弹性tan、泊松bo、着色zhuo等定音。仓库内三个库的 TSV 与 YAML 均已按当前规则层重出,
逐条一致、零剩余差异;历史差异(机械库 871 条、材料库 3 条)已订正。 - 说明文档沿用既有版式:五条首部统计 + 六节正文,章节名与顺序固定。
- 词频档位沿用 7600/5200/3200/1700/800 五档,区间 800–10039;机械与材料库用满五档,数学库取 1700 以上四档。
- 一处刻意的差异:Rime 版的拼音改为音节空格分隔。既有库写成连续拼音(如
duihan),
按官网判定规则会被当成五笔词库导入;改正后validate会给出 R03 提示而非错误,便于逐步迁移。
参考资料
| 文件 | 内容 |
|---|---|
references/schema.md |
项目结构、spec 与 kb 字段、20 个构词范式、产物命名 |
references/case-library.md |
案例库地址、现有词库清单、克隆方式、三种用法与口径差异 |
references/pinyin.md |
拼音规则、多音字表、常见错误 |
references/wubi.md |
五笔格式、词组取码规则、码表来源与转换、缺码处理 |
references/platform-rules.md |
官网导入规则摘录、形态判定、说明文档六节规范、校验项对照 |
自检
python scripts/selfcheck.py
覆盖拼音金标、五笔词组编码、词形判定、词频确定性、拼音/五笔/双库三条端到端链路、
体检与码表转换、异常发现能力,共 53 项。
限制
- 依赖
pypinyin;缺失时脚本会直接给出安装命令。 - 五笔需外置单字码表,不随包分发第三方码表;示例码表仅覆盖示例用字,用于跑通链路。
codes-import只读 Rime 词典与字<TAB>码两种来源,不解析.qj。- 五笔词库导入仅 macOS 与 Windows 支持,Linux 与 Android 暂不支持。
- 领域归类按关键词首次命中统计,允许交叉,结果是统计口径而非严格分类。