为什么要使用lucene中文分词器

在 lucene 的开发过程中,常常会遇到分词时中文识别的问题,lucene提供了 lucene-analyzers-common-5.0.0.jar包来支持分词,但多的是对英语,法语,意大利语等语言的支持,对中文的支持不太友好,因此需要引入中文分词器。

  • jcseg中文分词器

jcseg 是使用 Java 开发的一款开源的中文分词器, 使用 mmseg 算法. 分词准确率高达
98.4%, 支持中文人名识别, 同义词匹配, 停止词过滤等。

https://gitee.com/lionsoul/jcseg

jcseg 支持三种切分模式:
(1). 简易模式:FMM算法,适合速度要求场合。

(2). 复杂模式-MMSEG四种过滤算法,具有较高的岐义去除,分词准确率达到了98.41%。

(3). 检测模式:只返回词库中已有的词条,很适合某些应用场合。(1.9.4开始)

就分词效率而言,简易模式速度最快

jcseg词库配置丰富,自我感觉功能最强大,详见jcseg开发文档;

jcseg现版本不兼容lucene5,我修改了其analyzer包,相关示例代码如下

package com.olive.analyzer;import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.junit.Test;
import org.lionsoul.jcseg.analyzer.JcsegAnalyzer5X;
import org.lionsoul.jcseg.core.JcsegTaskConfig;public class JcsegAnalyzerTest {@Testpublic void tokenTest() {Analyzer analyzer = new JcsegAnalyzer5X(JcsegTaskConfig.SIMPLE_MODE);//非必须(用于修改默认配置): 获取分词任务配置实例JcsegAnalyzer5X jcseg = (JcsegAnalyzer5X) analyzer;JcsegTaskConfig config = jcseg.getTaskConfig();//追加同义词到分词结果中, 需要在jcseg.properties中配置jcseg.loadsyn=1config.setAppendCJKSyn(true);//追加拼音到分词结果中, 需要在jcseg.properties中配置jcseg.loadpinyin=1config.setAppendCJKPinyin(true);//更多配置, 请查看com.webssky.jcseg.core.JcsegTaskConfig类String words = "中华人民共和国";TokenStream stream = null;try {stream = analyzer.tokenStream("myfield", words);stream.reset();CharTermAttribute  offsetAtt = stream.addAttribute(CharTermAttribute.class);while (stream.incrementToken()) {System.out.println(offsetAtt.toString());}stream.end();} catch (IOException e) {e.printStackTrace();}finally{try {if(stream != null){stream.close();}} catch (IOException e) {e.printStackTrace();}}}
}

运行结果

中华
人民共和国
  • IKAnalyzer

IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。

https://github.com/blueshen/ik-analyzer

采用了特有的“正向迭代最细粒度切分算法“,支持细粒度和智能分词两种切分模式;

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

2012版本的智能分词模式支持简单的分词排歧义处理和数量词合并输出。

采用了多子处理器分析模式,支持:英文字母、数字、中文词汇等分词处理,兼容韩文、日文字符

优化的词典存储,更小的内存占用。支持用户词典扩展定义。特别的,在2012版本,词典支持中文,英文,数字混合词语。

IK Analyzer支持细粒度切分和智能切分两种分词模式;

在细粒度切分下,词语分解到很细的粒度,比如“一个苹果”,会被切分成如下

一个
一
个
苹果

在智能切分模式下,则会分词如下:

一个
苹果

和jcseg相同,现版本的IK Analyzer只兼容至lucene4版本,我修改了相关源码,使其提供了对lucene5的支持。

IK Analyzer示例代码如下:

package com.olive.analyzer;import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.junit.Test;
import org.wltea.analyzer.lucene.IKAnalyzer;public class IKAnalyzerTest {@Testpublic void tokenTest() {Analyzer analyzer = new IKAnalyzer();String words = "中华人民共和国";TokenStream stream = null;try {stream = analyzer.tokenStream("myfield", words);stream.reset();CharTermAttribute  offsetAtt = stream.addAttribute(CharTermAttribute.class);while (stream.incrementToken()) {System.out.println(offsetAtt.toString());}stream.end();} catch (IOException e) {e.printStackTrace();}finally{try {stream.close();} catch (IOException e) {e.printStackTrace();}}}
}

运行结果

中华人民共和国
中华人民
中华
华人
人民共和国
人民
共和国
共和
国

分享&在看

中文分词器 jcseg 和 IK Analyzer相关推荐

  1. 搜索引擎学习(四)中文分词器

    一.简介 分词原理 Reader读取数据流 数据经过第一个分词器将大写转换小写 数据经过第二个分词器根据空格分割成一个一个的单词 数据经过第三个分词器把标点符号,介词等剔除 经过三次过滤,生成若干语汇 ...

  2. IKAnalyzer 中文分词器

    IK Analyzer 2012 介绍 IK Analyzer 是一个开源的,基亍 java 语言开发的轻量级的中文分词工具包.从 2006 年 12 月推出 1.0 版开始, IKAnalyzer ...

  3. elasticsearch教程--中文分词器作用和使用

    概述   本文都是基于elasticsearch安装教程 中的elasticsearch安装目录(/opt/environment/elasticsearch-6.4.0)为范例 环境准备 ·全新最小 ...

  4. solr mysql 分词_solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)...

    基本说明 Solr是一个开源项目,基于Lucene的搜索服务器,一般用于高级的搜索功能: solr还支持各种插件(如中文分词器等),便于做多样化功能的集成: 提供页面操作,查看日志和配置信息,功能全面 ...

  5. 架构师成长记_第八周_11_ES- ik中文分词器与自定义中文词库

    文章目录 ik中文分词器 1. 安装ik中文分词器(7.4.2版本) 2. 使用ik中文分词器 2.1 分词器: ik_max_word 2.1 分词器: ik_smart 自定义中文词库 自定义词库 ...

  6. IK Analyzer 中文分词器

    IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包.从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本.最初,它是以开源项目Luence为应用 ...

  7. 采访IK Analyzer 中文分词器开源项目作者林良益(十三)

    转自: http://www.iteye.com/magazines/43-ik-analyzer 众所周知,全文搜索几乎已经成为每个网站的必须提供的基本功能之一,用Lucene构造一个"索 ...

  8. 如何在基于Lucene的中文分词器中添加自定义词典(如Paoding、mmseg4j、IK Analyzer)...

    如何在基于Lucene的中文分词器中添加自定义词典(如Paoding.mmseg4j.IK Analyzer) 2013-07-08 21:54:29|  分类: 计算机 |字号 订阅 1. 使用Pa ...

  9. 【Elasticsearch】Elasticsearch analyzer 中文 分词器

    1.概述 转载: https://blog.csdn.net/tzs_1041218129/article/details/77887767 分词器首先看文章:[Elasticsearch]Elast ...

