用GPU加速拼音输入法?

看到IBM申请了用GPU加速数据库的专利,想起来自己之前还有过用GPU来加速拼音输入法的想法,当时写在了twitter上,幸亏当初有在google reader里订阅了twitter中有关sunpinyin的关键字搜索,否则还真翻不出来了呢…

Jun/16, 2011:

这几天我一直在想,能否用GPU来加速输入法,我可以把SunPinyin Syllable Graph的所有组合,发到GPU上去开足够多的线程做并行搜索,或者在做viterbi时,栅格间的状态节点转移,也可以放到GPU上来并行运算,可大幅度提高beem宽度… 个人倾向于第一种方式…

http://twitter.com/#!/yongsun/statuses/81130853278822400

当时还和熟悉GPU/OpenCL的@reminisce1989同学探讨来着,reminisce1989同学认为用GPU加速Graph算法是很困难的,不过后来reminisce1989同学好像删推了,没有原推可以refer了。

yongsun: @reminisce1989 @jjgod 既然是基础服务,肯定不能随便down掉,应该是可以想办法避免的… 我的想法主要是,现在sunpinyin的搜索规模还很小,不知道能否借助GPU来大幅提高搜索的规模,回头有问题还要向您请教了 :)

reminisce1989: @yongsun @jjgod 最后提醒一下,GPU是不支持指针的(或者说只能模拟指针)。而我不知道你的sunpinyin用的搜索是什么图算法。如果用到任何常规图论算法,不用说难用OpenCL之类的语言实现,实现了效率也提不上去,因为是非顺序化读取,而且还要考虑拷贝数据的时间。

后来,我仔细阅读了OpenGL的一些文章和书籍,觉得应该是有希望的,不过一直没有时间去做实验,先记录在这里吧…

关于触摸屏输入法误按键纠错的一点想法

现在许多用于触摸屏的输入法,都有误按键纠错的功能,例如本意是按下i,但由于键盘比较小而手指比较粗,实际按下的是o,输入法可以自动将其修正为i。Wi和Sogou的手机输入法都支持这个功能,据说Sogou的纠错比较aggressive。不过目前看来,好像还没有人考虑用户手持手机的习惯,例如我是左撇子,那么容易误按的键和右手用户是不同的,具体来说,左撇子在按屏幕右方的按键时,容易向左侧偏;还有如果我是习惯用双手拿着手机进行输入,这个容易误按的键也是有所不同的。

前两天有一则新闻,是关于重力感应器可以用来截获用户输入内容的,而且原文是说用户将手机平放在桌子上,重力感应也可以达到如此的精度。我由此想到,是否可以通过重力感应器和电子罗盘,甚至陀螺仪,来判断当前用户手持手机的方式,例如是单左/右手,还是双手等。在判断出手持的方式(或姿势)之后,调整纠错的行为,使之更符合用户的使用场景。

我的初步想法是,在单手持机时,用户按比较远的键时,手机会有一定的转动或位置移动的轨迹。左手持机和右手持机的模式,可能会不同。如果我们能总结出一些pattern,就可以做一些工作了…

不过,还不清楚是否已经有类似的工作已经开展了,或者在技术上是否真正可行。希望大家多给些意见…

open-gram词表协议改为Apache V2.0

经过社区的讨论,我们一致同意,将open-grame词表的协议改为Apache V2.0

  • 新的词库将以android-google-pinyin的词库为基础
  • 废弃之前基于cc-cedict的老词库,但是将open-gram自己发现/汇总的一些新词以Apache V2.0协议重新贡献给open-gram词表
  • libpinyin/novel-pinyin/smart-pinyin 项目lead已同意,将各自项目的词库,以Apache V2.0的协议贡献给open-gram项目
  • FIT团队同意将FIT输入法的网络热词,定期反馈给open-gram社区

非常感谢大家的支持和帮助!

SunPinyin的词库一直以来为大家所诟病,希望这次能为大家带来质量更好的词库,和更好的输入体验…

sunpinyin-2.0.3 released

在漫长的RC之后,sunpinyin社区release了2.0.3版本…

Quoted from sunpinyin.org:

2.0.3 release is containing a lot of major fix compare to last release. User should update to this release as soon as possible. It fixed many inconveniet bugs. Changes compare to 2.0.2 are described below:

Build:

  • CFLAGS, CXXFLAGS and LDFLAGS are recongnized.
  • Scons scripts now will remember the configuration arguments in configure.conf.
  • Ported to ARMEL architecture.
  • Able to build on FreeBSD.

libsunpinyin:

  • New LOGO!
  • History cache focus more on recent commits.
  • Supports --libdir and --libdatadir as configuration arguments.
  • Hunpin support. (Contributed by Hanjie Xu)
  • Fixed weird behavior of history with a single character.
  • Fixed a potential issue for candidate ranking.

ibus-sunpinyin:

  • Supports --libdir, --datadir, --execdir as configuration arguments.
  • Alt+num key as the candidate delete key for ibus-sunpinyin.
  • Able to build on IBus-1.4

xsunpinyin:

  • Synchronized the version between xsunpinyin and libsunpinyin project.
  • Fixed startup crash with empty directory.
  • Fixed position problem on multi-screen.
  • Fixed crash on exit, which caused history information lost.
  • Refact UI system
  • Added skin support
  • Fixed text overbound when pinyin are too long.
  • Fixed ignorance of ShuangPin setting.
  • Fixed weird behavior of fast switch to english. ( Issue 213 ).

scim-sunpinyin:

  • Add legacy support for scim (Thanks to liangguo)

开源拼音输入法社区的大融合(libpinyin)

上次和FIT的合作,是开源社区同商业开发的合作,这次是开源社区的合作了…

