- 浏览: 241518 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
sweed0:
为何每一段代码都重复一次呢?
spring注解实例二 -
Gary_Huangpf:
- - 插件报错啊
Ext前台分页 -
ddvk2007:
版主 我想請問你所說的mapreduce是hadoop的還是g ...
MapReduce中的Shuffle和Sort分析 -
人可木:
好问章,楼主写的相当详细。。。多谢。。。
findbugs插件的安装与应用 -
hautbbs:
按照博主的方法启动调试出现jvm terminated.Ex ...
10分钟学会使用MyEclipse断点调试js
目前lucene自身提供的StandardAnalyzer已经具备中文分词的功能,但是不一定能够满足大多数应用的需要。
另外网友谈的比较多的中文分词器还有:
CJKAnalyzer
ChineseAnalyzer
IK_CAnalyzer(MIK_CAnalyzer)
还有一些热心网友自己写的比较不错的分词器在此就不说了,有兴趣的可以自己研究研究。
以上三个中文分词器并不是lucene2.2.jar里提供的。
CJKAnalyzer和ChineseAnalyzer分别是lucene-2.2.0目录下contrib目录下analyzers的lucene-analyzers-2.2.0.jar提供的。分别位于cn和cjk目录。
IK_CAnalyzer(MIK_CAnalyzer)是基于分词词典,目前最新的1.4版本是基于lucene2.0开发的。以上分词器各有优劣,比较如下:
import java.io.Reader;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.StopFilter;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cjk.CJKAnalyzer;
import org.apache.lucene.analysis.cn.ChineseAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.mira.lucene.analysis.IK_CAnalyzer;
import org.mira.lucene.analysis.MIK_CAnalyzer;
public class All_Test {
private static String string = "中华人民共和国在1949年建立,从此开始了新中国的伟大篇章。 ";
public static void Standard_Analyzer(String str) throws Exception{
Analyzer analyzer = new StandardAnalyzer();
Reader render = new StringReader(str);
StopFilter stopFilter = (StopFilter) analyzer.tokenStream( " ", render );
System.out.println( "=====StandardAnalyzer==== ");
System.out.println( "分析方法:默认没有词只有字(一元分词) ");
Token token;
while ((token = stopFilter.next()) != null) {
System.out.println(token.termText());
}
}
public static void CJK_Analyzer(String str) throws Exception{
Analyzer analyzer = new CJKAnalyzer();
Reader render = new StringReader(str);
StopFilter stopFilter = (StopFilter) analyzer.tokenStream( " ", render);
System.out.println( "=====CJKAnalyzer==== ");
System.out.println( "分析方法:交叉双字分割(二元分词) ");
Token token;
while ((token = stopFilter.next()) != null) {
System.out.println(token.termText());
}
}
public static void Chiniese_Analyzer(String str) throws Exception{
Analyzer analyzer = new ChineseAnalyzer();
Reader render = new StringReader(str);
TokenFilter tokenFilter = (TokenFilter) analyzer.tokenStream( " ", render);
System.out.println( "=====chinese analyzer==== ");
System.out.println( "分析方法:基本等同StandardAnalyzer(一元分词) ");
Token token;
while ((token = tokenFilter.next()) != null) {
System.out.println(token.termText());
}
}
public static void ik_CAnalyzer(String str) throws Exception{
// Analyzer analyzer = new MIK_CAnalyzer();
Analyzer analyzer = new IK_CAnalyzer();
Reader reader = new StringReader(str);
TokenStream tokenStream = (TokenStream)analyzer.tokenStream( " ", reader);
System.out.println( "=====IK_CAnalyzer==== ");
System.out.println( "分析方法:字典分词,正反双向搜索 ");
Token token;
while ((token = tokenStream.next()) != null) {
System.out.println(tokenStream.termText());
}
}
public static void main(String[] args) throws Exception{
String str = string;
System.out.println( "我们测试的字符串是: "+str);
Standard_Analyzer(str);
CJK_Analyzer(str);
Chiniese_Analyzer(str);
ik_CAnalyzer(str);
}
}
分词结果如下:
我们测试的字符串是:中华人民共和国在1949年建立,从此开始了新中国的伟大篇章。
=====StandardAnalyzer====
分析方法:默认没有词只有字(一元分词)
中
华
人
民
共
和
国
在
1949
年
建
立
从
此
开
始
了
新
中
国
的
伟
大
篇
章
=====CJKAnalyzer====
分析方法:交叉双字分割(二元分词)
中华
华人
人民
民共
共和
和国
国在
1949
年建
建立
从此
此开
开始
始了
了新
新中
中国
国的
的伟
伟大
大篇
篇章
=====chinese analyzer====
分析方法:基本等同StandardAnalyzer(一元分词)
中
华
人
民
共
和
国
在
年
建
立
从
此
开
始
了
新
中
国
的
伟
大
篇
章
=====IK_CAnalyzer====
分析方法:字典分词,正反双向搜索
中华人民共和国
中华人民
中华
华人
人民共和国
人民
人
共和国
共和
1949年
建立
从此
开始
新中国
中国
伟大
大篇
篇章
如果 ik_CAnalyzer(String str) 里采用
Analyzer analyzer = new MIK_CAnalyzer();
那么该方法的分词结果是:
中华人民共和国
1949年
建立
从此
开始
新中国
伟大
大篇
篇章
可以看到各种分词结果各不相同,根据应用的需要可以选择合适的分词器。
关于IKAnalyzer的介绍可以参考:
http://blog.csdn.net/dbigbear/archive/2007/01/24/1492380.aspx
http://topic.csdn.net/u/20070714/13/84db902a-9128-4b1b-8dd8-a631f15db931.html
//测试"庖丁解牛"中文分词器的分词效果
public class PaodingAnalyzer {
public static void main(String[] args) throws Exception {
Analyzer analyzer = new PaodingAnalyzer();
String indexStr = "我的QQ号码是38334641";
StringReader reader = new StringReader(indexStr);
TokenStream ts = analyzer.tokenStream(indexStr, reader);
Token t = ts.next();
while (t != null) {
System.out.print(t.termText()+" ");
t = ts.next();
}
}
}
分词结果:我的 qq 号码 38334641
如果把indexStr换成是"中华人民共和国万岁" ,那么分词结果为:
中华 华人 人民 共和 共和国 万岁
发表评论
-
solr服务器复制、服务器分发(shard)、Multicore(分片)配置,SolrJ的使用
2012-07-16 15:23 7236Solr服务器复制的配置 1,首先测试在本机上开启三个t ... -
Solr Replication(复制)是怎样工作的
2012-07-16 15:18 1076luence有一个 ... -
Solr Multicore 结合 Solr Distributed Searching 切分大索引来搜索
2012-07-13 17:58 914原文出处:http://blog.chenl ... -
solr学习资料收集
2012-07-13 17:57 1006学习新东西前,我一般都会先找些文章来看,整个原理呀 ... -
Searching过程详解
2012-07-11 11:41 10101.拦截请求,解析请求并构建相应的handler。 发送 ... -
solr的配置参数理解
2012-07-11 11:35 1006l dataDir参数 用于替换默认的索引数据目录(. ... -
DataImportHandler从数据库导入大量数据而内存溢出的问题
2012-07-11 11:33 1512Solr有个很方便的 ... -
Solr 3.5 + Tomcat7 + mmseg4j + 搜狗词库 -配置并运行
2012-07-11 11:22 1387这是我看到过的写的较好的一篇入门文章,个人觉得相对有些文章 ... -
solrj之二次开发
2012-07-11 11:19 1575Solrj已经是很强大的solr客户端了。它本身就包装了htt ... -
SOLR搭建企业搜索平台
2012-05-24 18:34 1774一、SOLR搭建企业搜索平台--MultiCore Solr ... -
solr理论
2012-05-24 17:11 10191、 solr基础 因为 Solr 包装并扩展了 Luc ... -
solr中Schema.xml和solrconfig.xml分析
2012-05-24 17:09 1656一、字段配置(schema) schema.xml位于s ... -
solr部署
2012-05-21 18:45 9731,从官方网站下载solr:apache-solr-3 ... -
lucene检索运算符
2012-05-05 13:05 1105lucene检索运算符: 1. “:” 指定字段查指定值 ... -
当前几个主要的Lucene中文分词器的比较
2012-01-05 15:36 14671. 基本介绍: paoding :Lucene ... -
全文检索lucene的使用和优化
2012-01-05 15:35 16111 lucene简介 1.1 什么是lucene L ... -
lucene 索引 原理
2011-12-06 09:33 776Lucene是一个高性能的java ... -
lucene中QueryParser操作符的疑惑
2011-11-25 16:15 851在测试Lucene搜索时,对于 AND 与 + 的区别研 ... -
lucene学习资料收集
2011-11-25 16:09 766由于公司用到lucene,现对看到过的帮助较大的luce ... -
利用 Heritrix 构建特定站点爬虫
2011-11-25 15:41 828本文由浅入深,详细介绍了 Heritrix 在 Ecl ...
相关推荐
Lucene关于几种中文分词的总结
中文分词中文分词中文分词中文分词中文分词中文分词中文分词中文分词中文分词
这是前一段时间我在研究中文分词时在网上找到的一个词典,TXT格式的,拿出来分享一下。这是前一段时间我在研究中文分词时在网上找到的一个词典,TXT格式的,拿出来分享一下。这是前一段时间我在研究中文分词时在网上...
lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮
一种中文分词词典新机制——双字哈希机制.pdf
百度以前用的中文分词词典,希望对大家有一点帮助
汇总的中文分词词库,分为两个目录: 1、中文分词词库汇总。包含10个词库,文件名字表示里面词的数量(单位是千),如150.txt,表示包含15万词。 2、主流分词工具的词库。包含word/jieba/mmseg/IK分词工具的最近词库...
ik中文分词词库35万中文分词词库(含电商)
基于C语言文本文件的中文分词程序,可实现基本功能,还有待完善
七种中文分词工具的实验尝试与对比,具体使用时需结合场景选择。
最新中文分词工具jar包,使用方便,分词准确,中文分析的一个不错的包
30万 中文分词词库.txt 42537条伪原创词库.txt 百度分词词库.txt 词库地址.txt 词库下载地址.txt
分词词库_中文分词词库最新整理(TXT格式)
中文分词第三版@Excel大全,VBA技术实现的中文分词程序
基于HMM的中文分词代码,虽然基于字标注的中文分词借鉴了词性标注的思想,但是在实践中,多数paper中的方法似乎局限于最大熵模型和条件随机场的应用,所以我常常疑惑字标注中文分词方法为什么不采用别的模型和方法呢...
Python中文分词_中文分词软件,使用jieba字典
CSW中文分词组件,是一套可自动将一段文本按常规汉语词组进行拆分,并以指定方式进行分隔的COM组件。本组件采用独有的高效的分词引擎及拆分算法,具有准确、高速、资源占用率小等特点。为了满足客户对文本语义进行...
中文分词词库整理.7z