areal's profileiamcrfBlogLists Tools Help

Blog


    December 31

    2007年总结

    从到微软开始,差不多连续作了两年分词(虽然工程上作了些其他的,但是没有发表)。还好,目前的系统结果暂时还可以,但是出版纪录依然没有什么进展。总结起来,今年的工作成果很简单。
    1,系统
    在bakeoff-4上继续努力了一把。本来着力于NER的,分词的参与只是想证明去年bakeoff-3的一些瑕疵无关大局。结果,分词系统上的结果反而好于花了很大力气的NER。至少是刚买的那台服务器在计算上花了很大力气,而分词的结果反而完全是在我工作的那台笔记本上上随随便便跑出来的。想起最紧张的时候是我在澳大利亚的时候,不知道服务器上跑得怎么样了,而训练截止时间马上就到。最后的结果,其实让我非常郁闷,NER上面全是第二名,就连一个没有意义的MSRA-open NER上面也是。总结原因,对于closed test,我选择了一种太耗计算资源的方法,但是我拥有的服务器的计算能力太薄弱(其实我还有一个能带来更强的结果的系统,遗憾的是在规定的3天内我的计算服务器是肯定跑不出来一个结果的),对于open test,我的语言学资源又太少。真的很怀念在微软要什么有什么的日子。
    2,论文
    数量来说,年内发了3.5篇的会议,1.5篇的杂志,其实另外有3篇会议,1篇杂志属于今年的成果,但是要等到明年才能出来。好在在一年的期限内,接收了一个“国际杂志的”sci,多少可以跟系里面汇报的时候说得过去了。
    质量来说,如上所述,没有实质性进展,只不过根据我的计划,在从机器学习方向重新转回nlp方向后,1年半内基本上已经把acl级别以下的国际(亚太)国内会议都跑了个遍了。由于刚刚在实验结果上遇到重大挫折,今年投acl的计划可能又要泡汤了。
    技术内容来说,分词的监督,非监督,监督+非监督(差不多相当于半监督学习)全部做了一遍。NER,POS tagging的工作都开了个头。
    3,展望
    考虑转型作smt,之前先跑跑语义角色标引和parsing。分词还是有作头的,但是和去年这个时候一样,暂时想不到一个好的方向可以立即动手做。
    结构化机器学习方法的改进。现在看来,虽然作nlp很有趣,但是靠它1年发2篇international sci journal是很难的(除非有1年中2篇CL的人品),所以只能靠机器学习的技术内容来帮忙满足系里的指标了。
    December 15

    closed test, open test以及实用的分词系统

    很多自然语言处理的评测(如bakeoff, conll等)都有closed test, open test的区别。前者指限于训练语料的语言知识学习,后者则没有这个限制。如何理解它们之间的差别以及实用系统之间的关系呢?兹分析如下。对于计算语言学研究来说,closed test提供了一个最低限度的基准学习。我认为有助于在一个较为一致的环境下比较学习技术的性能,想比较而言,open test所采用的技术五花八门,在很多情形其实不具有可比性。通常来说,好的open test都是在closed test的基础上发展起来的,一个较高性能的closed test系统通常也有助于建立更高性能的open test系统。另外一个角度来说,open test系统所给出的性能往往高于closed test系统,它要求在给出的训练语料之外挖掘更多的语言学共性的东西,有助于在简单的机器学习技术之外探索人类语言的本质。而closed test在很多情形下,可能仅仅是纯粹的机器学习技术的竞争。正是由于所面向的学习对象的差异和丰富程度不同,open test系统往往要求更多的计算资源,包括空间占用以及训练解码时间都会高于closed test系统。
     
    如果要说一个实用的系统和closed test, open test的关系,我觉得差不多可以理解为closed test,open test代表了两种满足实用化要求的极端情形。以分词系统为例。实用的分词系统其实需要考虑三个要素:性能,分词速度,空间占用(包括内存使用和磁盘存储)。无疑,open test 系统能够给出最高的分词性能,但是它就是我们要求的系统吗,不一定,因为open test系统的分词速度和空间占用有可能远远超过closed test系统,也远远超过用户的期望。因此,使用的系统往往不是我们能够在研究中获得的最高性能的系统,而是在上述三个要素最佳折衷的产物。以微软的某个分词系统开发为例,研究中所获得最佳性能的系统是基于trigram的,但是最后产品选择了较低性能的bigram,原因很简单,系统对于速度和内存的使用不允许使用trigram。
     
    可以大致的总结出这样一个研发路径图:
    1.开发closed 系统,从而构造最佳的基线系统,在这个阶段,各种基本方法是可以有效的对比的
    2.在 closed 系统上增加新的要素构造最高性能的open 系统
    3.回退,消除open系统中那些最没有性能/效益比的部分来获得期望的折衷系统,构造最终的实用系统。