搜档网
当前位置:搜档网 › 《IKAnalyzer中文分词器V3.1.6使用手册》

《IKAnalyzer中文分词器V3.1.6使用手册》

《IKAnalyzer中文分词器V3.1.6使用手册》
《IKAnalyzer中文分词器V3.1.6使用手册》

IKAnalyzer中文分词器

V3.X使用手册

目录

1.IK Analyzer3.0介绍 (2)

2.使用指南 (4)

3.词表扩展 (11)

4针对solr的分词器应用扩展 (13)

5.关于作者 (14)

1.IK Analyzer3.0介绍

IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IK Analyzer3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。

1.1IK Analyzer3.0结构设计

1.2IK Analyzer3.0特性

?采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。

?采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。?优化的词典存储,更小的内存占用。支持用户词典扩展定义

?针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。

1.3分词效果示例

文本原文1:

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。

分词结果:

ikanalyzer|是|一个|一|个|开源|的|基于|java|语言|开发|的|轻量级|量级|的|中文|分词|工具包|工具|从|2006|年|12|月|推出|1.0 |版|开始|ikanalyzer|已经|推出|出了|3|个大|个|版本

文本原文2:

永和服装饰品有限公司

分词结果:

永和|和服|服装|装饰品|装饰|饰品|有限|公司

文本原文3:

作者博客:https://www.sodocs.net/doc/ba5199313.html,电子邮件:linliangyi2005@https://www.sodocs.net/doc/ba5199313.html,

分词结果:

作者|博客|https://www.sodocs.net/doc/ba5199313.html,|linliangyi|2007|javaeye|com|电子邮件|邮件地址|linliangyi2005@https://www.sodocs.net/doc/ba5199313.html,|linliangyi|2005|gmail|com

2.使用指南

2.1下载地址

GoogleCode开源项目:https://www.sodocs.net/doc/ba5199313.html,/p/ik-analyzer/

GoogleCode SVN下载:https://www.sodocs.net/doc/ba5199313.html,/svn/trunk/

2.2安装部署

IK Analyzer安装包包含:

1.《IKAnalyzer中文分词器V3.X使用手册》(即本文档)

2.IKAnalyzer

3.X.jar

3.IKAnalyzer.cfg.xml

它的安装部署十分简单,将IKAnalyzer3.X.jar部署于项目的lib目录中;IKAnalyzer.cfg.xml 文件放置在代码根目录(对于web项目,通常是WEB-INF/classes目录,同hibernate、log4j 等配置文件相同)下即可。

2.3Lucene用户快速入门

代码样例

IKAnalyzerDemo

执行结果:

命中:1

内容:Document>

2.4关键API说明

?类org.wltea.analyzer.lucene.IKAnalyzer

说明:IK分词器的主类,是IK分词器的Lucene Analyzer类实现。

该类使用方法请参考“代码样例”章节

?public IKAnalyzer()

说明:构造函数,默认实现最细粒度切分算法

?public IKAnalyzer(boolean isMaxWordLength)

说明:新构造函数,从版本V3.1.1起

参数1:boolean isMaxWordLength,当为true时,分词器进行最大词长切

分;当为false时,分词器进行最细粒度切分。

?类org.wltea.analyzer.lucene.IKQueryParser

?public static Query parse(String field,String query)throws IOException 说明:单条件,单Field查询分析

参数1:String field,查询的目标域名称

参数2:String query,查询的关键字

返回值:构造一个单条件,单Field查询器

?public static Query parseMultiField(String[]fields,String query)throws IOException

说明:多Field,单条件查询分析

参数1:String[]fields,多个查询的目标域名称的数组

参数2:String query,查询的关键字

返回值:构造一个多Field,单条件的查询器

?public static Query parseMultiField(String[]fields,String query, BooleanClause.Occur[]flags)throws IOException

说明:多Field,单条件,多Occur查询分析

参数1:String[]fields,多个查询的目标域名称的数组

参数2:String query,查询的关键字

参数3:BooleanClause.Occur[]flags,查询条件的组合方式(Or/And)

返回值:构造一个多Field,单条件,多Occur的查询器

?public static Query parseMultiField(String[]fields,String[]queries)throws IOException

说明:多Field,多条件查询分析

参数1:String[]fields,多个查询的目标域名称的数组

参数2:String[]queries,对应多个查询域的关键字数组

返回值:构造一个多Field,多条件的查询器

?public static Query parseMultiField(String[]fields,String[]queries, BooleanClause.Occur[]flags)throws IOException

说明:多Field,多条件,多Occur查询

参数1:String[]fields,多个查询的目标域名称的数组

参数2:String[]queries,对应多个查询域的关键字数组

参数3:BooleanClause.Occur[]flags,查询条件的组合方式(Or/And)

返回值:构造一个多Field,多条件,多Occur的查询器

?类org.wltea.analyzer.lucene.IKSimilarity

说明:IKAnalyzer的相似度评估器。该类重载了DefaultSimilarity的coord方法,提高词元命中个数在相似度比较中的权重影响,即,当有多个词元得到匹配时,文档的相似度将提高。

该类使用方法请参考“代码样例”章节

?类org.wltea.analyzer.IKSegmentation

说明:这是IK分词器的核心类。它是真正意义上的分词器实现。IKAnalyzer的3.0版本有别于之前的版本,它是一个可以独立于Lucene的Java分词器实现。当您需要在Lucene以外的环境中单独使用IK中文分词组件时,IKSegmentation正是您要找的。

