使用赵海博士的6 tags + 6 templates法,对bakeoff2005公开的语料进行实验。用python写了个简单的转换脚本,将UTF-8编码的训练语料转换为CRF++支持的格式。MSR的语料库转换之后是24M,训练模型花了大概26个小时,得到的模型为25M,对MSR的测试数据F-score可以达到96%(python的评估脚本),对PKU的测试数据只有82%多。PKU的语料库转换之后是11M,训练模型花了近13个小时,得到的模型有14M,对PKU的测试数据F-score有92%多,对MSR的测试数据也只有82%左右。看来MSR和PKU训练语料的分词风格有较大的差异,导致交叉测试的分数比较低。

另外,大概是C++的STL线程安全有问题,在Linux、Solaris和Mac OS上使用多线程都SEGFAULT了,所以都是单线程训练的。不敢想象如果用数百兆的语料,会花多长时间、用多少内存...

下面是特征模板的定义:

# Unigram
U00:%x[-1,0]
U01:%x[0,0]
U02:%x[1,0]
U03:%x[-1,0]/%x[0,0]
U04:%x[0,0]/%x[1,0]
U05:%x[-1,0]/%x[1,0]
# Bigram
B
评论:

GNU C 有些版本的 STL 在有些系统上多线程是有问题的(map,heap等),如果编译 GNU C 使用 --with-thread=single 那就更不用谈线程安全了。
Sometimes, I would rather use other more than C++ STL.
At least, I knew what the application doing and problems at. :)

发表于 A.L. 在 2008年03月20日, 10:51 下午 CST #

Hi,A.L.,除了Solaris,我在其他系统上使用的都是比较新的libstdc++,以及g++编译器 :(

发表于 Yong Sun 在 2008年03月20日, 11:56 下午 CST #

楼主治学很严谨,学习中...

发表于 gavin.tu 在 2008年03月25日, 09:17 上午 CST #

发表一条评论:
该日志评论功能被禁用了。

This blog copyright 2009 by yongsun