Geek@Paris

如何从QIM迁移至Squirrel(鼠鬚管)

2012-08-26

Squirrel鼠鬚管是中州韻輸入法的Mac版。中州韻(Rime)是一款非常优秀的输入法引擎,享有“神级”的美誉。如果这是你第一次听说这个名字,请搜索一下网络,看看它到底“神”在哪里。(比如搜索“神级输入法 Rime”。搜索时请允许Google同时搜索繁体中文。)

QIM输入法是Mac平台最优秀的输入法之一。它以前是收费软件,推广不力,市场占有率不高。现在终于免费了,但市场竞争也更激烈了,很多Mac新用户都会直接选择他们以前习惯的输入法而不再研究一下其他的选择…说起QIM最大的特色,必然是QIT智能整句输入技术,以前收费时不注册的用户是无法体验到的。这个技术来源于黑马神拼,拥有120亿语料库产生的统计信息。在启用QIT之后,QIM的准确率会有极大的提高。感兴趣的朋友可以研究一下〜

大家都知道迁移输入法的成本是很大的。除了操作习惯会有不同外,用户词库能否迁移也是个问题。如何将长期积累的用户词库导入到Squirrel,想必对许多愿意尝鲜的朋友来说是一场考验。

虽然中州韻輸入法的官方指南中简述了管理用户词库的方法,但是它没有提供GUI工具给普通用户使用,而且对于特定输入法的词库来讲,还是需要一些转换才能让它们兼容的。

本文重点介绍一下如何导入QIM的用户词库以及如何按QIM的习惯配置Squirrel输入法。所需的工具和技术其实都很简单,详情请阅读正文。




前期准备

  1. 安装Squirrel输入法,目前最新版是0.9.8版。下载页面是:http://code.google.com/p/rimeime/wiki/Downloads?tm=2
  2. 下载Squirrel的自定义文件squirrel.custom.yaml,用户可以通过它来修改输入法的默认设置。下载页面是:https://gist.github.com/2290714
  3. 下载Squirrel词库导入导出工具rime_dict_manager,目前最新版是0.9.2版。在此页面中找下载地址:http://code.google.com/p/rimeime/downloads/list
  4. 准备一个文本编辑软件,我推荐当前很流行的Sublime Text 2,可免费使用。下载地址是:http://www.sublimetext.com/2



导出QIM用户词库

  1. 切换输入法到QIM,输入法菜单中找到”User Dictionary…”这一项并打开它
  2. 此时打开的QDM会列出所有用户词条,点击工具栏上的Export导出。
  3. 在弹出的对话框中选择“Export Simplified Words&Pinyin”,并点击OK。
  4. 然后选择保存路径,保存。



转换QIM用户词库

用Sublime Text 2打开导出的QIM用户词库(就是刚才保存的那个txt文件),可以发现里面的格式是这样的:

mo'nai'hua'yuan 莫奈花园

从中州韻輸入法的用户指南中我们可以知道它所需的词条格式是这样的:

莫奈花园 mo nai hua yuan 1

也就是:“中文tab空格分割的拼音tab使用频率”。

