一、当前主流的一些中文分词介绍(转)
1、 StopAnalyzer
StopAnalyzer能过滤词汇中的特定字符串和词汇,并且完成大写转小写的功能。
2、 StandardAnalyzer
StandardAnalyzer根据空格和符号来完成分词,还可以完成数字、字母、E-mail地址、IP地址以及中文字符的分析处理,还可以支持过滤词表,用来代替StopAnalyzer能够实现的过滤功能。
3、 SimpleAnalyzer
SimpleAnalyzer具备基本西文字符词汇分析的分词器,处理词汇单元时,以非字母字符作为分割符号。分词器不能做词汇的过滤,之进行词汇的分析和分割。输出地词汇单元完成小写字符转换,去掉标点符号等分割符。
在全文检索系统开发中,通常用来支持西文符号的处理,不支持中文。由于不完成单词过滤功能,所以不需要过滤词库支持。词汇分割策略上简单,使用非英文字符作为分割符,不需要分词词库的支持。
4、 WhitespaceAnalyzer
WhitespaceAnalyzer使用空格作为间隔符的词汇分割分词器。处理词汇单元的时候,以空格字符作为分割符号。分词器不做词汇过滤,也不进行小写字符转换。
实际中可以用来支持特定环境下的西文符号的处理。由于不完成单词过滤和小写字符转换功能,也不需要过滤词库支持。词汇分割策略上简单使用非英文字符作为分割符,不需要分词词库支持。
4、 KeywordAnalyzer
KeywordAnalyzer把整个输入作为一个单独词汇单元,方便特殊类型的文本进行索引和检索。针对邮政编码,地址等文本信息使用关键词分词器进行索引项建立非常方便。
6、 CJKAnalyzer
CJKAnalyzer内部调用CJKTokenizer分词器,对中文进行分词,同时使用StopFilter过滤器完成过滤功能,可以实现中文的多元切分和停用词过滤。在Lucene3.0版本中已经弃用。
7、 ChineseAnalyzer
ChineseAnalyzer功能与StandardAnalyzer分析器在处理中文是基本一致,都是切分成单个的双字节中文字符。在Lucene3.0版本中已经弃用。
8、 PerFieldAnalyzerWrapper
PerFieldAnalyzerWrapper功能主要用在针对不同的Field采用不同的Analyzer的场合。比如对于文件名,需要使用KeywordAnalyzer,而对于文件内容只使用StandardAnalyzer就可以了。通过addAnalyzer()可以添加分类器。
9、 IKAnalyzer
实现了以词典为基础的正反向全切分,以及正反向最大匹配切分两种方法。IKAnalyzer是第三方实现的分词器,继承自Lucene的Analyzer类,针对中文文本进行处理。
10、JE-Analysis
JE-Analysis是Lucene的中文分词组件,需要下载。
11、 ICTCLAS4J
ictclas4j中文分词系统是sinboy在中科院张华平和刘群老师的研制的FreeICTCLAS的基础上完成的一个java开源分词项目,简化了原分词程序的复杂度,旨在为广大的中文分词爱好者一个更好的学习机会。
imdict-chinese-analyzer 是 imdict智能词典 的智能中文分词模块,算法基于隐马尔科夫模型(HiddenMarkovModel, HMM),是中国科学院计算技术研究所的ictclas中文分词程序的重新实现(基于Java),可以直接为lucene搜索引擎提供简体中文分词支持。
13、 PaodingAnalysis
Paoding Analysis中文分词具有极 高效率 和 高扩展性。引入隐喻,采用完全的面向对象设计,构思先进。其效率比较高,在PIII1G内存个人机器上,1秒可准确分词100万汉字。采用基于不限制个数的词典文件对文章进行有效切分,使能够将对词汇分类定义。能够对未知的词汇进行合理解析。
14、 MMSeg4J
mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法(http://technology.chtsai.org/mmseg/)实现的中文分词器,并实现lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。 MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法
二、选择
考虑更新频率后期版本支持力度以及lucene4.0改动较大不向下兼容,考虑采用ik-analyzer
主页:http://code.google.com/p/ik-analyzer/
官方下载地址:http://code.google.com/p/ik-analyzer/downloads/list
作者博客: http://linliangyi2007.iteye.com/blog/
三、版本介绍
IKAnalyzer3.2.8版本为最后一个支持jdk5的版本,发布于11年3月,后续2012版本都要求jdk6+,故采用3.2.8GA版,下面是该版本介绍。
IK Analyzer 3.2.8版本修订
· 1.优化了英文字符处理,支持如:C++ 等带符号单词输出
· 2.简化了数词处理,使输出结果更符合用户观感
· 3.改进了最大词长切分,使输出结果更符合用户观感
· 4.性能优化,目前IK分词器的速度为约85万字/秒(1600K字节/S)
· 5.新增IK简易查询表达式,简化用户使用
以下对新增的查询表达式做详细说明:
IK3.2.8版本为简化用户对查询逻辑的处理,提供了基于表达式的搜索逻辑处理。它与Lucene自带表达式的不同之处,在于它采用了IKQueryParser对中文分词歧义处理的算法。相对LuceneQueryParser而言,用它生成的Query对象也许更能命中搜索结果。
表达式样例:
1. id='1231' && (title:'文档标题'|| content:'内容') – author='helloworld'
· 1.表达式使用 属性名<->属性值 键值对的形式,属性值使用”’”单引号标识。
· 2.在键值对中使用 “=”等号,表示对该属性的精确搜索(不分词),适用于对ID、编号、分类等精确值属性搜索;使用“: ”冒号表示对属性的模糊搜索(分词搜索),适用于文本内容的全文搜索。
· 3.在使用“: ”时,连续的搜索关键字将解析为 AND 逻辑,如果关键字中带有空格,这解析为OR逻辑。如:title:'文档标题' 表示搜索title中同时包含“文档”AND“标题“的数据,title:'文档_标题' 表示搜索title中包含“文档”OR“标题“。(这个例子中,我们默认你使用的IK分词器能将”文档标题“切分为”文档“和”标题“两个词)
· 4.表达式支持“&&”与 “||” 或“-”非的逻辑操作,以及“( )”括号优先级定义。注意“-”非逻辑不能单独使用,即 “– author='helloworld'” 是非法表达式。
· 5.目前就是这么简单,暂不支持更复杂的搜索逻辑:).
PS:如果您使用的是Solr1.3或者v2.9之前的Lucene,请下载IKAnalyzer3.1.6GA使用!IK Analyzer3.2.X仅支持Lucene3.0以上版本。
分词效果示例
IK Analyzer 3.2.8版本支持 细粒度切分 和 最大词长切分,以下是两种切分方式的演示样例。
文本原文1:
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。
最大词长分词结果:
引用
ikanalyzer | 是 | 一个 | 开源 | 的 | 基于 | java | 语言 | 开发 | 的 | 轻量级 | 的 | 中文 | 分词 | 工具包 | 从 | 2006 | 年 | 12 | 月 | 推出 | 1.0 | 版 | 开始 | ikanalyzer | 已经 | 推出 | 出了 | 3 | 个 | 大 | 版本
最细粒度分词结果:
引用
ikanalyzer | 是 | 一个 | 一 | 个 | 开源 | 的 | 基于 | java | 语言 | 开发 | 的 | 轻量级 | 量级 | 的 | 中文 | 分词 | 工具包 | 工具 | 从 | 2006 | 年 | 12 | 月 | 推出 | 1.0 | 版 | 开始 | ikanalyzer | 已经 | 推出 | 出了 | 3 | 个 | 大 | 版本
文本原文2:
作者博客:linliangyi2007.iteye.com 电子邮件:linliangyi2005@gmail.com
最大词长分词结果:
引用
作者 | 博客 | linliangyi2007.iteye.com | 电子邮件 | linliangyi2005@gmail.com
最细粒度分词结果:
引用
作者 | 博客 | linliangyi2007.iteye.com | linliangyi | 2007 | javaeye| com | 电子邮件 |linliangyi2005@gmail.com | linliangyi | 2005 | gmail | com
文本原文3
古田县城关六一四路四百零五号
最大词长分词结果:
引用
古田县 | 县城 | 城关 | 六一四 | 路 | 四百零五 | 号
最细粒度分词结果:
引用
古田县 | 古田 | 县城 | 城关 | 六一四 | 六一 | 四 | 路 | 四百零五 | 四 | 百 | 零 | 五 | 号
文本原文4
曙光天阔I620r-G /A950r-F 夏普SH9020C
最大词长分词结果:
引用
曙光 | 天 | 阔 | i620r-g |a950r-f | 夏普 | sh9020c
最细粒度分词结果:
引用
曙光 | 天 | 阔 | i620r-g | i |620 | r | g | a950r-f | a | 950 | r | f | 夏普 | sh9020c | sh |9020 | c
具体使用可参考下载包的使用手册!