最新文章

  1. usaco Arithmetic Progressions(看了题解)
  2. Codeforces 446C —— DZY Loves Fibonacci Numbers(线段树)
  3. python thrift demo
  4. android webview tel:,Android WebView“tel:”链接显示未找到网页
  5. VS2017 新建项目没有QT
  6. Windows下Faster R-CNN 配置/Matlab版本编译
  7. 系统10网络找不到别人的计算机,分享Win10在局域网中找不到其他电脑的解决步骤...
  8. java编程基础码_【Java编程的逻辑】编程基础
  9. eda多功能数字钟课程设计_适用多功能数字钟(EDA技术课程设计)
  10. 数据结构课程设计——学生成绩查询与分析系统(简单详细版,含讲解)
  11. PPT使用技巧——绘制圆角曲线
  12. java宠物店管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  13. Matlab 边界提取
  14. sql server商品进销存管理系统设计及实现的数据库源代码
  15. 华为 面试 c语言 编程题,传说中华为的面试编程题-php 创建ecs-WinFrom控件库|.net开源控件库|HZHControls官网...
  16. 游戏笔记本电脑推荐 多功能游戏本你见过吗?
  17. matlab中Svmtrain和Svmpredict的用法
  18. android陀螺仪判断手机旋转方向,unity 陀螺仪判断手机方向
  19. BMP图像的读写处理
  20. linux 时间戳转换/dmesg 时间转换

热门文章

  1. 超详细教你Dreamweaver如何绑定GitHub仓库
  2. POP3与SMTP协议
  3. linux跳板机权限管理,开源跳板机(堡垒机)Jumpserver v0.2.0 使用说明
  4. c 语言程序设计文献,C语言程序设计毕业论文.doc
  5. 文摘:跑了1135 家制造企业,我终于明白它们是怎么把自己玩死的了
  6. XSS小游戏通关题解
  7. 称重软件-汽车衡称重防作弊系统整体解决方案
  8. rv1108 MAC 接口的简介
  9. 兰亭集势股价疯涨背后:物流成外贸B2C发展掣肘
  10. 泽雷随:择善而从;山风蛊:拯弊治乱