分词器对英文的支持是非常好的。

一般分词经过的流程:

1)切分关键词

2)去除停用词

3)把英文单词转为小写

但是老外写的分词器对中文分词一般都是单字分词,分词的效果不好。

国人林良益写的IK Analyzer应该是最好的Lucene中文分词器之一,而且随着Lucene的版本更新而不断更新,目前已更新到IK Analyzer 2012版本。

IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。到现在,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。在2012版本中,IK实现了简单的分词歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化。

在系统环境:Core2 i7 3.4G双核,4G内存,window 7 64位, Sun JDK 1.6_29 64位 普通pc环境测试,IK2012具有160万字/秒(3000KB/S)的高速处理能力。

特别的,在2012版本,词典支持中文,英文,数字混合词语。

IK Analyzer 2012版本的分词效果示例:

IK Analyzer2012版本支持 细粒度切分 和 智能切分。

我们看两个演示样例:

1)文本原文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)文本原文2:

张三说的确实在理。

智能分词结果:

张三 | 说的 | 确实 | 在理

最细粒度分词结果:

张三 | 三 | 说的 | 的确 | 的 | 确实 | 实在 | 在理

IKAnalyzer的使用

1)下载地址:

2)兼容性:

IKAnalyzer 2012版本兼容Lucene3.3以上版本。

3)安装部署:

十分简单,只需要将IKAnalyzer2012.jar引入项目中就可以了。对于"的"、"了"、"着"之类的停用词,它有一个词典stopword.dic。把stopword.dic和IKAnalyzer.cfg.xml复制到class根目录就可以启用停用词功能和扩展自己的词典。

4)测试例子:

新建一个Java Project,引入Lucene所需的jar文件和IKAnalyzer2012.jar文件,把stopword.dic和IKAnalyzer.cfg.xml复制到class根目录,建立一个扩展词典ext.dic和中文停用词词典chinese_stopword.dic。

IKAnalyzer2012发布包自带的stopword.dic里面存的是英文的停用词。所以我们新建一个chinese_stopword.dic,用来存放中文停用词。chinese_stopword.dic需要使用UTF-8编码。词典中,每个中文词汇独占一行。

chinese_stopword.dic内容格式:

IKAnalyzer.cfg.xml:

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

4 IK Analyzer 扩展配置

5

6 ext.dic;

7

8

9 stopword.dic;chinese_stopword.dic

10

11

可以配置多个词典文件,文件使用";"号分隔。文件路径为相对java包的起始根路径。

扩展词典ext.dic需要为UTF-8编码。

ext.dic内容:

我把"2012"作为一个词,"欧洲杯四强赛"作为一个词。

测试分词代码:

1 packagecom.cndatacom.lucene.test;2

3 importjava.io.StringReader;4

5 importorg.apache.lucene.analysis.Analyzer;6 importorg.apache.lucene.analysis.TokenStream;7 importorg.apache.lucene.analysis.tokenattributes.CharTermAttribute;8 importorg.junit.Test;9 importorg.wltea.analyzer.lucene.IKAnalyzer;10

11

12 /**

13 * IKAnalyzer 分词器测试14 *@authorLuxh15 */

16 public classIKAnalyzerTest {17

18 @Test19 public void testIKAnalyzer() throwsException {20

21 String keyWord = "2012年欧洲杯四强赛";22

23 IKAnalyzer analyzer = newIKAnalyzer();24

25 //使用智能分词

26 analyzer.setUseSmart(true);27

28 //打印分词结果

29 printAnalysisResult(analyzer,keyWord);30

31 }32

33 /**

34 * 打印出给定分词器的分词结果35 *@paramanalyzer 分词器36 *@paramkeyWord 关键词37 *@throwsException38 */

39 private void printAnalysisResult(Analyzer analyzer, String keyWord) throwsException {40 System.out.println("当前使用的分词器:" +analyzer.getClass().getSimpleName());41 TokenStream tokenStream = analyzer.tokenStream("content", newStringReader(keyWord));42 tokenStream.addAttribute(CharTermAttribute.class);43 while(tokenStream.incrementToken()) {44 CharTermAttribute charTermAttribute = tokenStream.getAttribute(CharTermAttribute.class);45 System.out.println(newString(charTermAttribute.buffer()));46 }47 }48 }

打印出来的分词结果:

可以看到”2012“作为一个词,“欧洲杯四强赛”也是作为一个词,停用词”年“已被过滤掉。

