Tag Archives

2 Articles

Sunpinyin加速脚本 – 内存缓存词库

UPDATE2:感谢“据说要有”的建议,已修改脚本。

UPDATE1:脚本在异常退出(比如收到KILL信号,系统断电等)后再次运行时会有严重的BUG,导致用户词库丢失。现已修正,强烈推荐各位使用者更新。如果已经有过异常退出的用户,请退出脚本后至~/.sunpinyin/目录下检查(ls -l),若userdict为符号链接,请删除之,sunpinyin将重建新的用户词库。对因此造成的数据损失表示抱歉。

之前在一篇文章里,我提到了在Ubuntu下使用fcitx + sunpinyin配合hubertstar的大词库实现媲美搜狗的流畅输入,但是仍然有一个大问题——当词库过大的时候输入中会出现停顿现象,严重影响用户体验(因此我当时也只推荐使用small版词库)。

这是因为fcitx和sunpinyin的词库都是使用SQLITE,在输入时需要反复查询,由于词库的特殊性(前后两个查询的词经常离得很远),SQLITE的缓存机制很难起效,因而只能反复读硬盘,导致速度很慢。

不过,在大宝的启发下,我参考了Ubuntu中文论坛里hubertstar的帖子,以及大宝的博客,我写了一个供Ubuntu使用的sunpinyin加速脚本,效果非常不错,拿上来和大家分享。

Read More

Fcitx Sunpinyin – Ubuntu下享受输入的快感

在Ubuntu下的中文输入一直是一件很蛋疼的事情……原先使用多年的scim输入平台已经腐朽不堪,现在默认的ibus虽然是一个优秀的平台,但是缺乏优秀的输入法——常用的ibus pinyin的算法实在是令人无语,只好通过使用更大的词库(100MB+的搜狗词库)来弥补不足,不过效果也只是一般般,而且由于词库变大了许多,响应速度也变慢了。我后来知道了一个基于统计语言模型的优秀输入法——sunpinyin,于是尝试安装了ibus sunpinyin,果然组句能力非常强大,但词库实在是太小了,弄了一个大词库后发现性能又一次出现了大幅度的下降……

性能低下的主要原因,是因为他们都是运行于一个“输入平台”ibus之上的——越复杂的系统架构会带来越低下的性能,ibus是一个十分灵活的、能够安装各种语言的输入法的平台,十分臃肿,其性能很难好到哪里去。我们需要的,仅仅只是一个简单的——拼音输入法!其实早就有一般人想要这么干了,于是他们写了一个叫做fcitx的轻巧、纯粹的输入法。

我第一次接触fcitx还是v3时代,最大的感受就是——真的是太轻了,甚至连gtk都不依赖,而且只有一个用GBK编码的中文配置文件(蛋疼)……速度果然很快,算法也还行。不过在我试图导入大词库后,发现了一个致命的问题——fcitx会把整个词库读到内存里……最终,fcitx 3.x难用的配置方式、较差的稳定性、难看的界面以及表现平平的算法令我抛弃了它……

Read More