?public IKSegmentation(Reader input)

说明:IK主分词器构造函数,默认实现最细粒度切分

参数1:Reader input,字符输入读取

?public IKSegmentation(Reader input,boolean isMaxWordLength)

说明:IK主分词器新构造函数,从版本V3.1.1起

参数1:Reader input,字符输入读取

参数2:boolean isMaxWordLength,当为true时,分词器进行最大词长切分;

当为false时,分词器进行最细粒度切分。

?public Lexeme next()throws IOException

说明:读取分词器切分出的下一个语义单元,如果返回null,表示分词器已经结束。

返回值:Lexeme语义单元对象,即相当于Lucene的词元对象Token

?类org.wltea.analyzer.Lexeme

说明:这是IK分词器的语义单元对象,相当于Lucene中的Token词元对象。由于3.0版本被设计为独立于Lucene的Java分词器实现,因此它需要Lexeme来代表分词的结果。

?public int getBeginPosition()

说明:获取语义单元的起始字符在文本中的位置

返回值:int,语义单元相对于文本的绝对起始位置

?public int getEndPosition()

说明:获取语义单元的结束字符的下一个位置

返回值:int,语义单元相对于文本的绝对终止位置的下一个字符位置

?public int getLength()

说明:获取语义单元包含字符串的长度

返回值:int,语义单元长度=getEndPosition–getBeginPosition ?public String getLexemeText()

说明:获取语义单元包含字符串内容

返回值:String,语义单元的实际内容,即分词的结果

3.词表扩展

目前,IK分词器自带的主词典拥有27万左右的汉语单词量。由于作者个人的精力有限,并没有对搜集到的词库进行全范围的筛选、清理。此外,对于分词组件应用场景所涉及的领域的不同,也需要各类专业词库的支持。为此,IK分词器提供了对词典的扩展支持。

在IK分词器3.1.3以上版本,同时提供了对用户自定义的停止词(过滤词)的扩展支持。

3.1基于API的词典扩充

IK分词器支持使用API编程模型扩充您的词典和停止词典。如果您的个性化词典是存储于数据库中,这个方式应该对您适用。API如下:

?类org.wltea.analyzer.dic.Dictionary

说明:IK分词器的词典对象。它负责中文词汇的加载,内存管理和匹配检索。

?public static void loadExtendWords(ListextWords)

说明:加载用户扩展的词汇列表到IK的主词典中,增加分词器的可识别词语。

参数1:ListextWords,扩展的词汇列表

返回值:无

?public static void loadExtendStopWords(ListextStopWords)说明:加载用户扩展的停止词列表,从版本V3.1.3起

参数1:ListextStopWords,扩展的停止词列表

返回值:无

3.2基于配置的词典扩充

IK分词器还支持通过配置IKAnalyzer.cfg.xml文件来扩充您的专有词典以及停止词典(过滤词典)。

1.部署IKAnalyzer.cfg.xml

IKAnalyzer.cfg.xml部署在代码根目录下(对于web项目,通常是WEB-INF/classes目录)同hibernate、log4j等配置文件相同。

2.词典文件的编辑与部署

分词器的词典文件格式是无BOM的UTF-8编码的中文文本文件,文件扩展名不限。词典中,每个中文词汇独立占一行,使用\r\n的DOS方式换行。(注,如果您不了解什么是无BOM的UTF-8格式,请保证您的词典使用UTF-8存储,并在文件的头部添加一空行)。您可以参考分词器源码org.wltea.analyzer.dic包下的.dic文件。

词典文件应部署在Java的资源路径下,即ClassLoader能够加载的路径中。(推荐同IKAnalyzer.cfg.xml放在一起)

3.IKAnalyzer.cfg.xml文件的配置

IK Analyzer扩展配置

/mydict.dic;

/com/mycompany/dic/mydict2.dic;

/ext_stopword.dic

在配置文件中,用户可一次配置多个词典文件。文件名使用“;”号分隔。文件路径为相对java包的起始根路径。

4针对solr的分词器应用扩展

IK分词器3.1.5以上版本从API层面提供了对solr项目扩展。

4.1TokenizerFactory接口实现

?类org.wltea.analyzer.solr.IKTokenizerFactory

说明:该类继承与solr1.3的BaseTokenizerFactory,是IK分词器对solr1.3项目TokenizerFactory接口的扩展实现。从版本V3.1.5起。

属性:isMaxWordLength。该属性决定分词器是否采用最大词语切分。

?类org.wltea.analyzer.solr.IKTokenizerFactory14

说明:该类继承与solr1.4的BaseTokenizerFactory,是IK分词器对solr1.4项目TokenizerFactory接口的扩展实现。从版本V3.1.6起。

属性:isMaxWordLength。该属性决定分词器是否采用最大词语切分。

4.2solr1.3配置样例

使用IKAnalyzer的配置

使用IKTokenizerFactory的配置

4.2solr1.4配置样例

在solr1.4中,org.apache.solr.analysis.BaseTokenizerFactory接口做了修改,因此配置有了相应的变化。

使用IKAnalyzer的配置

使用元素的配置与solr1.3相同

使用IKTokenizerFactory的配置

使用元素的配置与solr1.4是不同的

5.关于作者

Blog:https://www.sodocs.net/doc/ba5199313.html,

Email:linliangyi2005@https://www.sodocs.net/doc/ba5199313.html,

(全文终)

相关主题