rime输入法

rimeime是中州韻輸入法引擎 | Rime Input Method Engine,项目网址如下
https://code.google.com/p/rimeime/ 。按照官网给出的定义:Rime不是一种输入法。是从各种常见键盘输入法中提炼出来的抽象的输入算法框架。英文Rime涵盖了大多数输入法的共性,所以在不同设定下,Rime可化身为不同的输入法用来打字。Rime是跨平台的输入法软件,Rime输入方案可通用于以下发行版:

  • 【中州韻】 ibus-rime → Linux
  • 【小狼毫】 Weasel → Windows
  • 【鼠鬚管】 Squirrel → Mac OS X

很多东西看官方的wiki就能看明白,今天折腾Rime输入法主要是在Windows下,解决了几个问题。

词库

之前一直使用Google拼音输入法,Google拼音输入法能够导出一套用户长期积累的词库。我利用“深蓝词库转换“工具将Google拼音输入法导出的词库,大概7万多条转成Rime词库格式。然后开始菜单调出,小狼毫用户词典管理,选中luna_pinying,点击“导入文本码表”导入词库。瞬间就可以从Google拼音输入法转移到Rime输入法。导入文本码表只是针对Google拼音输入法中由用户积累的词汇。一般只建议将最为关键,带有词频信息的词库使用“导入文本码表”的方法导入到Rime输入法。
关于词库,Rime输入法的词库有两部分组成。以下摘自贴吧:

  • 一部分是由系统文本词库(一般以xxx.dict.yaml结尾)通过「重新部署/deploy」生成的固态词典(一般以xxx.table.bin结尾),这部份词库因为在输入过程是固定不変的,所以存在用大量的词彚,也不允许用戸来直接删除。

  • 另一部分就是记录我们用戸输入习惯的用戸词典(一般以xxx.userdb.kct)结尾。这部份词库的词彚,正常情况下是由用戸输入的时候随时生成的;其词彚可以动态调整,数量理论上来说不会特别多,也允许用戸自行删除(shift+delete)。

佛振同学在设计用户词典时,没有考虑到有导入大词库的需求,就按照估计用戸可能积累起来的词彚量,把容量设置为「十万」规模以提升存储效率,超过这个量性能则会下降。

佛振同学设计「【小狼毫】用戸词典管理」的初衷和真正目的,在於譲大家将自己従其他输入法中积累出来的用戸词彚,可以顺利地迁移到rime中。而不是譲你把其他输入法整个系统词库都搬进来。如今,「【小狼毫】用戸词典管理」这个功能和界面,已经被众多的小白同学稀里糊涂地滥用了。

如何正确的导入词库?答:新增固态词典引用多份码表文件

批量添加词汇,过去一直没有简易的做法。现在可以这样做:
以【朙月拼音】为例,在输入方案裏指定一个新的词典名为

luna_pinyin.extended
#luna_pinyin.custom.yaml
patch:
translator/dictionary: luna_pinyin.extended

然后在用户目录创建一个词典文件luna_pinyin.extended.dict.yaml

#Rime dictionary
---
name: luna_pinyin.extended
version: "2013.04.22"
sort: by_weight
use_preset_vocabulary: true
import_tables:
  - luna_pinyin
...
# table begins
鸹鸹! gua gua 100

这样一来,部署【朙月拼音】这个输入方案时,将编译 luna_pinyin.extended 这部词典,而这部词典除了导入【八股文】词汇表之外,还导入了名为 luna_pinyin 的词典文件,即 luna_pinyin.dict.yaml 。被导入的词典文件只取其码表,忽略 YAML 段。
被导入的码表与本词典自带的码表共同决定了编码集合。
当然也可以:本文件的码表完全为空,只用来按需合并多个外部码表文件。

luna_pinyin.extended 这个词典的神奇之处是:虽然luna_pinyin.schema.yaml 已设置为加载名为 luna_pinyin.extended 的词典,但配套的用户词典名却是「luna_pinyin」,即 Rime 自动取句点之前的部分为用户词典名,以保证按以上方法增补了词汇之后,不至於因为改变词典名而抛弃原有的用户词典。

请注意,此法的设计用途是合并编码方案相同的多份词典文件,而不是用来将不同的编码混在一起。

具躰的示例代码可参考 https://gist.github.com/lotem/5443073

其実佛振同学已经说得足够好了。
其中心思想提炼出来就是
1. 先譲输入方案引用一个新的系统词库码表(佛振同学在gist.github.com上的示例中是luna_pinyin.kunki.dict.yaml),即给输入方案luna_pinyin(明月拼音)打一个补靪,将调用的词库重置为luna_pinyin.kunki.dict.yaml
2. 创建一个luna_pinyin.kunki.dict.yaml的文件,加入好你需要导入的词彚(如「瑾昀」等等)。竝导入内置的系统词库(import_tables: luna_pinyin)。

