- 浏览: 1012685 次
- 性别:
- 来自: 福州
最新评论
-
guanxin2012:
大神,您好。非常感谢您贡献了IKExpression。我们现在 ...
分享开源表达式解析器IK-Expression2.0 -
qqgigas:
LZ,public boolean createUser(LD ...
Sun Directory Server/LDAP学习笔记(二)——API说明及代码样例 -
gao_shengxian:
Hibernate: update T_GX_TEST set ...
优雅Java编程 之 使用Hibernate存储Oracle Spatial对象 -
a78113534:
感谢大神,在安卓里面调用成功了。
发布IK Expression开源表达式解析器 V2.1.0 -
majiedota:
加油
来自开源支持者的第一笔捐赠
最新:IKAnalyzer3.2.3稳定版已经发布,支持Lucene3.0和solr1.4
链接:http://www.iteye.com/topic/667095
lucene 2.9以前用户请使用 IKAnalyzer V3.1.6GAhttp://linliangyi2007.iteye.com/blog/512577
IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IK Analyzer 3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。
1.1 IK Analyzer 3.0结构设计
1.2 IK Analyzer 3.0特性
1.3 分词效果示例
文本原文1:
IK-Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本。
分词结果:
ik-analyzer | 是 | 一个 | 一 | 个 | 开源 | 的 | 基于 | java | 语言 | 开发 | 的 | 轻量级 | 量级 | 的 | 中文 | 分词 | 工具包 | 工具 | 从 | 2006 | 年 | 12 | 月 | 推出 | 1.0 | 版 | 开始 | ikanalyzer | 已经 | 推出 | 出了 | 3 | 个大 | 个 | 版本
文本原文2:
永和服装饰品有限公司
分词结果:
永和 | 和服 | 服装 | 装饰品 | 装饰 | 饰品 | 有限 | 公司
文本原文3:
作者博客:linliangyi2007.iteye.com 电子邮件:linliangyi2005@gmail.com
分词结果:
作者 | 博客 | linliangyi2007.iteye.com | 2007 | 电子邮件 | 电子 | 邮件 | 地址 | linliangyi2005@gmail.com | 2005
2.使用指南
2.1下载地址
GoogleCode开源项目 :http://code.google.com/p/ik-analyzer/
GoogleCode SVN下载:http://ik-analyzer.googlecode.com/svn/trunk/
2.2安装部署
IK Analyzer安装包包含:
1. 《IKAnalyzer中文分词器V3.0使用手册》(即本文档)
2. IKAnalyzer3.0GA.jar
3. IKAnalyzer.cfg.xml
它的安装部署十分简单,将IKAnalyzer3.0GA.jar部署于项目的lib目录中;IKAnalyzer.cfg.xml文件放置在代码根目录(对于web项目,通常是WEB-INF/classes目录,同hibernate、log4j等配置文件相同)下即可。
2.3 Lucene用户快速入门
代码样例
执行结果:
命中:1
内容:Document<stored/uncompressed,indexed,tokenized<text:IK Analyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切分算法。>>
2.4 关键API说明
类org.wltea.analyzer.lucene.IKAnalyzer
说明:IK分词器的主类,是IK分词器的Lucene Analyzer类实现。
该类使用方法请参考 “代码样例”章节
类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 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分词器自带的主词典拥有22万左右的汉语单词量。由于作者个人的精力有限,并没有对搜集到的词库进行全范围的筛选、清理。此外,对于分词组件应用场景所涉及的领域的不同,也需要各类专业词库的支持。为此,IK分词器提供了对词典的扩充支持。
基于API的词典扩充
IK分词器支持使用API编程模型扩充您的词典。如果您的词典是存储与数据库中,这个方式应该对您适用。API如下:
类org.wltea.analyzer.dic.Dictionary
说明: IK分词器的词典对象。它负责中文词汇的加载,内存管理和匹配检索。
public static void loadExtendWords(List<String> extWords)
说明:加载用户扩展的词汇列表到IK的主词典中,增加分词器的可识别词语。
参数1:List<String> extWords , 扩展的词汇列表
返回值:无
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文件的配置
在配置文件中,用户可一次配置多个词典文件。文件名使用“;”号分隔。文件路径为相对java包的起始根路径。
(全文终)
下载 :IKAnalyzer3.1.1稳定版完整包.rar
更多详细请参看《IKAnalyzer中文分词器V3.1.1使用手册.pdf》
我使用的版本是2012_u6。
人名和数量词,IK采用单字切分,这样做的好处是,用户可以用“2000”搜索到“2000年”;用“德华”搜索到“刘德华”,如果合并输出就搜索不到了,这个你懂得
很可能是你吧停止词典放错路径了,在src目录下没有ext_stopword.dic这个文件。
如果你不需要这个词库,应该修改IKAnalyzer.cfg.xml把其中相关配置注释掉
mail: linliangyi2005@gmail.com
QQ : 36668534
欢迎提出你的建议和意见
IKAnalyzer.cfg.xml可以放在src下,ext_stopwords.dic则是根据你在cfg中的配置位置来放置,请参考使用文档,里面都有详细的描述了。
我也有这个问题,文档看过了,而且在加载的时候控制台可以看到已经加载了IKAnalyzer.cfg.xml,IKAnalyzer.cfg.xml和ext_stopwords.dic是在同一文件夹中。但是搜索的时候还是没有过滤到ext_stopwords.dic出现过的字。
补充一下:我使用的是SSH。
1。确认你的词典文件的位置确实正确,经常发生扩展词典文件没有被MyEclipse发布到AppServer的运行目录下的情况。
2.确认词典文件的编码是无BOM的UTF-8方式的。
试了N次了,还是不行,决定改用数据库存放扩展的词汇,然后用IK的API加载到内存中。
IKAnalyzer.cfg.xml可以放在src下,ext_stopwords.dic则是根据你在cfg中的配置位置来放置,请参考使用文档,里面都有详细的描述了。
我也有这个问题,文档看过了,而且在加载的时候控制台可以看到已经加载了IKAnalyzer.cfg.xml,IKAnalyzer.cfg.xml和ext_stopwords.dic是在同一文件夹中。但是搜索的时候还是没有过滤到ext_stopwords.dic出现过的字。
补充一下:我使用的是SSH。
1。确认你的词典文件的位置确实正确,经常发生扩展词典文件没有被MyEclipse发布到AppServer的运行目录下的情况。
2.确认词典文件的编码是无BOM的UTF-8方式的。
IKAnalyzer.cfg.xml可以放在src下,ext_stopwords.dic则是根据你在cfg中的配置位置来放置,请参考使用文档,里面都有详细的描述了。
我也有这个问题,文档看过了,而且在加载的时候控制台可以看到已经加载了IKAnalyzer.cfg.xml,IKAnalyzer.cfg.xml和ext_stopwords.dic是在同一文件夹中。但是搜索的时候还是没有过滤到ext_stopwords.dic出现过的字。
补充一下:我使用的是SSH。
IKAnalyzer.cfg.xml可以放在src下,ext_stopwords.dic则是根据你在cfg中的配置位置来放置,请参考使用文档,里面都有详细的描述了。
链接:http://www.iteye.com/topic/667095
lucene 2.9以前用户请使用 IKAnalyzer V3.1.6GAhttp://linliangyi2007.iteye.com/blog/512577
IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IK Analyzer 3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。
1.1 IK Analyzer 3.0结构设计
1.2 IK Analyzer 3.0特性
- 采用了特有的“正向迭代最细粒度切分算法“,具有80万字/秒的高速处理能力
- 采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。
- 优化的词典存储,更小的内存占用。支持用户词典扩展定义
- 针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。
1.3 分词效果示例
文本原文1:
IK-Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本。
分词结果:
ik-analyzer | 是 | 一个 | 一 | 个 | 开源 | 的 | 基于 | java | 语言 | 开发 | 的 | 轻量级 | 量级 | 的 | 中文 | 分词 | 工具包 | 工具 | 从 | 2006 | 年 | 12 | 月 | 推出 | 1.0 | 版 | 开始 | ikanalyzer | 已经 | 推出 | 出了 | 3 | 个大 | 个 | 版本
文本原文2:
永和服装饰品有限公司
分词结果:
永和 | 和服 | 服装 | 装饰品 | 装饰 | 饰品 | 有限 | 公司
文本原文3:
作者博客:linliangyi2007.iteye.com 电子邮件:linliangyi2005@gmail.com
分词结果:
作者 | 博客 | linliangyi2007.iteye.com | 2007 | 电子邮件 | 电子 | 邮件 | 地址 | linliangyi2005@gmail.com | 2005
2.使用指南
2.1下载地址
GoogleCode开源项目 :http://code.google.com/p/ik-analyzer/
GoogleCode SVN下载:http://ik-analyzer.googlecode.com/svn/trunk/
2.2安装部署
IK Analyzer安装包包含:
1. 《IKAnalyzer中文分词器V3.0使用手册》(即本文档)
2. IKAnalyzer3.0GA.jar
3. IKAnalyzer.cfg.xml
它的安装部署十分简单,将IKAnalyzer3.0GA.jar部署于项目的lib目录中;IKAnalyzer.cfg.xml文件放置在代码根目录(对于web项目,通常是WEB-INF/classes目录,同hibernate、log4j等配置文件相同)下即可。
2.3 Lucene用户快速入门
代码样例
/** * IK Analyzer Demo * @param args */ import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopDocs; import org.apache.lucene.store.Directory; import org.apache.lucene.store.LockObtainFailedException; import org.apache.lucene.store.RAMDirectory; //引用IKAnalyzer3.0的类 import org.wltea.analyzer.lucene.IKAnalyzer; import org.wltea.analyzer.lucene.IKQueryParser; import org.wltea.analyzer.lucene.IKSimilarity; /** * @author linly * */ public class IKAnalyzerDemo { public static void main(String[] args){ //Lucene Document的域名 String fieldName = "text"; //检索内容 String text = "IK Analyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切分算法。"; //实例化IKAnalyzer分词器 Analyzer analyzer = new IKAnalyzer(); Directory directory = null; IndexWriter iwriter = null; IndexSearcher isearcher = null; try { //建立内存索引对象 directory = new RAMDirectory(); iwriter = new IndexWriter(directory, analyzer, true , IndexWriter.MaxFieldLength.LIMITED); Document doc = new Document(); doc.add(new Field(fieldName, text, Field.Store.YES, Field.Index.ANALYZED)); iwriter.addDocument(doc); iwriter.close(); //实例化搜索器 isearcher = new IndexSearcher(directory); //在索引器中使用IKSimilarity相似度评估器 isearcher.setSimilarity(new IKSimilarity()); String keyword = "中文分词工具包"; //使用IKQueryParser查询分析器构造Query对象 Query query = IKQueryParser.parse(fieldName, keyword); //搜索相似度最高的5条记录 TopDocs topDocs = isearcher.search(query , 5); System.out.println("命中:" + topDocs.totalHits); //输出结果 ScoreDoc[] scoreDocs = topDocs.scoreDocs; for (int i = 0; i < topDocs.totalHits; i++){ Document targetDoc = isearcher.doc(scoreDocs[i].doc); System.out.println("内容:" + targetDoc.toString()); } } catch (CorruptIndexException e) { e.printStackTrace(); } catch (LockObtainFailedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ if(isearcher != null){ try { isearcher.close(); } catch (IOException e) { e.printStackTrace(); } } if(directory != null){ try { directory.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
执行结果:
命中:1
内容:Document<stored/uncompressed,indexed,tokenized<text:IK Analyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切分算法。>>
2.4 关键API说明
类org.wltea.analyzer.lucene.IKAnalyzer
说明:IK分词器的主类,是IK分词器的Lucene Analyzer类实现。
该类使用方法请参考 “代码样例”章节
类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 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分词器自带的主词典拥有22万左右的汉语单词量。由于作者个人的精力有限,并没有对搜集到的词库进行全范围的筛选、清理。此外,对于分词组件应用场景所涉及的领域的不同,也需要各类专业词库的支持。为此,IK分词器提供了对词典的扩充支持。
基于API的词典扩充
IK分词器支持使用API编程模型扩充您的词典。如果您的词典是存储与数据库中,这个方式应该对您适用。API如下:
类org.wltea.analyzer.dic.Dictionary
说明: IK分词器的词典对象。它负责中文词汇的加载,内存管理和匹配检索。
public static void loadExtendWords(List<String> extWords)
说明:加载用户扩展的词汇列表到IK的主词典中,增加分词器的可识别词语。
参数1:List<String> extWords , 扩展的词汇列表
返回值:无
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文件的配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 扩展配置</comment> <!--用户可以在这里配置自己的扩展字典--> <entry key="ext_dict">/mydict.dic ; /mypack/mydict2.dic ; /com/mycompany/dic/mydict3.dic ;</entry> </properties>
在配置文件中,用户可一次配置多个词典文件。文件名使用“;”号分隔。文件路径为相对java包的起始根路径。
(全文终)
下载 :IKAnalyzer3.1.1稳定版完整包.rar
更多详细请参看《IKAnalyzer中文分词器V3.1.1使用手册.pdf》
评论
136 楼
hustszh
2013-09-11
hustszh 写道
楼主的分词器好强大啊!效果比较理想。
不过我有个疑问,我使用智能切分方式对“我来自中国广东”这句话进行分词时,得到的结果是:
[我][来自][中国广东]
“中国广东”无法分成[中国][广东],即使我在扩展词库中添加了“中国”和“广东”。
请问楼主,这种现象正常吗?
如果要达到[中国][广东]的效果,我需要做哪方面的配置?谢谢。
不过我有个疑问,我使用智能切分方式对“我来自中国广东”这句话进行分词时,得到的结果是:
[我][来自][中国广东]
“中国广东”无法分成[中国][广东],即使我在扩展词库中添加了“中国”和“广东”。
请问楼主,这种现象正常吗?
如果要达到[中国][广东]的效果,我需要做哪方面的配置?谢谢。
我使用的版本是2012_u6。
135 楼
hustszh
2013-09-11
楼主的分词器好强大啊!效果比较理想。
不过我有个疑问,我使用智能切分方式对“我来自中国广东”这句话进行分词时,得到的结果是:
[我][来自][中国广东]
“中国广东”无法分成[中国][广东],即使我在扩展词库中添加了“中国”和“广东”。
请问楼主,这种现象正常吗?
如果要达到[中国][广东]的效果,我需要做哪方面的配置?谢谢。
不过我有个疑问,我使用智能切分方式对“我来自中国广东”这句话进行分词时,得到的结果是:
[我][来自][中国广东]
“中国广东”无法分成[中国][广东],即使我在扩展词库中添加了“中国”和“广东”。
请问楼主,这种现象正常吗?
如果要达到[中国][广东]的效果,我需要做哪方面的配置?谢谢。
134 楼
kisachen
2013-08-26
大神,你好。我最近刚刚接触lucene。对于最后得分排序的问题很是头疼。原来用的分词器是lucene自带的StandardAnalyzer,这样导致的问题是“王大平”和“王大平33066”这样的得分是一样,会按照doc排序,与需求不符。然后我采用了大神您的分词器。在词库里有“王大平”和“大平”,这样的出来的得分“王大平”要高于“王大平33066”。
后来,我在字典里加了一个字“平”,这样得出的结果“王大平”和“王大平33066”的得分又是一样的了。拜托大神指点迷津!
上面的“王大平”里的‘大’其实是‘小’,只不过‘小*平’不让发表...
拜谢啊!
后来,我在字典里加了一个字“平”,这样得出的结果“王大平”和“王大平33066”的得分又是一样的了。拜托大神指点迷津!
上面的“王大平”里的‘大’其实是‘小’,只不过‘小*平’不让发表...
拜谢啊!
133 楼
307622798
2012-11-20
java.lang.VerifyError:class org.wltea.analyzer.lucene.IKAnalyzer overrides final method tokenStream.
在我这儿怎么报这样的异常呢?我用的是lucene4.0
说重写了一个final方法
在我这儿怎么报这样的异常呢?我用的是lucene4.0
说重写了一个final方法
132 楼
liweijing
2012-10-02
为什么我按照使用文档配置后出现下面错误:collection1: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Plugin init failure for [schema.xml] fieldType "text_cn": Cannot load analyzer: org.wltea.analyzer.lucene.IKAnalyzer。
我使用的是Solr4.0 IKAnalyzer3.2。
我使用的是Solr4.0 IKAnalyzer3.2。
131 楼
linliangyi2007
2011-10-27
lydialmr120 写道
楼主好人啊,能事也解答下我的问题
下面是我测试的文本和分词结果 :
昨天村支书赵永来电说家里的母猪生了4头小猪
昨天|村支书|赵|永|来电|说|家里|母猪|生了|4|头|小猪
主要问题是为什么人名(赵永)和量词(4头)没有正确的分出来呢
无论如何,先感谢楼主
下面是我测试的文本和分词结果 :
昨天村支书赵永来电说家里的母猪生了4头小猪
昨天|村支书|赵|永|来电|说|家里|母猪|生了|4|头|小猪
主要问题是为什么人名(赵永)和量词(4头)没有正确的分出来呢
无论如何,先感谢楼主
人名和数量词,IK采用单字切分,这样做的好处是,用户可以用“2000”搜索到“2000年”;用“德华”搜索到“刘德华”,如果合并输出就搜索不到了,这个你懂得
130 楼
lydialmr120
2011-10-27
楼主好人啊,能事也解答下我的问题
下面是我测试的文本和分词结果 :
昨天村支书赵永来电说家里的母猪生了4头小猪
昨天|村支书|赵|永|来电|说|家里|母猪|生了|4|头|小猪
主要问题是为什么人名(赵永)和量词(4头)没有正确的分出来呢
无论如何,先感谢楼主
下面是我测试的文本和分词结果 :
昨天村支书赵永来电说家里的母猪生了4头小猪
昨天|村支书|赵|永|来电|说|家里|母猪|生了|4|头|小猪
主要问题是为什么人名(赵永)和量词(4头)没有正确的分出来呢
无论如何,先感谢楼主
129 楼
luojihaidao
2010-07-09
支持个~~~
128 楼
wwty
2010-07-09
呵呵,一个帖子看下来,学习到很多东西,楼主发布源码,同时还这么尽力的回答问题,人品没得说。使用ing
127 楼
linliangyi2007
2010-06-02
qiuwei1003 写道
大虾,咨询一下:lucene3.0.1和IKAnalyzer3.2.3Stable或IKAnalyzer3.2.0Stable一起用搜索时报java.lang.ClassNotFoundException: org.wltea.analyzer.lucene.IKQueryParser。JDK1.6
很可能是你吧停止词典放错路径了,在src目录下没有ext_stopword.dic这个文件。
如果你不需要这个词库,应该修改IKAnalyzer.cfg.xml把其中相关配置注释掉
126 楼
qiuwei1003
2010-06-02
大虾,咨询一下:lucene3.0.1和IKAnalyzer3.2.3Stable或IKAnalyzer3.2.0Stable一起用搜索时报java.lang.ClassNotFoundException: org.wltea.analyzer.lucene.IKQueryParser。JDK1.6
125 楼
yin_bp
2010-05-13
严重支持,最近准备改造和升级自己开发的一套cms系统搜索引擎,呵呵
124 楼
cqcya
2010-05-05
收藏,学习
123 楼
hellojinjie
2010-05-05
毕设用到这个.///. 不知道在写参考文献的时候是不是可以把这个贴子的网址写上去...
122 楼
linliangyi2007
2010-02-28
luocanrao 写道
能不能给你提出一些优化点,我再使用过程中又些地方不方便
怎样才能方便联系到你
怎样才能方便联系到你
mail: linliangyi2005@gmail.com
QQ : 36668534
欢迎提出你的建议和意见
121 楼
luocanrao
2010-02-28
能不能给你提出一些优化点,我再使用过程中又些地方不方便
怎样才能方便联系到你
怎样才能方便联系到你
120 楼
MultiArrow
2010-02-27
linliangyi2007 写道
MultiArrow 写道
linliangyi2007 写道
kexzcle 写道
请问,IK词典的配置问题,IKAnalyzer.cfg.xml 放在哪里都无所谓是么?
里面配置 /ext_stopwords.dic
那IKAnalyzer.cfg.xml 放在src/
同样ext_stopwords.dic 也放到src/ 下..我试了下没有作用呢,停止词! 是否配置错误?
里面配置 /ext_stopwords.dic
那IKAnalyzer.cfg.xml 放在src/
同样ext_stopwords.dic 也放到src/ 下..我试了下没有作用呢,停止词! 是否配置错误?
IKAnalyzer.cfg.xml可以放在src下,ext_stopwords.dic则是根据你在cfg中的配置位置来放置,请参考使用文档,里面都有详细的描述了。
我也有这个问题,文档看过了,而且在加载的时候控制台可以看到已经加载了IKAnalyzer.cfg.xml,IKAnalyzer.cfg.xml和ext_stopwords.dic是在同一文件夹中。但是搜索的时候还是没有过滤到ext_stopwords.dic出现过的字。
补充一下:我使用的是SSH。
1。确认你的词典文件的位置确实正确,经常发生扩展词典文件没有被MyEclipse发布到AppServer的运行目录下的情况。
2.确认词典文件的编码是无BOM的UTF-8方式的。
试了N次了,还是不行,决定改用数据库存放扩展的词汇,然后用IK的API加载到内存中。
119 楼
linliangyi2007
2010-02-26
MultiArrow 写道
linliangyi2007 写道
kexzcle 写道
请问,IK词典的配置问题,IKAnalyzer.cfg.xml 放在哪里都无所谓是么?
里面配置 /ext_stopwords.dic
那IKAnalyzer.cfg.xml 放在src/
同样ext_stopwords.dic 也放到src/ 下..我试了下没有作用呢,停止词! 是否配置错误?
里面配置 /ext_stopwords.dic
那IKAnalyzer.cfg.xml 放在src/
同样ext_stopwords.dic 也放到src/ 下..我试了下没有作用呢,停止词! 是否配置错误?
IKAnalyzer.cfg.xml可以放在src下,ext_stopwords.dic则是根据你在cfg中的配置位置来放置,请参考使用文档,里面都有详细的描述了。
我也有这个问题,文档看过了,而且在加载的时候控制台可以看到已经加载了IKAnalyzer.cfg.xml,IKAnalyzer.cfg.xml和ext_stopwords.dic是在同一文件夹中。但是搜索的时候还是没有过滤到ext_stopwords.dic出现过的字。
补充一下:我使用的是SSH。
1。确认你的词典文件的位置确实正确,经常发生扩展词典文件没有被MyEclipse发布到AppServer的运行目录下的情况。
2.确认词典文件的编码是无BOM的UTF-8方式的。
118 楼
MultiArrow
2010-02-26
linliangyi2007 写道
kexzcle 写道
请问,IK词典的配置问题,IKAnalyzer.cfg.xml 放在哪里都无所谓是么?
里面配置 /ext_stopwords.dic
那IKAnalyzer.cfg.xml 放在src/
同样ext_stopwords.dic 也放到src/ 下..我试了下没有作用呢,停止词! 是否配置错误?
里面配置 /ext_stopwords.dic
那IKAnalyzer.cfg.xml 放在src/
同样ext_stopwords.dic 也放到src/ 下..我试了下没有作用呢,停止词! 是否配置错误?
IKAnalyzer.cfg.xml可以放在src下,ext_stopwords.dic则是根据你在cfg中的配置位置来放置,请参考使用文档,里面都有详细的描述了。
我也有这个问题,文档看过了,而且在加载的时候控制台可以看到已经加载了IKAnalyzer.cfg.xml,IKAnalyzer.cfg.xml和ext_stopwords.dic是在同一文件夹中。但是搜索的时候还是没有过滤到ext_stopwords.dic出现过的字。
补充一下:我使用的是SSH。
117 楼
linliangyi2007
2010-02-09
kexzcle 写道
请问,IK词典的配置问题,IKAnalyzer.cfg.xml 放在哪里都无所谓是么?
里面配置 /ext_stopwords.dic
那IKAnalyzer.cfg.xml 放在src/
同样ext_stopwords.dic 也放到src/ 下..我试了下没有作用呢,停止词! 是否配置错误?
里面配置 /ext_stopwords.dic
那IKAnalyzer.cfg.xml 放在src/
同样ext_stopwords.dic 也放到src/ 下..我试了下没有作用呢,停止词! 是否配置错误?
IKAnalyzer.cfg.xml可以放在src下,ext_stopwords.dic则是根据你在cfg中的配置位置来放置,请参考使用文档,里面都有详细的描述了。
发表评论
-
来自开源支持者的第一笔捐赠
2013-01-09 21:15 57772013年1月9号,一个平凡而又不平常的日子! IK中文分词 ... -
发布 IK Analyzer 2012 FF 版本
2012-10-23 17:50 25073首先感谢大家对IK分词器的关注。 最近一段时间正式公司事务最 ... -
发布 IK Analyzer 2012 版本
2012-03-08 11:23 36163新版本改进: 支持分词歧义处理 支持数量词合并 词典支持中英 ... -
CSDN发生严重用户账号泄密事件
2011-12-21 19:21 2564之前有在CSDN注册过的兄弟们,注意了。。。 如果你的邮箱, ... -
一个隐形的java int溢出
2011-08-30 09:44 7555故事的背景: 笔者最近在做一个类SNS的项目,其中 ... -
雷军 :互联网创业的葵花宝典
2011-05-04 10:35 3593博主评: 这片博客很短 ... -
Luci-mint站内搜索实测
2011-04-02 16:18 4135关于Luci-mint 服务器硬 ... -
发布 IK Analyzer 3.2.8 for Lucene3.X
2011-03-04 17:49 14251IK Analyzer 3.2.8版本修订 ... -
TIPS - XML CDATA中的非法字符处理
2011-02-17 15:03 3301XML解析过程中,常遇见CDATA中存在非法字符,尤其在火星文 ... -
对Cassandra的初体验
2010-10-13 17:58 9132作为“云计算”时代的架构设计人员而言,不懂K-V库会被 ... -
Spring + iBatis 的多库横向切分简易解决思路
2010-10-11 13:43 93541.引言 笔者最近在做一个互联网的“类SNS”应用,应用 ... -
发布 IK Analyzer 3.2.5 稳定版 for Lucene3.0
2010-09-08 14:43 5822新版本IKAnnlyzer3.2.8已发布! 地址: http ... -
关于Lucene3.0.1 QueryParser的一个错误
2010-05-21 21:33 2128表达式1: 引用 id:"1231231" ... -
发布 IK Analyzer 3.2.3 稳定版 for Lucene3.0
2010-05-15 14:13 6715IK Analyzer 3.2.3版本修订 在3.2.0版 ... -
windows平台上的nginx使用
2010-01-28 17:13 3404转载自:http://nginx.org/en/docs/wi ... -
发布IKAnnlyzer3.2.0稳定版 for Lucene3.0
2009-12-07 09:27 9574最新3.2.5版本已经推出,http://linliangyi ... -
在Tomcat下以JNDI方式发布JbossCache
2009-12-04 10:57 3828前言: 看过JbossCache的开发手册,发现在Jb ... -
Spring AOP小例子
2009-11-16 10:35 3403PS: 要注明一下,这个是转载滴,之前漏了说鸟,汗死 这里给 ... -
ActiveMQ 5.X 与 Tomcat 集成一(JNDI部署)
2009-11-10 15:15 5648原文地址:http://activemq.apache.org ... -
发布IKAnalyzer中文分词器V3.1.6GA
2009-11-08 23:10 11854IKAnalyzer3.2.0稳定版已经发布,支持Lucene ...
相关推荐
- 安装过程简单,只需将IKAnalyzer3.0GA.jar添加到项目的lib目录,配置文件IKAnalyzer.cfg.xml则应放在代码根目录或WEB-INF/classes目录下。 - 对于Lucene用户,可以快速入门通过Java代码示例进行索引和查询操作,...
新版本的IKAnalyzer3.0 则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 1.2IKAnalyzer3.0特性 * 采用了特有的“正向迭代最细粒度切分算法“,具有50万字/秒的高速处理...
总的来说,IKAnalyzer3.0作为一个成熟的中文分词工具,不仅提供了高效的分词性能,还考虑到了实际应用中的灵活性和可扩展性,是Java开发人员处理中文文本的理想选择。通过阅读提供的文档和手册,开发者可以更好地...
IKAnalyzer非常易用的java分词工具。可以自定义扩展词汇。 这个是一个完整的java项目demo。直接可以用,不用再去google下载了。添加了几个自定义词汇,测试好用。 运行ika.java里的main方法即可
从 2006年 12 月推出 1.0 版开始, IKAnalyzer 已经推出了 4 个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。 从 3.0 版本开始,IK 发展为面向 Java 的公用分词...
1. **正向迭代最细粒度切分算法**:IKAnalyzer3.0采用了这一独特算法,能够以每秒60万字的速度进行高效处理,显著提高了分词效率。 2. **多子处理器分析模式**:支持包括英文字母、IP地址、Email、URL、数字(如日期...
IKAnalyzer是一款开源的基于Java语言开发的轻量级中文分词工具包,最早版本于2006年12月发布。作为一个文本分析组件,它最初是作为开源项目Lucene的一部分,综合运用了词典分词和文法分析算法。IKAnalyzer从3.0版本...
新版本的IKAnalyzer3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 IKAnalyzer3.0特性: 采用了特有的“正向迭代最细粒度切分算法“,具有50万字/秒的高速处理能力。 ...
这个分词器最初是基于开源项目Lucene的词典分词和文法分析算法开发的,但到了3.0版本之后,IKAnalyzer发展成为了一个独立于Lucene的通用分词组件,并提供了对Lucene的默认优化实现。 IKAnalyzer2012的结构设计采用...
新版本的IKAnalyzer3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 IKAnalyzer3.0特性: 采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力...
首先,你需要将压缩包中的`IKAnalyzer3.0GA.jar`文件添加到你的项目库目录(通常是`lib`目录)。这个JAR文件包含了IKAnalyzer的核心分词算法和相关实现,确保项目运行时可以找到并加载这些类。如果你的项目是Maven...
#### 一、IKAnalyzer3.0介绍 IKAnalyzer是一款基于Java语言开发的开源中文分词工具包。自2006年12月首次发布以来,它已经经历了三个主要版本的发展。最初,它是为Lucene项目定制的中文分词组件,结合了词典分词和...
### IKAnalyzer中文分词器V2012_U5使用手册关键知识点解析 #### 1. IKAnalyzer2012介绍 IKAnalyzer是一款基于Java语言开发的开源中文分词工具包,自2006年12月发布1.0版以来,已历经多次重大升级。最初作为Lucene...
从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开 始,IK发展为面向Java的公用分词组件,独立于...
新版本的IKAnalyzer3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 IKAnalyzer3.0特性: 采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。...
IKAnalyzer3.0介绍 **IKAnalyzer**是一款基于Java语言编写的轻量级中文分词工具包,自2006年发布1.0版以来,已经经历了多个大版本的迭代。最初作为开源项目Lucene的一部分,它主要服务于该搜索引擎框架,通过结合...
IKAnalyzer3.0介绍 IKAnalyzer是一款专为中文文本处理设计的高性能分词工具包,自2006年首次发布以来,已历经多次迭代升级至V3.1.3版本。最初作为Lucene项目的一部分,IKAnalyzer现已发展成为独立的Java分词组件,...
从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开 始,IK发展为面向Java的公用分词组件,独立于...
### IKAnalyzer中文分词器V3.2.0使用手册:关键知识点解析 #### 1. IKAnalyzer3.X概述 IKAnalyzer是一款专为中文环境设计的高性能、轻量级的分词工具包,由Java语言编写,自2006年12月发布1.0版以来,已历经多次...
年12 月推出1.0 版开始, IKAnalyzer 已经推出了3 个大版本。最初,它是以开源项目 Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IK Analyzer 3.0 则发展为面向Java 的公用分词组件,...