SunPinyin、Novel Pinyin和iBus-Pinyin社区决定长期合作,联手创建libpinyin子项目。libpinyin致力于为中文拼音输入法提供智能整句输入的算法核心,将试图合并novel-pinyin和sunpinyin中的智能拼音整句输入算法部分,争取实现目前SunPinyin和Novel Pinyin的功能超集。

在不久的将来,libpinyin将为ibus-pinyin和sunpinyin提供智能拼音整句输入功能的支持。

Project Wiki: http://github.com/libpinyin/libpinyin/wiki
Project SCM: http://github.com/libpinyin/libpinyin
Mailing List: http://groups.google.com/group/libpinyin

另见Novel-Pinyin的官方声明:http://alex-epico.blogspot.com/2010/10/sunpinyinnovel-pinyin.html

FIT和SunPinyin展开全面合作

FIT和SunPinyin社区决定长期合作,联手制作下一个版本的FIT中文输入法。在合作中,FIT将使用SunPinyin的核心组件作为FIT的拼音输入引擎,完全替换掉旧版的fitx拼音引擎。新的拼音引擎将应用在FIT的Mac版、iPhone版和即将推出的iPad版。

对SunPinyin社区来说,SunPinyin的Mac版本将不会作为社区的工作重心,从而将更多的将精力集中到引擎、算法本身的改进中去,并全力协同FIT整合sunpinyin的输入引擎。FIT团队也会积极参与到引擎的改进和完善中,并将会负责SunPinyin-for-Mac的用户支持工作。SunPinyin-for-Mac依然遵循CDDL+LGPLv2.1,合作并不会妨碍任何有兴趣改进/完善它的朋友,贡献自己的努力。

另见FIT官方网站的声明

FAQ:

Q0. 为什么会有此次合作,这次合作有得到所有sunpinyin贡献者的认可吗?

应该说FIT和SunPinyin-mac是mac平台上使用最广泛的free的拼音输入法,FIT的开发团队长于前端功能以及用户体验上的开发,sunpinyin社区长于输入引擎的算法。两个团体的合作,会融合两者的长处,打造更好的mac平台以及iOS平台上的拼音输入法。

关于合作的事宜,sunpinyin社区主要的、活跃的contributors,有经过详细的讨论,大家都充分表达了各自的意见;多数contributor都支持这一合作。

Q1. sunpinyin-mac被放弃了么?

我更愿意将其解读为,FIT放弃了其自身的拼音引擎,转而采用sunpinyin的输入引擎;同时FIT团队也会积极参与到引擎的改进和完善的工作中,以及支持原有的sunpinyin-mac用户。sunpinyin的社区力量相比来说更加壮大了。sunpinyin-mac依然遵循CDDL+LGPLv2.1,合作并不会妨碍任何有兴趣改进/完善它的朋友,贡献自己的努力。

Q2. sunpinyin和fit的合作是因为收到Goopy的压力么?

fit和sunpinyin的合作意向,在Goopy“泄露”之前就已经达成了。sunpinyin的主要贡献者,基本上都是纯粹为了爱好和兴趣,我们的目标一直是,做最好的、开源的拼音输入法;Goopy的压力只会成为我们的动力,激励我们继续努力 :)

发布SunPinyin-MacOS-2.0.2.1008 (10.5/10.6)

本次更新的主要内容包括:

  1. 加入了关闭/打开内模糊切分的选项
  2. 加入了使用backspace取消用户选择的选项
  3. 升级系统词库和语言模型至open-gram 0.1.22
  4. 解决了Sparkle升级时无法打开安装包的问题
  5. 加入了小鹤双拼方案的支持
  6. bugfixes若干

功能方面和上次在twitter上放出的RC版本,没有什么不同,主要是将数据文件更新至了open-gram 0.1.22。虽然Sparkle升级时无法打开安装包的问题已经解决,但是得等到下一次更新的时候才能起作用;所以,烦请大家不要通过自动升级来安装,而是直接下载pkg包来安装 …

欢迎大家下载试用

导入sogou输入法的细胞词库

首先请下载这个导入工具,解压缩到某个目录中。从pinyin.sogou.com下载细胞词库(scel格式),保存在某个目录中。然后在terminal中执行下面的操作:

$ python import_sogou_celldict.py PATH_TO_CELL_DICT.scel

感谢中文社区其他开发者和项目reverse engineering的工作,

发布 SunPinyin-MacOS-2.0.2 (10.5/10.6)

本次更新主要是对2.0.2-beta-1进行了一些修正,加入了“声母简写(z/c/s->zh/ch/sh)”的选项,也加入了全角空格的支持(尚未支持全角小写字母)。

从2.0.2开始,SunPinyin 2 for Mac 全面采用了open-gram的词库和语言模型,因此会导致您的history cache无效,您可以在执行完安装程序之后,手工删除现有的history cache文件($ rm ~/Library/Application\ Support/SunPinyin/history)。另外一个重大的更改是,扩大了wordID的范围,使系统词库+用户词库的理论容量可以达到2^24,您现在可以放心导入比较大的个人词库了。不过这也导致了和2.0/2.0.1的词库格式不相兼容。

正是由于上面两个原因,2.0.2的安装包中,直接包括了lm_sc.t3g.le和pydict_sc.bin.le的二进制数据文件,大家可以直接安装就好。另外,sunpinyin_importer中的系统词表也更新为open-gram的词表了。

对于power的mac用户来说,我们已经解决了大端数据的生成问题,请在安装时下载相应的数据文件 ... 另外,非常抱歉的是,sparkle自动升级的问题还没有来得及解决,请大家不要通过自动升级来安装,而是直接下载pkg包来安装 ...

欢迎大家下载试用 ...