为SunPinyin for Mac打包

费了九牛二虎之力,终于给SunPinyin打好了包。一开始用packagemaker(在/Developer/Applications/Utilities目录下)打好包之后,就是无法安装到系统卷上的指定目录上(但是安装到非系统卷是成功的)。后来google了半天,发现要disable components里面的"Allow Relocation"选项,否则只有本机的其他用户(或者其他机器)才能安装到指定路径。另外好像Xcode 3.0的packagemaker有一个bug,在我disable这个选项并保存之后,重新打开发现又enable了。

大家可以从这里下载安装包(仅适用于Intel平台的Leopard系统)。在安装完成之后,请到http://src.opensolaris.org/.../sunpinyin/ime下载lm_sc.t3g.i386以及pydict_sc.bin.i386,将'.i386'的后缀去掉,并拷贝到/Library/Input Methods/SunPinyin.app/Contents/Resources目录下。

The initial porting of SunPinyin on Mac

这两三天,终于寻得一段比较整块儿的时间,将我一个一直以来的规划付诸实施,即把SunPinyin移植到Mac OS X Leopard平台上。由于刚开始接触Objective-C/C++、Cocoa以及Xcode,刚开始比较困难。参考了Apple在08年3月刚发布的NumberInput输入法示例,以及Huajun Feng(FIT的作者)友情提供的“输入法厨房@2006”的一篇讲稿(尽管许多内容已经obsoleted了),边学边动手。

上图就是初步的结果,刚刚可以work,还过于简陋。下一步就是完善和解决编辑时的一些问题,加入一个自定义的候选窗口,然后就基本可用了。希望有兴趣的同学加入啊,呵呵...

代码可以在http://src.opensolaris.org/.../sunpinyin/ime/wrapper/macos获得。

Python binding for SunPinyin's SLM

We just added the python binding for SunPinyin' SLM (statistical language model), pyslm, and several alternative utilities written by python. To build the extension, you need download/install cython. To build the pyslm extension on Solaris with SunStudio, you may need the following settings (seems that the distutils module on Solaris has some problems to set the compiler and flags properly):

$ export CC=/opt/SUNWspro/bin/CC
$ export LDFLAGS="-lCrun"

I referred to the tutorial "Wrapping C++ Classes in Pyrex/Cython" to write the extension. This article implicitly mentioned how to deal the reference parameter (I also figured it out by myself :) ), e.g., if we have a new member function for Rectangle:

void getPosition (int &x, int &y) 

Then we could declare this member function in "pyx" file as:

ctypedef struct c_Rectangle "Rectangle":
    int x0, y0, x1, y1
    ... ...
    void getPosition (int x, int y)

This trick will cheat cython/pyrex to populate the arguments properly. This also works for the C-structure that has bit-fields.

实验maxent分词

使用张乐博士maxent工具包,应用赵海博士的6 tags + 3字窗口法,对bakeoff2005公开的语料进行实验。用python写了个简单的转换脚本,将CRF++的训练语料转换为maxent支持的格式。训练模型的时间比CRF要少了许多。对MSR的语料和测试集,得到预测的准确度为96.4357%。与Yandong使用4 tags + 3字窗口的结果接近(96.2225%)。400多万个样本,其中只出现一次、被cut掉的event居然有240多万个。不知道是不是我使用的输入格式有问题?


S U00-_B U01-“ U02-人 U03-_B/“ U04-“/人 U05-_B/人 E
B U00-“ U01-人 U02-们 U03-“/人 U04-人/们 U05-“/们 S
E U00-人 U01-们 U02-常 U03-人/们 U04-们/常 U05-人/常 B
S U00-们 U01-常 U02-说 U03-们/常 U04-常/说 U05-们/说 E
S U00-常 U01-说 U02-生 U03-常/说 U04-说/生 U05-常/生 S
B U00-说 U01-生 U02-活 U03-说/生 U04-生/活 U05-说/活 S
E U00-生 U01-活 U02-是 U03-生/活 U04-活/是 U05-生/是 B
S U00-活 U01-是 U02-一 U03-活/是 U04-是/一 U05-活/一 E
S U00-是 U01-一 U02-部 U03-是/一 U04-一/部 U05-是/部 S
S U00-一 U01-部 U02-教 U03-一/部 U04-部/教 U05-一/教 S
B U00-部 U01-教 U02-科 U03-部/教 U04-教/科 U05-部/科 S
B2 U00-教 U01-科 U02-书 U03-教/科 U04-科/书 U05-教/书 B
E U00-科 U01-书 U02-, U03-科/书 U04-书/, U05-科/,B2
... ...

Time Capsule 的初体验

我托同学买的Time Capsule已经入手了,我是晚上10点多去他家取的货,回到家已经快12点了。迫不及待地设置好。乳白色的外观挺漂亮,“占地”面积比我想象的要大些(较mini大了两圈儿)。802.11n果然不是盖的,速度很快,七八百兆的东西,5、6分钟就拷过去了。不过在remote disk上播放视频还是会出现跳帧的现象,播放音乐文件则不成问题。另外试了试SMB共享,也没问题。不过好像尚不支持NFS,并且在remote disk上创建的文件,权限都是777且无法更改。另外试了试用Time Machine备份,可以选择排除备份的目录或卷。

Anyway,我现在有1T的容量,不用经常刻盘备份了,呵呵...

P.S., 要是Sun能出一个面向家庭和民用的、支持Wifi/ZFS/NFS的Mini-BlackBox,那就太爽了,肯定热卖...