转换QIM用户词库的修改思路很简单,用正则表达式把拼音和汉字对换一下位置并补上使用频率,然后再把所有单引号替换成空格即可。步骤如下:

  1. 用Sublime Text 2打开QIM词库后,中按CMD+Shift+F打开搜索替换面板,按下最左边的Regular Expression按钮,然后在Find:中填入
    ^([a-z|']+) (.+)$
  2. Replace:中填入
    $2\t$1\t1
  3. 点击右侧Replace按钮,替换当前文件中所有匹配的内容。

这个时候你可以看到文本的格式已经改变了,但我们还需要最后一步来完善它。

  1. 按CMD+Shift+F快捷键打开搜索替换面板,这次不需要按下最左边的Regular Expression按钮。
  2. Find:中填入,在Replace:中填入一个空格。
  3. 然后点击Replace按钮,将所有半角单引号替换成空格。
  4. 按CMD+S来保存这个文件。

于是QIM词库转换完毕了!



导入转换好的QIM用户词库

  1. 将你转换好的词库文件重命名为import.txt
  2. 打开Finder进入~/Library/Rime目录。(打开Finder,按CMD+Shift+G快捷键,输入~/Library/Rime回车,此时打开的文件夹是中州韻輸入法的配置目录。)
  3. 将刚才命名好的import.txt和之前下载好的rime_dict_manager(记得解压缩)复制或移动到这个目录下。
  4. 打开Terminal控制台。(屏幕右上角放大镜中输入terminal回车即可打开。)
  5. 输入以下命令并回车确认。
    killall Squirrel
  6. 然后再输入以下命令并回车确认。
    ~/Library/Rime/rime_dict_manager -i luna_pinyin ~/Library/Rime/import.txt
  7. 此时你可以看到有多少个词条被导入了。

于是词库导入成功了!



按QIM的使用习惯配置Squirrel

  1. 将之前下载好的squirrel.custom.yaml(记得解压缩)复制或移动到~/Library/Rime目录。
  2. 用Sublime Text 2打开它
  3. 你会看到除了patch:以外其他内容都是以#号开头的。(#号在这里起注释的作用,有它的那一行设置将会无效。)我们想把Squirrel的垂直输入框改成横向的,并把输入框尺寸和后选词字体修改成QIM中习惯的样式,只需要去掉某些行开头的#号并参照以下内容修改,注意每一行开头必须要有3个空格:
       style/horizontal: true
       style/font_face: "Hiragino Sans GB"
       style/font_point: 18
       style/corner_radius: 5
  4. 修改完毕后按CMD+S快捷键保存文件。然后将输入法切换到Squirrel,在右上角输入法菜单里选择Deploy(快捷键Opt+CMD+R)来部署刚才的修改。

此时你再使用Squirrel输入法会发现输入框变成了熟悉的横条(考虑到Squirrel的配色方案还不错,我就不修改输入框颜色了),后选词字体也变成了比较习惯的大小(如果你还想进一步修改字体和大小,请按需求修改对应的设置即可)

但现在你会发现输入法使用习惯的问题依然存在。比如输入~出来的不是,输入/出来的不是,书名号也不能直接上屏,在后选词列表中按句号或逗号将是切换后选词而不是直接输入。所以我们还有一些按键设置需要修改。经过我不断地尝试,当前版本的Squirrel,对squirrel.custom.yaml中的按键设置和标点设置统统无效。所以现在只能修改默认设置文件了……

  1. 用Sublime Text 2打开~/Library/Rime目录下的default.yaml文件,找到punctuator:下的half_shape:,将/、~、<、>对应的几行改成以下样式(注意空格):
        "<" : "《"
        ">" : "》"
        "/" : "、"
        "~" : "~"
  2. 再找到key_binder:下的bindings:,将以下几行
        - { when: composing, accept: ISO_Left_Tab, send: Page_Up }
        - { when: composing, accept: Shift+Tab, send: Page_Up }
        - { when: composing, accept: Tab, send: Page_Down }
        - { when: paging, accept: minus, send: Page_Up }
        - { when: has_menu, accept: equal, send: Page_Down }
        - { when: paging, accept: comma, send: Page_Up }
        - { when: has_menu, accept: period, send: Page_Down }

    改成(注意空格):

        - { when: paging, accept: minus, send: Page_Up }
        - { when: has_menu, accept: equal, send: Page_Down }

    这样就只允许通过-和=来切换后选词了。

  3. 修改完毕后按CMD+S快捷键保存文件。然后将输入法切换到Squirrel,在右上角输入法菜单里选择Deploy(快捷键Opt+CMD+R)来部署刚才的修改。

这时你会发现快捷键和标点符号也修改好了。如果你还有其他需求需要修改的话,可以自行按照刚才的方式作进一步的修改。



通过以上这些修改,Squirrel已经比较得心应手了。现在Squirrel的唯一问题可能就是自带词库较小,缺乏第三方支持的问题了。

我一时没能找到更大的词库拿来导入,平时对拼音输入法和词库方面的了解也不多。可能很多朋友也有相同的需求,希望可以使用更多更强大的词库。

这个问题,我想佛振先生单枪匹马为大家带来了如此优秀的输入法已实属不易。所以词库方面的需求,还是期待社区网友的大力支持了。

另外,QIM输入法的作者Glider也着实令人敬佩。自2011年8月1日QIM输入法开始免费以来,相信也有更多的朋友体验到了120亿汉字语料库带来的流畅爽快感。在此对Glider表示感谢。

如果文章中有错误或疏漏的话,欢迎留言告诉我。CocoaBob感谢你的支持!

Author:admin | Categories:Geek life | Tags:

4 Comments

  1. 佛振 says:

    剛剛看到這個,很好。
    其實這裏還有一個問題——朙月拼音的詞典是繁體的,導入簡體詞條後,經過簡繁轉換後是好用的;可是如果直接輸出繁體,結果會是簡繁混雜的狀況。
    而且,由於用戶詞典內部同時存在簡繁兩種形式的詞,就會有一些冗餘,略微影響效率;現有的詞經過組合,會產生更多簡繁混雜的短語。
    所以博主的步驟,很好、只差一點點。有兩個辦法改進他:一是把詞組導入到 pinyin_simp 即「袖珍簡化字拼音」。這個方案本是用作五筆的拼音反查,詞彙量比朙月拼音更小。第二個辦法是增加一個步驟,用 OpenCC 轉換爲繁體後再導入 https://code.google.com/p/opencc/

    Mac 和 Linux 有一點好,就是這些文本處理的動作很容易寫成腳本,然後作爲一個工具打包發佈。礙於 Windows 上工具不全,我一直把此事擱置了。

    • admin says:

      多谢指点!我有空再研究研究,完善一下内容~
      文中有一个问题,发现有些在squirrel.custom.yaml里修改的设置,在deploy后会丢失或没有效果,不知何故?现在我的解决方案是直接修改default.yaml,于是每次重装或升级Squirrel后需要重新改这些设置。

  2. D says:

    一直以来,对qim的难以割舍就是为了这个中式引号 『』 。。。
    另外从法语键盘布局切换回来会有按键布局无法强制成英文布局的问题,除了最新的qim和sogou解决了之外,其他寄个输入法都碰到了这个问题。

    • admin says:

      研究了一下,在squirrel.custom.yaml文件中,有个被注释掉的设置是 us_keyboard_layout: true,删掉行首的#号并重新部署一下Squirrel即可强制US键盘布局~经测试没有问题~

Leave a Reply

Your email address will not be published. Required fields are marked *


Clickcha - The One-Click Captcha