ChsPinyinUDL:词频校准与四种格式

输入法词典的价值不在词表有多大,而在词频排序对不对。同一份词表,词频不准,候选顺序就是错的,每次选词都要多按一下。

这个项目是一套全拼词典,覆盖单字到长词组。词频不来自单一词表,而是多个互相独立的来源融合校准而成。清洗、去冗余、离群点检测与合并的完整做法单独写在一份文档里,不藏在脚本里。

同一份数据出四种格式

引擎吃的格式不一样,所以按引擎分发。

  • 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 即可。

评论

点击下面的按钮加载评论框。评论提交后需经确认,不会立即显示。