输入法词典的价值不在词表有多大,而在词频排序对不对。同一份词表,词频不准,候选顺序就是错的,每次选词都要多按一下。
这个项目是一套全拼词典,覆盖单字到长词组。词频不来自单一词表,而是多个互相独立的来源融合校准而成。清洗、去冗余、离群点检测与合并的完整做法单独写在一份文档里,不藏在脚本里。
同一份数据出四种格式
引擎吃的格式不一样,所以按引擎分发。
- Rime:源码词典
pinyin.dict.yaml,全量约 53.4 万条。精简版是pinyin_lite.dict.yaml,约 23.6 万条。 - fcitx5 与 libime:预编译的
pinyin_fcitx5.dict,对应全量版。 - fcitx4 等旧引擎:预编译的
pinyin_lite_fcitx4.mb,对应精简版。 - 纯文本导入:
dict.txt,约 52.5 万条。
预编译那两份的意义是省掉一次编译。fcitx 用户拿到就能用,不需要在本机把词表重新编一遍。
词频列为什么有两份
dict.txt 的词频是浮点数,dict_intrank.txt 的内容一致,词频是整数。
浮点词频能表达更细的名次差别,但不是每个引擎都收。采用整数词频机制的输入法只认排名,喂浮点数会被截断或拒绝。分成两份,是为了不让人自己去换算,也避免换算时按错误的方式取整。
纯文本词库里不含单字
纯文本那两份只收两字以上的词组,单字只在 Rime 的源码词典里。
它们的定位是增补词库,不是基础词库 —— 基础词库里的单字够用,这里只补词组。
需要逐字输入的场景用 Rime 那两份,只要词组排序的场合用文本那份。
取用
按自己用的引擎挑一个文件。Rime 用户把 .dict.yaml 放进用户目录重新部署;fcitx5 与 fcitx4 直接用预编译文件。想自己导入的,先看清目标软件收浮点还是整数词频,再选 dict.txt 或 dict_intrank.txt。
项目在 https://github.com/lunzima/ChsPinyinUDL,许可 MIT。词典的更新频率不会很高,问题与词汇建议走 issue 即可。
评论
点击下面的按钮加载评论框。评论提交后需经确认,不会立即显示。
已提交,确认后会显示。