数学之美:谈谈中文分词
西方语言中词语有明显的分隔符,而对于中日韩等语言,词与词之间没有明确分界。而语言模型又是建立在词的基础上的,这就导致分词非常有必要。
中文分词最早方法是“查字典”,就是从左到右根据字典查询,遇到字典有的词就标出来,遇到不认识的就分成单个词。但这种方法存在一定的缺陷,如“发展中国家”,根据查字典将会分成“发展”、“中国”、“家”。明显不对。
后来有了基于统计模型的分词方法。假设某个句子可以有以下三种分词方式:
基于统计模型的分词方法就是使用前面介绍到的语言模型,找出最有可能的分词方式,即概率最大。
这里有个问题是如果穷举所有可能分词方式并计算可能性,计算量极其大。因此可将其看成动态规划问题,利用维特比算法找出最佳分词。
分词一致性
即使是不同的人对同一个句子进行分词也有可能产生不一样的结果。在将统计语言模型应用于分词以前,分词的概率通常很低,可提升空间非常大。不同人的分词结果虽然不同,但是好的分词器和坏的分词器还是可以用人工切分结果作比较。但在使用统计语言模型后,模型间的差异性反而比不同人之间差异小。因此很难使用与人工分词比较结果作为衡量标准。
分词的不一致性存在错误和颗粒度不同两种。错误又分成两种:“越界错误”,把“清华大学生”,分成“清华大学”-“生”;“覆盖型错误”,把“贾里尼克”分成四个字。
词的颗粒度和层次
人工分词产生差异的原因主要在于人们对于词的颗粒度认识不同。如“清华大学”,有些人认为是一个整体,而有些人认为“清华”用于修饰“大学”。很难讲哪种颗粒性更好。最好办法就是让分词器支持不同层次的分词。有种办法:
词的颗粒度不一致性,人工分词的不一致性大多属于此类。