本篇文章阿堂将要和大家分享中文分词技术,这也是搜索引擎技术中非常重要的一个内容。在讲这个内容之前,我们先得要了解一些中文分词方面的基本概念介绍。
中文分词 (Chinese Word Segmentation)指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂的多、困难的多。
存在中文分词技术是由于中文在基本文法上有其特殊性,具体表现在: 1.与英文为代表的拉丁语系语言相比,英文以空格作为天然的分隔符,而中文由于继承自古代汉语的传统,词语之间没有分隔。 古代汉语中除了连绵词和人名地名等,词通常就是单个汉字,所以当时没有分词书写的必要。而现代汉语中双字或多字词居多,一个字不再等同于一个词。 2.在中文里,“词”和“词组”边界模糊 现代汉语的基本表达单元虽然为“词”,且以双字或者多字词居多,但由于人们认识水平的不同,对词和短语的边界很难去区分。 例如:“对随地吐痰者给予处罚”,“随地吐痰者”本身是一个词还是一个短语,不同的人会有不同的标准,同样的“海上”“酒厂”等等,即使是同一个人也可能做出不同判断,如果汉语真的要分词书写,必然会出现混乱,难度很大。 中文分词的方法其实不局限于中文应用,也被应用到英文处理,如手写识别,单词之间的空格就很清楚,中文分词方法可以帮助判别英文单词的边界。
中文分词对于搜索引擎来说,最重要的并不是找到所有结果,因为在上百亿的网页中找到所有结果没有太多的意义,没有人能看得完,最重要的是把最相关的结果排在最前面,这也称为相关度排序。中文分词的准确与否,常常直接影响到对搜索结果的相关度排序。从定性分析来说,搜索引擎的分词算法不同,词库的不同都会影响页面的返回结果
常见的开源中文分词技术主要有
智呈分词
功能描述: | 1.新词自动识别 对词典中不存在的词,可以自动识别,对词典的依赖较小; 2.词性输出 分词结果中带有丰富的词性; 3.动态词性输出 分词结果中的词性并非固定,会根据不同的语境,赋予不同的词性; 4.特殊词识别 比如化学、药品等行业词汇,地名、品牌、媒体名等; 5.智能歧义解决 根据内部规则,智能解决常见分词歧义问题; 6.多种编码识别 自动识别各种单一编码,并支持混合编码; 7.数词量词优化 自动识别数量词; |
性能介绍: | 处理器:AMD Athlon II x2 250 3GHZ 单线程大于833KB/s,多线程安全。 |
MFSOU中文分词PHP扩展
一个PHP函数实现中文分词。使分词更容易,使用如下图:
SCWS调用示例
SCWS
Hightman开发的一套基于词频词典的机械中文分词引擎,它能将一整段的汉字基本正确的切分成词。采用的是采集的词频词典,并辅以一定的专有名称,人名,地名,数字年代等规则识别来达到基本分词,经小范围测试大概准确率在 90% ~ 95%之间,已能基本满足一些小型搜索引擎、关键字提取等场合运用。45Kb左右的文本切词时间是0.026秒,大概是1.5MB文本/秒,支持PHP4和PHP 5。