其実佛振同学import_tables的这个做法,頪似於C语言编程中的#include头文件。
其目的和工作机制都是一様的。目的是引用头文件(或是系统预设词库)竝添加上自己的内容;工作机制是在编译(或是重新部署的时候),将链接到的不同的文本文件合并成一个文件,竝処理成二进制文件。

我另外要在佛振同学的基础上补充几点

  1. luna_pinyin.custom.yamlluna_pinyin.extended.dict.yaml都要放入用戸文件夹中
  2. 通过import_tables的方法,不仅仅可以导入预设的词典,甚至可以导入其他的自定义词典
    以笔者为例子,我在朙月拼音输入方案中设定的词库名叫luna_pinyin.extended.dict.yaml
    而我luna_pinyin.extended.dict.yaml在文件头部分,除了系统预设词库之外,还导入了其他的细胞词库

  3. 码表中的词彚格式
    3.1 码表文件必须是utf-8无bom的编码。不能用ansi,否则出来的词彚会乱码
    3.2 Rime对词彚的格式有着厳格的限定,其标凖形式是「词彚<tab>ci hui<tab>100」(方引号内部的部分,<tab>表示制表符(顕示为空白字符,不是空格))。
    拼音码表的词彚格式是一个词彚占一行,不同的属性之间以制表符为间隔,编码之间以半角空格为间隔。従左往右依次是词彚、编码、词频。
    其中编码和词频是可省略的。
    也就是说
    词彚<tab>ci hui」、「词彚<tab><tab>100」、「词彚
    都是合法词库文件格式。

如果词频省略,那麼输入法会优先调用「八股文」(一个预设的中文语言模型,包含词彚和词频两穜属性)的词频,如果八股文找不到该词彚的词频,那麼这个词彚的词频就当成0来処理。

如果编码省略,那麼输入法在重新部署,将文本码表生成固态词典的时候,会根拠词库中的单字来给词彚自动编码(如果是拼音的话,叫「给词彚注音」更妥帖)
比如词库中有

我<tab>wo
和<tab>he
你<tab>ni
我和你

四个item,那麼「我和你」这个省略了编码的词彚在生成固态词典的时候会自动被注音上「wo he ni」。
其中有一个特别需要注意的地方,那就是処理多音字。
对於含多音字的词彚,我们要侭量避免譲输入法给他自动注音,因为会帯来错误的读音(比如「重庆」读成「zhong qing」)
所以一般含多音字的词彚都要最好标注上读音。
如果実在没辧法弄到读音也没関系。因为Rime已经给多音字的罕见音做了降频処理。従而使得多音字的罕见音不会参与词彚的自动注音。

関於自动注音的具躰的细节可以看rime的wiki,这裏我就不多说了。総而言之,我廃话那麼多,是为了譲大家了解rime词库的工作机制,其実就为了告诉大家两句话:「在导入词彚的时候,一般来说只要加纯汉字就够了。含多音字的词,系统词库一般都有,如果没有才要考虑给这个词注上音。」

另外,系统词库中,已经包含了完整的单字注音和罕用读音降频処理,大家可以放心地导入纯汉字词彚,不用太过担心。(所以一定给要记得import_tables: luna_pinyin,来使自定义码表获得系统词库中的单字注音、含多音字词彚注音以及系统词彚词频)

再来一个另外。。。
关於楼主配置的多个词库挂接的方法实例,可参考由rime-aca友情提供的「朙月拼音·扩充词库」
下载地址:https://bintray.com/rime-aca/dictionaries/luna_pinyin.dict

源自:百度贴吧置顶帖关于导入词库和深蓝词库转换
参考:https://code.google.com/p/rime-aca/
其他词库下载
搜狗词库 http://cl.ly/033g2x3k2J05 来源

修改配置文件定製指南

更改候选词数

修改文件default.custom.yaml

patch:
  "menu/page_size": 10

候选词最多支持10个。

模糊音

https://gist.github.com/2320943 作为模板保存到luna_pinyin_simp.custom.yamlluna_pinyin_tw.custom.yamlluna_pinyin_fluency.custom.yaml即可。

小狼毫外观设定

# weasel.custom.yaml
patch:
  "style/font_face": "华文行楷"  # 字體名稱,從記事本等處的系統字體對話框裏能看到
  "style/font_point": 16     # 字號,只認數字的,不認「五號」、「小五」這樣的

  style/horizontal: true      # 候選橫排
  style/inline_preedit: true  # 內嵌編碼(僅支持TSF)
  style/display_tray_icon: true  # 顯示托盤圖標

http://jianguoyun.com/p/DaBygmsQtJkBGLntCQ

一些快捷键

ctrl+` (grave) tab键上面,1左边的那个键 切换Rime输入方案
shift+delete 删除选中候选词
ctrl+ np 上下选词

Related Articles

Quote Of The Day