之前的札记中,提到了使用统计语言模型进行自然语言的处理,而这些语言模型是建立在词的基础上,因为词是表达语义的最小单位。西方的拼音语言,词之间有明确的分界符,统计和使用语言模型处理相对简单。而对于汉语等东方语言,词之间没有明确的分界符,这就需要先对句子进行中文分词。
中文分词最简单的方式是查字典,这种方式最早由北京航空航天大学的梁南元教授提出。简单的来说,就是把一个句子从左到右扫描一遍,遇到字典里有的词就标识出来,遇到复合词(比如“上海大学”)就找最长的词匹配, 遇到不认识的字串就分割成单字词。
这个最简单的分词方法可以解决一部分复杂性不高的分词问题,对于稍微复杂一点的问题就无无能无力了。20世纪80年代,哈尔滨工业大学的王晓龙博士把查字典的方法理论化,发展成最少分词的分词理论,即一句话应该分成数量最少的词串。这种方法明显的不足是当遇到有二义性(即双重意义)的分割时就无能为力了。
这种语言中的歧义性随着语言的发展,困扰了学者们上千年。在中国古代,断句和说文解字从根本上讲,就是消除歧义性。分词的二义性是语言歧义性的一部分。1990年前后,当时在清华大学电子工程系工作的郭进博士用统计语言模型成功解决了分词二义性问题,将汉语分词的错误率降低了一个数量级。郭进是中国大陆自觉地用统计语言模型方法进行自然语言处理的第一人,并且获得了成功。
在郭进博士之后,海内外不少学者利用统计的方法,进一步完善了中文分词。其中值得一提的是清华大学孙茂松教授和香港科技大学吴德凯教授的工作。孙茂松教授的贡献主要在于解决没有词典的情况下的分词问题,而吴德凯教授是较早将中文分词方法用于英文词组的分割,并且将英文词组和中文词在机器翻译时对应起来。
一般来讲,根据不同的应用,汉语分词的颗粒度大小应该不同。比如,在机器翻译中,颗粒度应该大一些,而在语音识别中,颗粒度则相对小一些。因此,不同的应用应该有不同的分词系统。Google早期直接使用Basis Technology公司的通用分词器,分词结果没有针对搜索进行优化。后来Google的葛显平博士和朱安博士,专门为搜索设计和实现了自己的分词系统,以适应搜索特殊的需求。
最后,需要指出的是任何方法都有它的局限性,虽然利用统计语言模型进行分词,可以取得比人工更好的结果,但是也不可能做到完全准确。因为统计语言模型很大程度上是依照“大众的想法”,或者“多数句子的用法”,而在特定情况下可能是错误。另外,有些人为创造出“两难”的句子,比如对联“此地安能居住,其人好不悲伤”,使用什么方法也无法消除二义性。但在真实文本中,这种情况几乎不会发生。