java lucene 中文分词_Lucene的中文分词器IKAnalyzer相关推荐

  1. java盘古分词_.NET使用Lucene.Net和盘古分词类库实现中文分词

    .NET中文分词实现http://http:// 使用 Lucene.Net.dll http://www.apache.org/dist/incubator/lucene.net/binaries/ ...

  2. java lucene 分词器_中文分词器—IKAnalyzer

    对于lucene自带分词器,没有一个能很好的处理中文的分词,因此,我们使用的分词的时候,往往会使用国人开发的一个分词器IKAnalyzer,使用非常简单,只需要将jar包拷入即可. 如果需要扩展词库或 ...

  3. 与Lucene 4.10配合的中文分词比较

    比较目的 衡量每种分词的指标,内存消耗.CPU消耗,得到一个在Lucene中比较好的分词版本. 分词源代码介绍 paoding: 庖丁解牛最新版在 https://code.google.com/p/ ...

  4. 与Lucene 4.10配合的中文分词比较(转)

    比较目的 衡量每种分词的指标,内存消耗.CPU消耗,得到一个在Lucene中比较好的分词版本. 分词源代码介绍 paoding: 庖丁解牛最新版在 https://code.google.com/p/ ...

  5. java 庖丁解牛中文分词_庖丁解牛中文分词包

    http://code.google.com/p/paoding/ Paoding Analysis摘要 Paoding's Knives 中文分词具有极 高效率 和 高扩展性 .引入隐喻,采用完全的 ...

  6. java调用b超_java开源中文分词-jcseg

    jcseg是使用Java开发的一个中文分词器,使用流行的mmseg算法实现. 1.目前最高版本:jcseg 1.7.1. 兼容最高版本的lucene. 2.mmseg四种过滤算法,分词准确率达到了98 ...

  7. java中文分词工具_中文分词工具(LAC) 试用笔记

    一.背景 笔者2年前写过一篇<PHP使用elasticsearch搜索安装及分词方法>的文章,记录了使用ES的分词的实现步骤,最近又需要用到分词,在网上发现一个百度的中文分词项目,中文词法 ...

  8. java中文分词工具_中文分词常用方法简述

    中文分词 就是将一句话分解成一个词一个词,英文中可以用空格来做,而中文需要用一些技术来处理. 三类分词算法: 1. 基于字符串匹配: 将汉字串与词典中的词进行匹配,如果在词典中找到某个字符串,则识别出 ...

  9. java 中文分词 词性标注_ICTCLAS 中科院分词系统 代码 注释 中文分词 词性标注(转)...

    中科院分词系统概述 这几天看完了中科院分词程序的代码,现在来做一个概述,并对一些关键的数据结构作出解释 〇.总体流程 考虑输入的一句话,sSentence="张华平欢迎您" 总体流 ...

最新文章

  1. sqoop操作之HIVE导出到ORACLE
  2. linux定时工具,Linux定时器工具
  3. Android界面开发问题总结
  4. vs2005常用调试快捷键 (转载)
  5. Necessary configuration to get Smart business tile work in UXT/928
  6. arm 饱和指令_ARM内核全解析,从ARM7,ARM9到CortexA7,A8,A9,A12,A15到CortexA53,A57
  7. Android 系统性能优化(50)---dex2oat对应用启动性能的影响
  8. 无线网络的网速很慢_手机信号强,网速慢?你这样设置,网速如飞!快到不可思议...
  9. springcloud微服务系列之服务注册与发现组件Eureka
  10. move.js操作CSS3动画
  11. ArcMAP TIN与栅格DEM的坡度坡向对比分析
  12. c xaml语言教程,Xamarin XAML语言教程基础语法篇大学霸
  13. 机器学习之实战matlab神经网络工具箱
  14. 【Web前端】笔试题含解析
  15. [GNSS] GNSS原理:多模导航卫星精密定轨理论
  16. 数学模型预测模型_改进著名的nfl预测模型
  17. Spring的配置项aspectj-autoproxy
  18. win7批量修改计算机名,文件批量改名助手
  19. 在 Linux 中查找用户帐户和登录详细信息的 11 种方法
  20. Android画图方式

热门文章

  1. 基于Matlab生成并可视化多架飞机轨迹仿真(附源码)
  2. JAVA建行银企直连报文加解密
  3. 什么是主成分分析?经典案例解析变量降维
  4. 教程:群体遗传学方法分析玉米的驯化与改良
  5. zotero 文献格式 深圳大学硕士论文格式
  6. ssh 配置及使用(ssh-keygen,ssh-copy-id,known_hosts)
  7. vue 图片拼接反写展示
  8. CAXA2019绘制抛物线
  9. CMS(内容/文章 管理系统)=每日进度
  10. 2014巴西世界杯小组赛赛程