`
linliangyi2007
  • 浏览: 1012562 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

发布 IK Analyzer 2012 版本

阅读更多
新版本改进:
  • 支持分词歧义处理
  • 支持数量词合并
  • 词典支持中英文混合词语,如:Hold住



IK Analyzer 2012特性
  • 采用了特有的“正向迭代最细粒度切分算法“,支持细粒度和智能分词两种切分模式;
  • 在系统环境:Core2 i7 3.4G双核,4G内存,window 7 64位, Sun JDK 1.6_29 64位 普通pc环境测试,IK2012具有160万字/秒(3000KB/S)的高速处理能力。
  • 2012版本的智能分词模式支持简单的分词排歧义处理和数量词合并输出。
  • 采用了多子处理器分析模式,支持:英文字母、数字、中文词汇等分词处理,兼容韩文、日文字符
  • 优化的词典存储,更小的内存占用。支持用户词典扩展定义。特别的,在2012版本,词典支持中文,英文,数字混合词语。



分词效果示例
IK Analyzer 2012版本支持 细粒度切分 和 智能切分,以下是两种切分方式的演示样例。

文本原文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:
张三说的确实在理

智能分词结果:
张三 | 说的 | 确实 | 在理

最细粒度分词结果:
张三 | 三 | 说的 | 的确 | 的 | 确实 | 实在 | 在理

文本原文3
公路局正在治理解放大道路面积水问题

智能分词结果:
公路局 | 正在 | 治理 | 解放 | 大道 | 路面 | 积水 | 问题

最细粒度分词结果:
公路局 | 公路 | 路局 | 正在 | 治理 | 理解 | 解放 | 放大 | 大道 | 道路 | 路面 | 面积 | 积水 | 问题

文本原文4
据路透社报道,印度尼西亚社会事务部一官员星期二(29日)表示,日惹市附近当地时间27日晨5时53分发生的里氏6.2级地震已经造成至少5427人死亡,20000余人受伤,近20万人无家可归。

智能分词结果:
据 | 路透社 | 报道 | 印度尼西亚 | 社会 | 事务部 | 一 | 官员 | 星期二 | 29日 | 表示 | 日 | 惹 | 市 | 附近 | 当地时间 | 27日 | 晨 | 5时 | 53分 | 发生 | 的 | 里氏 | 6.2级 | 地震 | 已经 | 造成 | 至少 | 5427人 | 死亡 | 20000 | 余人 | 受伤 | 近 | 20 | 万人 | 无家可归

最细粒度分词结果:
据 | 路透社 | 路透 | 社 | 报道 | 印度尼西亚 | 印度 | 尼 | 西亚 | 社会事务 | 社会 | 事务部 | 事务 | 部 | 一 | 官员 | 星期二 | 星期 | 二 | 29 | 日 | 表示 | 日 | 惹 | 市 | 附近 | 当地时间 | 当地 | 时间 | 27 | 日 | 晨 | 5 | 时 | 53 | 分发 | 分 | 发生 | 发 | 生 | 的 | 里氏 | 6.2 | 级 | 地震 | 已经 | 造成 | 至少 | 5427 | 人 | 死亡 | 20000 | 余人 | 受伤 | 近 | 20 | 万人 | 万 | 人 | 无家可归


GoogleCode下载:
http://code.google.com/p/ik-analyzer/downloads/list

分享到:
评论
39 楼 linliangyi2007 2012-05-09  
chick56 写道
很好用啊, 谢谢你.

在遍历一堆关键字搜索的时候, 用TermQuery, 搜索的中文结果不是精确匹配的.

比如句子"成绩第十一名的同学是?"

在关键字词典中找, "第十" "第十一",

遍历的时候到"第十" 就认为命中了, 无法匹配上"第十一",

就是说词典中长词如果包含短词, 短词会被匹配上, 从而匹配不了长词.

请问这是query时的问题吗? 怎么精确匹配中文词呢?

代码:
public Dict findMatchDict(String dictName, IndexSearcher searcher) {
		
		Dict dict = null;
		
		List<Dict> dL = dictDao.findDict(dictName);
		try {
			if (Util.isList(dL)) {
				for (Dict d : dL) {
					Term t = new Term("content", d.getDictname());
					Query query = new TermQuery(t);
					TopDocs topDocs = searcher.search(query, 1);
					if (topDocs.totalHits > 0) {
						dict = d;
						break;
					}
				}
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return dict;
	}


谢谢.


这个与你在建索引时候使用的分词策略有关,如果索引的时候使用最大切分方式,就可以避免这种情况,但是会带来小词元搜索不到大词元的问题。
38 楼 chick56 2012-05-09  
很好用啊, 谢谢你.

在遍历一堆关键字搜索的时候, 用TermQuery, 搜索的中文结果不是精确匹配的.

比如句子"成绩第十一名的同学是?"

在关键字词典中找, "第十" "第十一",

遍历的时候到"第十" 就认为命中了, 无法匹配上"第十一",

就是说词典中长词如果包含短词, 短词会被匹配上, 从而匹配不了长词.

请问这是query时的问题吗? 怎么精确匹配中文词呢?

代码:
public Dict findMatchDict(String dictName, IndexSearcher searcher) {
		
		Dict dict = null;
		
		List<Dict> dL = dictDao.findDict(dictName);
		try {
			if (Util.isList(dL)) {
				for (Dict d : dL) {
					Term t = new Term("content", d.getDictname());
					Query query = new TermQuery(t);
					TopDocs topDocs = searcher.search(query, 1);
					if (topDocs.totalHits > 0) {
						dict = d;
						break;
					}
				}
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return dict;
	}


谢谢.
37 楼 linliangyi2007 2012-04-23  
zjluxinpin 写道
林兄,我用IKVM工具把lucene 3.5以及IK2012版的转成.net框架的dll,我想请问一下,IK如何配置扩展词典或者说配置文件是不是跟dll放在同一目录是否就可以了?

这个是需要实践的,我本人没做过这样的转换,给不了答案,抱歉。
36 楼 zjluxinpin 2012-04-22  
林兄,我用IKVM工具把lucene 3.5以及IK2012版的转成.net框架的dll,我想请问一下,IK如何配置扩展词典或者说配置文件是不是跟dll放在同一目录是否就可以了?
35 楼 wordall1101 2012-04-20  
wordall1101 写道
刚接触中文分词,下载了IKAnalyzer2012_u4和IKAnalyzer2012_SRC包;加载自定义字典使用IKAnalyzer2012_u4中的IKSegmenter分出来的结果和IKAnalyzer2012_SRC中的IKSegmenter分出来的结果不一样;
1、IKAnalyzer2012_u4加载字典后不起作用,加自定义字典和没有加效果一样;
2、IKAnalyzer2012_SRC加载字典后效果明显,但遇到量词的情况下,一个词还是会被分成两个词如:春夏款会被分成“春夏”和“款”


原因找到了,是有编码导致自定义字典没有起作用;使用api添加字典就好了
Configuration config = Configuration.getInstance();
Dictionary.initial(config).getSingleton().addWords(words);

另外遇到¥65.00这种该怎么处理?
34 楼 linliangyi2007 2012-04-18  
boss.c 写道
lin,请问词典可以不重启 更新吗 thx!


可以通过API动态添加。

我的建议是,如果你需要大量动态词典,请将词典存在数据库中,在系统初始化阶段,通过分词器的API方式加入词典,这样对词表的控制是全动态的。

我们自己的搜索系统就是这样做的。
33 楼 boss.c 2012-04-18  
lin,请问词典可以不重启 更新吗 thx!
32 楼 linliangyi2007 2012-04-17  
亦梦亦真 写道
林大牛您好,我记得以前在索引的时候,索引某些字段的时候使用的是
Query q = IKQueryParser.parseMultiField(field, keyword);
这个方法,但是新版本这上个方法不存在了,请问,是用哪个方法替换了呢?谢谢


IK2012版本中不再使用IKQueryParser来处理搜索关键词
由于2012版本已经带有排除歧义的能力,直接使用Lucene 的QueryParser和查询表达式即可
31 楼 亦梦亦真 2012-04-16  
林大牛您好,我记得以前在索引的时候,索引某些字段的时候使用的是
Query q = IKQueryParser.parseMultiField(field, keyword);
这个方法,但是新版本这上个方法不存在了,请问,是用哪个方法替换了呢?谢谢
30 楼 亦梦亦真 2012-04-16  
请问是否有其它的可下载地址,这个下载地址又打不开了
29 楼 boss.c 2012-04-14  
林兄,对lexemepath理解不来,可以麻烦举个例子吗 thx!
28 楼 linliangyi2007 2012-04-10  
wenskys 写道
如果IK能够实现对英文和数字的自定义词典就好了,期待哥们下一个版本可以实现。


要实现你的需求并不难,简单修改源码就好,但是将空格都纳入词典匹配,将严重影响分词性能。

目前IK的功能主要针对通用性的搜索,所以不会在以后的版本做上述的修改,你需要一个定制版的IK。

开源的好处就是你可以修改它,不是嘛!!
27 楼 wenskys 2012-04-10  
如果IK能够实现对英文和数字的自定义词典就好了,期待哥们下一个版本可以实现。
26 楼 wenskys 2012-04-10  
linliangyi2007 写道
wenskys 写道
linliangyi2007兄,想请教个问题。我使用了我自己的分词,主要是英文的。我的dic按照您的源码里那样子写成如下显示:
Barb Jungr
Allan Taylor
Carol Kidd
John Di Martino
....
运行时有提示:加载扩展词典:/my_music.dic。但是我想看Barb Jungr的分词结果并没有我按照我定义的那样展示Barb Jungr,而是Barb和Jungr,请问我哪里错了呢?在java中的分词如下所示:
QueryParser qp = new QueryParser(Version.LUCENE_34, fieldName,analyzer);
qp.setDefaultOperator(QueryParser.AND_OPERATOR);
Query query = qp.parse(keyword);
System.out.println(query.toString());


你说你使用了自己的分词?我不是很明白你的意思是用了自己的词典还是自己写了分词器。

这里假设你使用IK,并使用了自定义词典,那么IK对空格符是不会在字典中匹配的,你的词语中含有空格,这个会造成词典匹配的失效。使用空格链接英文,不符合英文分词规则。
IK对英文处理使用单独的子分词器。

linliangyi2007兄,您说的挺对的,就是你假设的那种,表达不太好,请见谅下。
是这样子的,我想用IK实现对中文分词,对英文不分词。请问如何实现呢。因为我们现在检索的主要内容是英文歌曲以及外国人的名字。谢啦。
25 楼 linliangyi2007 2012-04-10  
wenskys 写道
linliangyi2007兄,想请教个问题。我使用了我自己的分词,主要是英文的。我的dic按照您的源码里那样子写成如下显示:
Barb Jungr
Allan Taylor
Carol Kidd
John Di Martino
....
运行时有提示:加载扩展词典:/my_music.dic。但是我想看Barb Jungr的分词结果并没有我按照我定义的那样展示Barb Jungr,而是Barb和Jungr,请问我哪里错了呢?在java中的分词如下所示:
QueryParser qp = new QueryParser(Version.LUCENE_34, fieldName,analyzer);
qp.setDefaultOperator(QueryParser.AND_OPERATOR);
Query query = qp.parse(keyword);
System.out.println(query.toString());


你说你使用了自己的分词?我不是很明白你的意思是用了自己的词典还是自己写了分词器。

这里假设你使用IK,并使用了自定义词典,那么IK对空格符是不会在字典中匹配的,你的词语中含有空格,这个会造成词典匹配的失效。使用空格链接英文,不符合英文分词规则。
IK对英文处理使用单独的子分词器。
24 楼 wenskys 2012-04-08  
先谢谢了,期待您的回复。
23 楼 wenskys 2012-04-08  
linliangyi2007兄,想请教个问题。我使用了我自己的分词,主要是英文的。我的dic按照您的源码里那样子写成如下显示:
Barb Jungr
Allan Taylor
Carol Kidd
John Di Martino
....
运行时有提示:加载扩展词典:/my_music.dic。但是我想看Barb Jungr的分词结果并没有我按照我定义的那样展示Barb Jungr,而是Barb和Jungr,请问我哪里错了呢?在java中的分词如下所示:
QueryParser qp = new QueryParser(Version.LUCENE_34, fieldName,analyzer);
qp.setDefaultOperator(QueryParser.AND_OPERATOR);
Query query = qp.parse(keyword);
System.out.println(query.toString());
22 楼 BlackWing 2012-03-22  
关于词典,请问词典的词语编排,有什么特别要求吗?除了无BOM之外,例如,同义词,短的放前:
海贼
海贼王
21 楼 woshilao5a 2012-03-21  
牛人,能把ik-analyzer支持下maven吗?

我研究半天了,加入项目时发现不支持maven。,欲哭无泪啊。

求解决,谢谢啊!
20 楼 ningye 2012-03-21  
ningye 写道
您好,请教个问题,关于@+中文一起的分词,类似微博中的 @微博昵称,现在的分词结果@会直接被忽略掉(@+英文或者数字是可以的),怎样修改能让@+中文的情况下,@不丢失,谢谢!


用比较笨的方法解决了,在分词和查询的地方加上@+中文这种情况的处理,实现了需求。

相关推荐

    IKAnalyzer2012完整分发包

    2. IKAnalyzer2012.jar(主jar包) 3. IKAnalyzer.cfg.xml(分词器扩展配置文件) 4. stopword.dic(停止词典) 5. LICENSE.TXT ; NOTICE.TXT (apache版权申明) 它的安装部署十分简单,将 IKAnalyzer2012.jar ...

    IKAnalyzer2012FF_hf1.zip

    标题中的"IKAnalyzer2012FF_hf1.zip"指的是IK Analyzer的2012年最终版(Final)的高频率更新1(Hot Fix 1)。IK Analyzer是一款开源的、基于Java语言开发的轻量级中文分词器,主要用于Java环境下对中文文本的分词...

    IKAnalyzer2012_u6中文分词器jar包

    IKAnalyzer2012_u6中文分词器jar包 IKAnalyzer2012_u6中文分词器jar包 IKAnalyzer2012_u6中文分词器jar包 IKAnalyzer2012_u6中文分词器jar包 IKAnalyzer2012_u6中文分词器jar包

    IK Analyzer 2012FF_hf1.7z

    "2012FF_hf1.7z" 是IK Analyzer的一个特定版本,可能包含了优化和改进,适应了2012年及之后的技术需求。 在Solr中,分词器扮演着至关重要的角色。它们负责将输入的中文文本分解成一系列的词汇单元,这些单元通常被...

    IKAnalyzer2012_u6中文分词器以及手册正式版.zip

    IKAnalyzer2012_u6中文分词器以及手册正式版 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2017/10/29 1:41 doc -a---- 2017/10/29 1:41 414 IKAnalyzer.cfg.xml -a---- 2017/10/29 1...

    IKAnalyzer2012.jar

    IKAnalyzer2012.jar 中文分词包

    IKanalyzer2012.rar

    IKanalyzer2012是一款基于Java语言的开源中文分词器,主要用于处理中文文本的分词任务。在中文搜索引擎和自然语言处理领域,分词是基础且关键的一环,因为中文没有明显的空格来区分词汇,需要通过特定的算法进行切分...

    IKAnalyzer2012FF_u1.jar

    使用IK分词器,应为该集群使用到的solr版本为4.10.3-cdh5.7.5,所以使用的 IK 包为IKAnalyzer2012FF_u1.jar,如果是3x的solr,使用IKAnalyzer2012_u6.jar solr-4.10.3下载地址:...

    IKAnalyzer2012FF_u1.jar下载

    IKAnalyzer2012FF_u1.jar 是一款广泛应用于Java环境中的中文分词库,尤其在搜索引擎和文本分析领域有着重要的应用。这个jar包包含了IK Analyzer的最新版本,即2012FF_u1更新版,它是一款开源的、高性能的中文分词...

    IKAnalyzer2012.zip

    IKAnalyzer2012是一个专为中文处理设计的开源分词工具,主要应用于搜索引擎、文本分析和信息检索等领域。这个工具包的核心是IKAnalyzer2012.jar文件,它包含了IK Analyzer的所有功能和实现,是一个Java编写的库,...

    IK Analyzer 2012FF_hf1和IKAnalyzer2012_u6

    标题提到的 "IK Analyzer 2012FF_hf1" 和 "IKAnalyzer2012_u6" 都是该分词器的不同版本。 IK Analyzer 2012FF_hf1 是2012年发布的HotFix 1更新版,"FF" 可能代表 "Final Fix",意味着这是对之前版本的最终修复,而 ...

    IKAnalyzer2012_u6

    IKAnalyzer2012_u6是一款基于Java语言开发的全文检索分析器,主要应用于中文信息处理,如搜索引擎、文本挖掘等场景。这个版本是u6更新,意味着它是IKAnalyzer的一个升级版,修复了前一版本可能存在的问题,并可能...

    IKAnalyzer2012_FF_hf1.jar

    解决lucene4.0与IKAnalyzer的冲突。解决Exception in thread "main" java.lang.VerifyError: class org.wltea.analyzer.lucene.IKAnalyzer overrides final method ...本资源包含了IKAnalyzer2012_FF_hf1.jar及源码

    IKAnalyzer2012.jar.zip

    这个“IKAnalyzer2012.jar.zip”压缩包包含了IKAnalyzer的两个不同版本的jar包,分别是IKAnalyzer2012.jar和IKAnalyzer2012FF_u1.jar。 1. **IKAnalyzer简介** - IKAnalyzer是由国人开发的一款高性能的中文分词...

    IK Analyzer 2012FF_hf1及IK Analyzer 2012FF_hf1_source位于GOOGLE_CODE的资源转发

    2012FF_hf1 版本是IK Analyzer的一个特定版本,HF1代表Hot Fix 1,即该版本是对2012FF版本的小幅修正版。 IK Analyzer 2012FF_hf1 版本在原有的基础上进行了性能优化和错误修复,确保了其在处理中文文本时的准确性...

    IKAnalyzer2012_u3

    IK Analyzer 2012 IKAnalyzer2012_u3 IK Analyzer 2012 IKAnalyzer2012_u3 IK Analyzer 2012 IKAnalyzer2012_u3

    ikanalyzer2012ff_u1

    ikanalyzer2012ff_u1 是一个专为Solr 4.10.3版本设计的IK分词器插件。在中文信息检索和文本分析领域,分词器扮演着至关重要的角色,它能够将连续的汉字序列切分成具有语义意义的词语单元,便于后续的索引和查询操作...

    IK Analyzer 2012FF_hf1.zip

    从 2006年 12 月推出 1.0 版开始,IKAnalyzer 已经推出了 4 个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从 3.0 版本开始,IK 发展为面向 Java 的公用分词组件,...

Global site tag (gtag.js) - Google Analytics