「统计语言模型」是建立在词的基础上,因为词是表达语义的最小单位。对于西方语言来讲,词之间有明确的分隔符(识别手写体时分隔符不明显,也需要进行分词),而对于一些亚洲语言,词之间没有明确分隔符。因此,要做自然语言处理,需要先对句子进行分词。
中文分词历史
最容易想到的分词方法,也是最简单的分词方法,就是查字典。这种方法最早由北京航天航空大学的梁南元教授提出。「查字典」方法其实就是把句子从左向右扫码一遍,遇到字典里有的词就标识出来;遇到复合词(如 “上海大学”)就找最长的词匹配;遇到不认识的字串就分割成单字词。
这种最简单的方法可以解决七八成以上的分词问题。但是,它毕竟太简单,遇到复杂一点的问题就无能为力了。20 世纪 80 年代,哈尔滨工业大学的王晓龙博士将查字典的方法理论化,发展成最少词数的分词理论,即一句话应该分成数量最少的词串。这种方法明显的不足是遇到有二义性的分割时就无能为力了。比如 “上海大学城书店” 的正确分词应该是 “上海 - 大学城 - 书店”,而不是 “上海大学 - 城 - 书店”。
基于语言统计模型分词
1990 年前后,清华大学郭进博士用统计语言模型成功解决了分词二义性的问题,将汉语分词的错误率降低一个数量级,上面举的二义性例子用统计语言模型都可以解决。
利用统计语言模型分词的方法,可以用数学公式进行概括。假定一个句子 S 有几种分词方法,为了简单起见,假定有一下三种: A1, A2,A3,...,Ak
B1,B2,B3,...,Bm
C1,C2,C3,...,Cn
。其中,A1,A2,B1,B2,C1,C2
等都是汉语的词,上述各种分词结果可能产生不同数量的词串,所以用 k,m,n 三个下标表示分词结果词的数目。那么最好的一种分词方法应该保证分词后这个句子出现的概率最大。也就是说,如果 A1, A2,A3,...,Ak
是最好的分词方法,那么其概率满足:
P(A1, A2,A3,...,Ak) > P(B1,B2,B3,...,Bm)
并且
P(A1, A2,A3,...,Ak) > P(C1,C2,C3,...,Cn)
因此,只要利用上一章提到的统计语言模型计算出每种分词句子出现的概率,并找出其中最大的,就能找到最好的分词方法。
中文分词以统计语言模型为基础,经过几十年的发展和完善,今天基本上可以看做是一个已解决的问题。当然不同的人做的分词器有好有坏,这里的差别主要在于数据的使用和工程实现的精度。