搜索篇(2)Lucene全文检索工具——中文分词

上一篇文章《搜索篇(1)Lucene全文检索工具库架构》讲到了,文本解析器主要包括中文分词、垃圾信息过滤等模块,而中文分词(Chinese Word Segmentation)是对信息处理的基础,如果没有中文分词,根本无法建立高效的索引结构。

中文分词器基本原理和方法

何为中文分词?直白的讲,指的是将句子切分成单独的词或字,如下图所示。从常识可知,英文单词之间是以空格作为自然分界符,中文字、句和段也能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符。因此,在词这一层上进行分析时,中文比之英文要复杂的多、困难的多。


这里写图片描述

其中,黑盒部分是一个极其复杂的过程,但至少包含编码类型识别、大小写转换、标点符号去除、词干去除(比如英文中需还原各种时态得到原型)、单词提取以及连接词汇或超高频词汇等模块。

通常认为中文分词有三种主要方法:基于字符串(字典)匹配的分词方法、基于统计(词频)的分词方法以及基于语义(理解)的分词方法。各种分词算法的主要思想如下表所示。

中文分词方法 主要思想
字符匹配法 与一“充分大”的词典词条匹配(分词基础)
统计法 相邻的字同时出现的次数(优点,新词识别)
理解法 模拟人脑对句子的理解(优点,歧义识别)

字符匹配,又叫做机械分词方法,在中文分词的早期得到了很好的发展,它是将句子与一个“充分大”的词典词条进行配。通过一定的匹配规则,若在词典中找到搜索字符串,则识别出一个词。

理解法,是通过模拟人脑对句子的理解、分析,达到识别词的效果。其主要思想就是将分词、句法、语义三种分析并行推进,利用句法、语义来处理歧义现象。

统计法,顾名思义其核心算法是统计相邻的字同时在上下文中出现的次数,并以统计频数作为分词的依据。至今,到底何种分词算法的时效更高,目前尚无定论。但是,可以肯定的是,对于任何一个成熟的分词系统来说,都不可能单独依靠某一种算法。

常用中文分词器介绍

分词的时效性对搜索引擎来说十分重要,如果分词速度太慢,即使准确性再高,也无济于事,因此一款高时效的分词器尤为重要。

针对“基于Android的虚拟聊天机器人开发”句子,常见的中文分词器及其分词效果如下表所示。

中文分词器 分词效果
StandardAnalyzer 基/于/android/的/虚/拟/聊/天/机/器/人/开/发
CJKAnalyzer 基于/android/的虚/虚拟/拟聊/聊天/天机/机器/器人/人开/开发
ChineseAnalyzer 基/于/android/的/虚/拟/聊/天/机/器/人/开/发
IK_CAnalyzer 基于/android/虚拟/聊天/天机/机器人/机器/人/开发

其中,StandardAnalyzer和ChineseAnalyzer分词效果几乎一致,CJKAnalyzer分词器主要呈现出二分划分策略,IK_CAnalyzer分词器是基于字典的分词法,主要采用正反向全切分以及正反向最大匹配切分两种方法,分析效果较佳。


©qingdujun
2018-9-14 于 北京 海淀


END

References:
[1] Otis Gospodnetic,Erik Hatcher.Lucene In Action[M].Greenwich:Manning Publication Co,2010:1-270
[2] Yao Meng,Hao Yu. Chinese New Word Finding Using Character-Based Parsing Model[J]. Volume 3248 of the series Lecture Notes in Computer Science pp 733-742
[3] DJ. QING, Android-based virtual chat robot development

猜你喜欢

转载自blog.csdn.net/u012339743/article/details/82706255