Lucene的中文分词器IKAnalyzer

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

  一般分词经过的流程:

  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)下载地址:

  GoogleCode开源项目:http://code.google.com/p/ik-analyzer/

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

  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:

<?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">ext.dic;</entry>

<!--用户可以在这里配置自己的扩展停止词字典-->

<entry key="ext_stopwords">stopword.dic;chinese_stopword.dic</entry>

</properties>

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

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

  ext.dic内容:

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

  测试分词代码:

package com.cndatacom.lucene.test;

import java.io.StringReader;

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 {

@Test

public void testIKAnalyzer() throws Exception {

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

IKAnalyzer analyzer = new IKAnalyzer();

//使用智能分词

analyzer.setUseSmart(true);

//打印分词结果

printAnalysisResult(analyzer,keyWord);

}

private void printAnalysisResult(Analyzer analyzer, String keyWord) throws Exception {

System.out.println("当前使用的分词器:" + analyzer.getClass().getSimpleName());

TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(keyWord));

tokenStream.addAttribute(CharTermAttribute.class);

while (tokenStream.incrementToken()) {

CharTermAttribute charTermAttribute = tokenStream.getAttribute(CharTermAttribute.class);

System.out.println(new String(charTermAttribute.buffer()));

}

}

}

打印出来的分词结果:

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

时间: 2024-08-25 08:29:28

Lucene的中文分词器IKAnalyzer的相关文章

solr中文分词器IK-analyzer安装

solr本身对中文是不支持的,所以需要下载中文分词器IK-analyzer  下载地址https://code.google.com/archive/p/ik-analyzer/downloads.自己本地系统是centos6.7,所以下载了https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ik-analyzer/IK%20Analyzer%202012FF_hf1.zip 安装步骤:

Solr配置中文分词器IKAnalyzer及增删改查调用

一.配置IKAnalyzer中文分词器 Solr 版本5.2.1 IKAnalyzer2012_u6.jar报错 ,用IKAnalyzer2012_FF_hf1.jar 替换可解决 解决lucene4.0与IKAnalyzer的冲突.解决Exception in thread "main" java.lang.VerifyError: class org.wltea.analyzer.lucene.IKAnalyzer overrides final method tokenStrea

solr 中文分词器IKAnalyzer和拼音分词器pinyin

solr分词过程: Solr Admin中,选择Analysis,在FieldType中,选择text_en 左边框输入 "冬天到了天气冷了小明不想上学去了",点击右边的按钮,发现对每个字都进行分词.这不符合中国人的习惯. solr6.3.0自带中文分词包,在 \solr-6.3.0\contrib\analysis-extras\lucene-libs\lucene-analyzers-smartcn-6.3.0.jar,但是不能自定义词库 好在我们有IKAnalyzer(已无人更新

搜索引擎系列四:Lucene提供的分词器、IKAnalyze中文分词器集成

一.Lucene提供的分词器StandardAnalyzer和SmartChineseAnalyzer 1.新建一个测试Lucene提供的分词器的maven项目LuceneAnalyzer 2. 在pom.xml里面引入如下依赖 <!-- lucene 核心模块 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId&

solr4.7中文分词器(ik-analyzer)配置

solr本身对中文分词的处理不是太好,所以中文应用很多时候都需要额外加一个中文分词器对中文进行分词处理,ik-analyzer就是其中一个不错的中文分词器. 一.版本信息 solr版本:4.7.0 需要ik-analyzer版本:IK Analyzer 2012FF_hf1 ik-analyzer下载地址:http://code.google.com/p/ik-analyzer/downloads/list 二.配置步骤 下载压缩解压后得到如下目录结构的文件夹: 我们把IKAnalyzer201

当前几个主要的Lucene中文分词器的比较

1. 基本介绍: paoding:Lucene中文分词"庖丁解牛" Paoding Analysis imdict :imdict智能词典所采用的智能中文分词程序 mmseg4j: 用 Chih-Hao Tsai 的 MMSeg 算法 实现的中文分词器 ik :采用了特有的"正向迭代最细粒度切分算法",多子处理器分析模式 2. 开发者及开发活跃度: paoding :qieqie.wang, google code 上最后一次代码提交:2008-06-12,svn

IKAnalyzer中文分词器V2012_FF使用手册

IKAnalyzer中文分词器V2012_FF使用手册.pdf 原文地址:https://www.cnblogs.com/ftl1012/p/ikAnalyzer.html

Solr4.10与tomcat整合并安装中文分词器

1.solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索引.搜索性能进行了优化. Solr可以从Solr官方网站(http://lucene.apache.org/solr/ )下载,解压后目录如下: bin:solr的运行脚本 contrib:solr的一些贡献软件/插件,用于增强solr的功能. dist:该目录包含build过程中产生的war和jar文

我与solr(六)--solr6.0配置中文分词器IK Analyzer

转自:http://blog.csdn.net/linzhiqiang0316/article/details/51554217,表示感谢. 由于前面没有设置分词器,以至于查询的结果出入比较大,并且无法进行正确的高亮显示.现在配置一下分词器来解决相关问题. solr6.0中进行中文分词器IK Analyzer的配置和solr低版本中最大不同点在于IK Analyzer中jar包的引用.一般的IK分词jar包都是不能用的,因为IK分词中传统的jar不支持solr6.0这个高版本的,所以就会发送运行