IKAnalyzer中文分词器

1. IKAnalyzer3.0介绍

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文本分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。

1.1 IKAnalyzer3.0特性

采用了特有的“正向迭代最细粒度切分算法“,具有50万字/秒的高速处理能力。

采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。

优化的词典存储,更小的内存占用。支持用户词典扩展定义

针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。

1.2 分词效果示例

文本原文1:

IK-Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。分词结果:

ik-analyzer|是|一个|一|个|开源|的|基于|java|语言|开发|的|轻量

级|量级|的|中文|分词|工具包|工具|从|2006|年|12|月|推出|1.0|版|开始|ikanalyzer|已经|推出|出了|

3|

个大|

个|版本

文本原文2:

永和服装饰品有限公司。分词结果:

:永和|和服|服装|装饰品|装饰|饰品|有限|公司

文本原文3:

作者博客:linliangyi2007.javaeye.com 电子邮件地址:[email protected]

分词结果::作者|博客|linliangyi2007.javaeye.com|2007|电子邮件|电子|邮件|

地址|

[email protected]|2005

作者博客:linliangyi2007.javaeye.com电子邮件:[email protected]

分词结果分词结果::作者|博客|linliangyi2007.javaeye.com|2007|电子邮件|电子|邮件|

地址|

[email protected]|2005

2.使用指南

2.1 下载地址

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

GoogleCodeSVN下载:http://ik-analyzer.googlecode.com/svn/trunk/

2.2 安装部署

IKAnalyzer安装包包含:

  1. .IKAnalyzer3.0GA.jar
  2. IKAnalyzer.cfg.xml

它的安装部署十分简单,将IKAnalyzer3.0GA.jar部署于项目的lib目录中;IKAnalyzer.cfg.xml文件放置在代码根目录(对于web项目,通常是WEB-INF/classes目录,同hibernate、log4j等配置文件相同)下即可。

2.3  Lucene用户快速入门

代码样例

IKAnalyzerDemo

Demo/**

*IKAnalyzerDemo*@paramargs*/

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;

/**

* /*@authorlinly

**/

public class IKAnalyzerDemo {

public static void main(String[] args) {

// LuceneDocument的域名

String fieldName = "text";// 检索内容

String text = "IKAnalyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切分算法。";

// 实例化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:IKAnalyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切分算法。>>

时间: 2024-07-29 21:31:07

IKAnalyzer中文分词器的相关文章

IKAnalyzer中文分词器V2012_FF使用手册

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

IKAnalyzer 中文分词器

IK Analyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包.可与lucene配合使用. IK Analyzer是一个结合词典分词和文法分词的中文分词开源工具包.它使用了全新的正向迭代最细粒度切分算法. 项目地址:http://www.oschina.net/p/ikanalyzer/ 下载页面:http://git.oschina.net/wltea/IK-Analyzer-2012FF 示例代码: 该代码的工程结构:下图

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

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

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

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 安装步骤:

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的中文分词器IKAnalyzer

分词器对英文的支持是非常好的. 一般分词经过的流程: 1)切分关键词 2)去除停用词 3)把英文单词转为小写 但是老外写的分词器对中文分词一般都是单字分词,分词的效果不好. 国人林良益写的IK Analyzer应该是最好的Lucene中文分词器之一,而且随着Lucene的版本更新而不断更新,目前已更新到IK Analyzer 2012版本. IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包.到现在,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时

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文

11大Java开源中文分词器的使用方法和分词效果对比

本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那要用的人结合自己的应用场景自己来判断. 11大Java开源中文分词器,不同的分词器有不同的用法,定义的接口也不一样,我们先定义一个统一的接口: /** * 获取文本的所有分词结果, 对比不同分词器结果 * @author 杨尚川 */ public interface WordSegmenter {