中文分词包括三种方法:1)基于字符串匹配的分词;2)基于理解的分词;3)基于统计的分词。到目前为止,还无法证明哪一种方法更准确,每种方法都有自己的利弊,有强项也有致命弱点,简单的对比见下表所示:
各种分词方法的优劣对比
分词方法 基于字符串匹配分词 基于理解的分词 基于统计的分词
歧义识别 差 强 强
新词识别 差 强 强
需要词典 需要 不需要 不需要
需要语料库 否 否 是
需要规则库 否 是 否
算法复杂性 容易 很难 一般
技术成熟度 成熟 不成熟 成熟
实施难度 容易 很难 一般
分词准确性 一般 准确 较准
分词速度 快 慢 一般
(1)歧义识别
歧义识别指一个字符串有多种分词方法,计算机难以给出到底哪一种分词算法才是正确的分词系列。如"表面的"可以分为"表面/的"或"表/面的"。计算机无法判断哪一种才是准确的分词系列。
基于字符串的分词算法:仅仅是跟一个电子词典进行比较,故不能进行歧义识别;
基于理解的分词算法:指通过理解字符串的含义,故有很强的歧义识别能力;
基于统计的分词算法:根据字符连续出现次数的多少,得到分词系列,故常常能够给出正确的分词系列选择,但是也有可能判断错误的情况。
(2)新词识别
新词识别也称作未登录词识别,指正确识别词典中没有出现的词语。姓名、机构名、地址、称谓等千变万化,词典中常常不能完全收录这些词语;另外,网络中出现的流行用语也是一种未登录词的常见来源,如"打酱油"为最近出现在网络中,并迅速流行,从而成为一个新词。大量的研究证明新词识别是中文分词准确性的一个重要影响因素。
基于字符串的分词算法:无法正确识别未登录词,因为这种算法仅仅与词典中存在的词语进行比较;
基于理解的分词算法:理解字符串的含义,从而有很强的新词识别能力;
基于统计的分词算法:这种算法对第二种未登录词有很强的识别能力,因为出现次数多,才会当作一个新词;对于第二类未登录词,这类词语有一定的规律,如姓名:"姓"+ 名字,如李胜利;机构:前缀+称谓,如希望集团;故需要结合一定的规则进行识别,仅仅统计方法难以正确识别。
(3)需要词典
基于字符串的分词算法:基本思路就是与电子词典进行比较,故电子词典是必须的。并且词典越大,分词的正确率越高,因为词典越大,未登录词越少,从而可以大大减少未登录词识别的错误;
基于理解的分词算法:理解字符串的含义,故不需要一个电子词典;
基于统计的分词算法:仅仅根据统计得到最终的结果,故电子词典不是必须的。
(4)需要语料库
基于字符串的分词算法:分词过程仅仅与一个已经存在的电子词典进行比较,故不需要语料库;
基于理解的分词算法:理解字符串的含义,故不需要电子词典;
基于统计的分词算法:需要语料库进行统计训练,故语料库是必须的;且好的语料库是分词准确性的保证。
(5)需要规则库
基于字符串的分词算法:分词过程仅仅与一个已经存在的电子词典进行比较,不需要规则库来进行分词;
基于理解的分词算法:规则是计算机进行理解的基础,故准确、完备的规则库是这种分词算法的前提;
基于统计的分词算法:根据语料库统计训练,故规则库不是必须的。
(6)算法复杂性
基于字符串的分词算法:仅仅进行字符串的比较操作,故算法简单;
基于理解的分词算法:需要充分处理各种规则,故算法非常复杂;事实上到目前为止,还没有成熟的这类算法;
基于统计的分词算法:需要语料库进行训练,虽然算法也比较复杂,但是已经比较常见,故这种分词的复杂性比第一种大,比第二种容易。现在的实用分词系统都采用这种算法。
(7)技术成熟度
基于字符串的分词算法:是最早出现也是最成熟的算法;
基于理解的分词算法:是最不成熟的一类算法,到目前为止还没有成熟的算法;
基于统计的分词算法:已经有多种成熟的这类算法,基本上能够满足实际的应用。
故技术成熟度:基于匹配的分词算法〉基于理解的分词算法〉基于统计的分词算法。
(8)实施复杂性
同上面的道理,实施复杂性:基于理解的分词算法〉基于统计的分词算法〉基于匹配的分词算法。
(9)分词准确性
到目前为止还没有一个准确的结论,不过从理论上说,基于理解的分词算法有最高的分词准确性,理论上有100%的准确性;而基于匹配的分词算法和基于统计的分词算法是一种"浅理解"的分词方法,不涉及真正的含义理解,故可能会出现错误,难以达到100%的准确性。
(10)分词速度
基于匹配的分词算法:算法简单,操作容易,故分词速度快,所以这种算法常常作为另外两种算法的预处理,进行字符串的粗分;
基于理解的分词算法:这种算法常常需要操作一个巨大的规则库,故速度最慢;
基于统计的分词算法:这种分词算法仅仅是与一个统计结果进行比较,故速度一般。
故一般的分词速度从快到慢依次为:基于匹配的分词算法〉基于统计的分词算法〉基于理解的分词算法。