词类标注(Part-of-speech Tagging: POS)是汉语句法分析的前提么?
没有这回事。
如果说为了模块化开发的方便,中文处理系统先行词类标注,再行句法分析,这种类似于多数英语分析器的架构从工程上看确实有一定的道理,但是词类标注并非句法分析的前提。
点破这一迷思的最直接的例证就是完全可以设计一个跳过POS模块的中文句法分析系统,事实上笔者目前研发的中文系统就跳过了这个环节。
有问:没有词类,怎么可能施行句法分析?
回答是:谁说没有词类?词典里给出的任何类别标注都是一种“词类”。的确,没有这些“词典的类别”信息,句法分析就没有抽象度,就难以编写规则来parse千变万化的语句。
POS 模块的本义在于词类消歧,即根据上下文的条件标注唯一的一个语法词类,譬如把同一个“学习”在不同的上下文中分别标注为名词或动词。前面说过,这样做有工程上的便利,因为如果词类标注是准确的话,后续的句法分析规则就可以简化,是动词就走动词的规则,是名词就走名词的规则。但这只是问题的一个方面。
问题的另一面是,汉语中的词类歧义特别严重(语法学界甚至曾经有云:词无定类,入句而后定),不但很多词都可以是名词或动词,而且动词和形容词的界限也很模糊。三大类实词在汉语中如此界限不分明,这曾经被认为是中文信息处理寸步难行的最大障碍。歧义如此严重的语言如果实行两步走的架构,有可能陷入错误放大(error propagation)的怪圈,即,词类区分的错误进一步造成句法分析的灾难。这是因为有些词类区分的条件在局限于 local context 的 POS阶段尚未到位,POS 模块过早地标注了错误的词类。
根据 keep ambiguity untouched 的经验法则,遵循 adaptive development 的基本原则,跳过 POS 的环节,让句法分析直接建立在词典信息的基础之上,是解决上述矛盾的一个有效方法。具体来说就是,只利用词典里面的静态类别信息来做分析,无须倚赖专有的POS模块先行消歧。如果一个词既可以做名词,又可以做动词,那就把两个类别同时标注到这个词上。编写句法规则的时候,对于兼类词(譬如动名兼类词 “学习”)与单纯词(譬如纯名词“桌子”)根据条件的宽松分别对待即可。
需要说明的是,笔者并不反对先POS后Parser的中文处理策略,只是指出POS并非Parser的先决条件,还有一种句法直接建立在词典之上的一步走的策略。顺着这个思路,一步半的策略也许更好。所谓一步半,就是做一个简单的 POS 模块(算是半步)把词类区分中比较大路容易的现象标注好,并不求对所有词类施行标注。
将您的博文链接贴到微博上,以下是相关的评论:
张俊林say:我还是赞成先词性标注再往后走,稳扎稳打,再说现在POS基本已经是一个被解决掉的问题了 (12月29日 13:49)
张开旭同学:非常赞同keep ambiguity untouched。有歧义的时候不要硬猜,扔给后面的模型处理,这个对分词适用(扔给词性标注),对词性标注也适用(再扔给句法分析)。更一般的原则是:不到非要让你做最后唯一决断的时候,保留足够多的备胎。 (12月29日 14:29)
[回复]
Michael Collins 的博士论文中提供的策略是,将POS_Tagging 与 parsing 融合在一个统计模型里,一起做了。毕竟,Tag信息,现在也流行通过统计的方法得到。
[回复]