areal's profileiamcrfBlogLists Tools Help

Blog


    October 20

    对于bakeoff-3的简单综述-3(完)

    原因在于,我们引入了复杂的标注集来标注字在词中的位置。说来话长,理论上来说,切分问题是一个二值分类问题,切还是不切(哈姆雷特:To be, or not to be: that is the question,:))。但是第一个关于字标注的工作,
    \bibitem{Xue:2003a}
    Nianwen Xue. 2003. Chinese Word Segmentation as Character Tagging. {\em Computational Linguistics and Chinese Language Processing}, Vol. 8(1): 29-48.

    并不是将其作为二值标注问题来处理的,而是作为4值标注问题。具体来说,就是将字在一个词中间的位置分为4类:词首B,词尾E,词中M,单字词S。作为二值标注问题,可能最开始由Peng Fuchun在coling-04引入。为什么会出现这样一种“退步”?原因在于计算负载上,Xue用的是最大熵(MaxEnt),而Peng用的CRFs。显然的,CRF的计算负载一般要比MaxEnt高一个数量级,而且,CRF上用4个标注的学习代价比2个要高一倍不止。实际上,后续的CRF模型,只要是用于分词的,能够不用2个词位标注的学习非常非常罕见。

    但是,但是,我们工作的要点就是要引入更多的词位标注来进行更为精确的词位学习。具体来说,我们进一步引入了2个额外的词位,B2,B3,分别代表多字词中第二个和第三个字的非词尾的位置。这样子,我们在CRFs中相当于前所未有的用到了6个词位标注。与此同时,我们大大降低了特征模版的数量。

    下面对比三个特征模版集的不同,分别针对2,4,6标注集。我们分别用T, X, Z表示Tsai et al. 2006,Xue:2003/Low:2005, Zhao:2006用到的针对这三个标注集的特征模版:
    ---------------------------------------------------------------------------------
      C-2, C-1, C0, C1, C2, C-2C-1, C-1C0, C0C1, C1C2, C-1C1, C-2C0, C-3C-1
    T:   x    x    x   x        x       x     x             x     x      x
    X:   x    x    x   x   x    x       x     x      x      x
    Z:        x    x   x                x     x             x
    ---------------------------------------------------------------------------------
    可以看到,Tsai, Xue/Low都要用到10个特征模版,而Zhao只需要6个。从特征模版来看,Tsai的模版涉及到5个字的上下文窗口:C-3到C1, Xue/Low涉及到5个字的上下文窗口:C-2到C2,Zhao涉及到三个字的上下文窗口:C-1到C1。这似乎显示Zhao的模版学习的上下文窗口宽度不足。但是,如果我们观察,不重复的使用词位标注集标注一个尽可能长的词
    2-tag, 两字词,BE
    4-tag,三字词,BME
    6-tag,五字词,BB2B3ME
    也就是说,6-tag通过标注集而不是模版集足以保证学习5字上下文窗口。

    如果把我们的目标归结为寻求一种性能最好的n-gram特征和标注集搭配。我们将会发现6-tag+6-ngram会是最佳的。为此,我在同样的CRF模型上用Tsai的2-tag标注和他们的n-gram特征模版(实际上,我发现在所有用于2标注集的特征模版中,他们的这组是性能最好的),Xue/Low的4-tag标注和他们的n-gram特征模版,进行了性能评估。下面是在Bakeoff-3数据上的F-score结果比较

                 AS    CityU    CTB    MSRA
    2-tag+Tsai   .946   .962    .924   .946
    4-tag+Xue    .952   .967    .930   .955
    6-tag+Zhao   .954   .969    .932   .961

    那么是什么阻止我们使用更多的标注集呢,可能是训练计算的时间太长。

    下面是训练时间(单位是分)的比价,所有的数据都在一致的计算环境中获得
                 AS    CityU    CTB    MSRA
    2-tag+Tsai   112     52      16     35
    4-tag+Xue    206     79      28     73
    6-tag+Zhao   402    146      47     117
    可以看到,6-tag比4-tag基本上要多花一倍的训练时间,比2-tag要多花2-3倍的训练时间。

    再看训练内存使用(单位Giga bytes)

                 AS    CityU    CTB    MSRA
    2-tag+Tsai   5.4     2.4     0.9    1.8
    4-tag+Xue    6.6     2.8     1.1    2.2
    6-tag+Zhao   6.4     2.7     1.0    2.1

    注意到,6-tag用的内存甚至比4-tag系统还要少!
    所以,去买一台快点的计算机跑分词吧,因为我们不需要一个复杂的系统来做分词。简单的6-tag+6-ngram就够了。

    最后,我说一下字符类型特征和开放测试的问题。

    所谓字符类型特征,就是标记字符是正常的汉字,还是拉丁字母,阿拉伯数字,还是标点符号的特征。Bakeoff-3明确禁止在封闭测试中使用这一特征。不幸的是,很多人,包括我,没有注意到网页上的这一条款。
    下面是bakeoff-3在分词封闭测试中至少获得前三名的参赛者及其成绩(F-score)列表,总共有6个参赛者。
    ------------------------------------------
    Participant   AS    CityU   CTB    MSRA
    (Site ID)
    ------------------------------------------
    Zhu(1)       0.944  0.968   0.927  0.956
    Carpenter(9) 0.943  0.961   0.907  0.957
    Tsai(15)     0.957  0.972   /      0.955
    Zhao(20)     0.958  0.971   0.933  /
    Zhang(26)    0.949  0.965   0.926  0.957
    Wang(32)     0.953  0.970   0.930  0.963
    ------------------------------------------
    Best closed  0.958  0.972   0.933  0.963
    ------------------------------------------
    其中,Zhu, Tsai, Zhao用了字符类型特征,Zhu和Zhao是直接从预先指定的字符类型列表中构造这一特征。Tsai用了一个别出心裁的方法,通过几条预定义的目标函数进行聚类来获得字符类型列表。当然,他们重新“发现”了其实事先就知道的不同的字符类型。也许,他们的这种做法才是最没有犯规的。但是,这种做法的实用价值是值得商榷的,是否有为了评估而评估之嫌?
    关于字符类型特征的作用,我做过事后的经验性评估。我的结论是:字符类型特征在某型情形的确是发挥作用的,也就是对于性能的提升的确有帮助,但是,这种性能增进强烈的依赖于两个方面,第一个是所学习的文本的全半角是否统一,如果某些字母,数字,标点是半角,某些是全角。那么,字符类型特征会有较大的改进作用。反之,如果训练和测试语料中的全半角是基本一致的,也就是基本都是半角或者都是全角,那么,该特征将不起什么作用。第二个因素是训练语料的规模,不管全半角是否一致,该特征在大规模训练语料下对于性能改进微乎其微,相反,对于小规模的训练语料的性能改进较为可观。简而言之,字符类型特征不会导致性能的实质性增长。从这个角度来说,规定在封闭测试中禁止或者使用这一特征都讲得通。
    这里顺便说一下,Wang(32)在MSRA上封闭测试的结果,他们使用了语言模型概率和MaxEnt输出联合解码的方法。他们的方法依赖于一个分配这两种输出的权重参数。不幸的是,根据他们的报告,在微软语料上的这一参数调整来自Bakeoff-2005的微软语料。而Bakeoff-2006微软训练语料只是2005的相应语料的一个子集(正是我建议黄老师取一半的2005语料提交为2006语料的),这样算不算引入了外部语言资源的信息?也许这个可以解释他们的这个成绩为什么比第二名高那么多吧

    关于开放测试
    目前为止,我只谈了封闭测试。为什么我不愿意将开放测试作为另外一个重点。原因就是在开放测试中的方法论其实相当的贫乏和单调,尽管Bakeoff的开放测试允许一切额外的语言资料和外部知识。
    两种显而易见的资源已经被往届的Bakeoff参赛者集成到分词学习中了。一个是词典,一个是额外的切分语料。这一工作依然由Low and Ng在Bakeoff-2005完成。Bakeoff-3(2006)有两个值得一提的工作,一个是引入了第三种开放资源,词性标注(POS tagging)结果。这一工作在,
    \bibitem{Wang and Shi:2006}
    Mengqiu Wang and Yanxin Shi, Using Part-of-Speech Reranking to Improve Chinese Word Segmentation, SIGHAN-5.

    另外一个试集成方法的改进。这个依然是我们的工作,我们建议直接引入其他的切分器的输出作为特征。我们称之为辅助切分器方法。这样,词典,附加语料都可以统一为辅助切分器,前者可以用最大匹配辅助切分器,后者可以用在附加语料上训练出来的切分器。这样做的优势,除了方法统一外,还有助于应用到CRF学习上,因为额外语料方法会大大增加训练时间。这对CRF训练来说是一个灾难。额外的,我们还证明,辅助的命名实体识别输出也是对分词性能改进有帮助的。

    分词开放测试所追求的高性能的实质是什么?我理解为,我们需要更多的异质的切分语料。本质上来说,机器学习工具在记忆所训练的语料,它只能在和训练语料中出现过的相似度很高的句子上完成正确切分。由于机器学习技术的进步实在有限,其推广能力并不出众。所以,只要能集成进去如果多的额外语料,不管用什么方法。能够让机器学习工具记住曾有这样的句子,曾经有这样的切分,那么我们就能获得足够高的性能。

    关于词典,我要说,额外的词典或许是起正面作用的。我一直认为,不在于是否使用词典,而在于使用什么样的词典。或者说,我们要用那些“好”的词典。词典并非越大越好,也不是所有的词典能够改进分词性能。有很多这样的负面的例子,很遗憾,我们不能发表这些结果,因为所有的出版出来的学术文章都只能是正面的,积极的结果(或许也是作者选择或投审稿人所好的结果)。关于陷阱,误区的文章实在太难发了。
    (完)