`
liangjian103
  • 浏览: 173078 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

lucene的中文分词器

阅读更多

lucene的中文分词器到现在还没有好的解决办法。下边介绍了两个lucene自己提供的分词器和一个javaeye上的网友实现的分词器。关于各个分词器的不同见代码中的print信息。直接运行得到console的输出结果更容易对比不同。

package analyzer;

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;

import com.sohospace.lucene.analysis.xanalyzer.XAnalyzer;
import com.sohospace.lucene.analysis.xanalyzer.XFactory;
import com.sohospace.lucene.analysis.xanalyzer.XTokenizer;
//中文分词使用了Paoding的分词技术,特表示感谢
public class TestCJKAnalyzer {
    
private static String testString1 = "中华人民共和国在1949年建立,从此开始了新中国的伟大篇章";
    
private static String testString2 = "比尔盖茨从事餐饮业和服务业方面的工作";
    
public static void testStandard(String testString) throws Exception{
        Analyzer analyzer 
= new StandardAnalyzer();      
        Reader r 
= new StringReader(testString);      
        StopFilter sf 
= (StopFilter) analyzer.tokenStream("", r);
        System.err.println(
"=====standard analyzer====");
        System.err.println(
"分析方法:默认没有词只有字");
        Token t;      
        
while ((t = sf.next()) != null{      
            System.out.println(t.termText());      
        }
     
    }

    
public static void testCJK(String testString) throws Exception{
        Analyzer analyzer 
= new CJKAnalyzer();      
        Reader r 
= new StringReader(testString);      
        StopFilter sf 
= (StopFilter) analyzer.tokenStream("", r);
        System.err.println(
"=====cjk analyzer====");
        System.err.println(
"分析方法:交叉双字分割");
        Token t;      
        
while ((t = sf.next()) != null{      
            System.out.println(t.termText());      
        }
     
    }

    
public static void testChiniese(String testString) throws Exception{
        Analyzer analyzer 
= new ChineseAnalyzer();      
        Reader r 
= new StringReader(testString);      
        TokenFilter tf 
= (TokenFilter) analyzer.tokenStream("", r);
        System.err.println(
"=====chinese analyzer====");
        System.err.println(
"分析方法:基本等同StandardAnalyzer");
        Token t;      
        
while ((t = tf.next()) != null{      
            System.out.println(t.termText());      
        }
     
    }

    
public static void testPaoding(String testString) throws Exception{
        XAnalyzer analyzer 
= XFactory.getQueryAnalyzer();   
        Reader r 
= new StringReader(testString);   
        XTokenizer ts 
= (XTokenizer) analyzer.tokenStream("", r);   
        System.err.println(
"=====paoding analyzer====");
        System.err.println(
"分析方法:字典分词,去掉停止词。在字典不能匹配的情况下使用CJKAnalyzer的分割发。");
        Token t;   
        
while ((t = ts.next()) != null{   
           System.out.println(t.termText());   
        }
   
    }

    
public static void testJe(String testString) throws Exception{
//        Analyzer analyzer = new MIK_CAnalyzer();
        Analyzer analyzer = new IK_CAnalyzer();
        Reader r 
= new StringReader(testString); 
        TokenStream ts 
= (TokenStream)analyzer.tokenStream("", r);
        System.err.println(
"=====je analyzer====");
        System.err.println(
"分析方法:字典分词,正反双向搜索,具体不明");
        Token t;   
        
while ((t = ts.next()) != null{   
           System.out.println(t.termText());   
        }
   
    }

    
public static void main(String[] args) throws Exception{
//        String testString = testString1;
        String testString = testString1;
        System.out.println(testString);
        
        testStandard(testString);
        testCJK(testString);
        testPaoding(testString);
        
//        testChiniese(testString);
//        testJe(testString);
    }


}

 

分享到:
评论

相关推荐

    Lucene中文分词器组件

    Lucene中文分词器组件,不错的。

    Lucene中文分词器包

    来自“猎图网 www.richmap.cn”基于IKAnalyzer分词算法的准商业化Lucene中文分词器。 1. 正向全切分算法,42万汉字字符/每秒的处理能力(IBM ThinkPad 酷睿I 1.6G 1G内存 WinXP) 2. 对数量词、地名、路名的...

    lucene中文分词器(paoding解牛)

    lucene搜索引擎中文分词器,版本2.0.4,强大的中文分词效果在其它中文分词器当中独领风骚

    lucene.NET 中文分词

    lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮

    lucene3.0 分词器

    lucene3.0 中文分词器, 庖丁解牛

    lucene中文分词器Jceseg和IK Analyzer使用示例

    lucene中文分词器Jceseg和IK Analyzer使用示例,lucene5可以使用,本人亲测成功,大家放心用,喜欢lucene的人大家关注我的博客 http://blog.csdn.net/wuyinggui10000/article/category/3173543 大家共同交流,有需要...

    lucene分词测试代码

    用java写的图形分词测试的小东西,用的分词器是: 来自“猎图网 www.richmap.cn”基于IKAnalyzer分词算法的准商业化Lucene中文分词器,其使用“正向全切分算法”,42万汉字字符/每秒的处理能力(IBM ThinkPad 酷睿I...

    lucene中文分词工具包

    IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包,将一段文字进行IK分词处理一般经过:词典加载、预处理、分词器分词、歧义处理、善后结尾 五个部分

    Lucene中文分词组件 JE-Analysis 1.5.1

    //采用正向最大匹配的中文分词算法,相当于分词粒度等于0 MMAnalyzer analyzer = new MMAnalyzer(); //参数为分词粒度:当字数等于或超过该参数,且能成词,该词就被切分出来 MMAnalyzer analyzer = new ...

    lucene中文分词jar包

    关于lucene中文分词的一个辅助jar包

    Lucene4.0 IK分词器使用pdf

    Ik中分分词器介绍,可用于lucene4.0

    lucene3庖丁解牛中文分词器

    支持lucene3的庖丁解牛分词器和字典,可直接调用

    compass2.1.4包+所用lucene包+中文分词器

    compass2.1.4包+所用lucene包+中文分词器所用包

    Lucene中文分词源码详解

    Lucene,作为一种全文搜索的辅助工具,为我们进行条件搜索,无论是像Google,Baidu之类的搜索引 擎,还是论坛中的搜索功能,还是其它C/S架构的搜索,都带来了极大的便利和比较高的效率。本文主要是利用Lucene对MS Sql...

    Lucene与中文分词技术的研究及应用

    Lucene与中文分词技术的研究及应用Lucene与中文分词技术的研究及应用Lucene与中文分词技术的研究及应用

    lucene.net中文分词器

    自己写的lucene.net 2.0的中文分词器,采用最大向前匹配算法,附上源代码,希望这方面有兴趣的互相交流一下。yangxiuyunji@163.com

    Lucene关于几种中文分词的总结

    Lucene关于几种中文分词的总结

    引入局部统计识别高频词汇的Lucene中文分词程序STUSegmentConfig.rar

    引入局部统计识别高频词汇的Lucene中文分词程序STUSegmentConfig.rar

    Lucene的中文分词方法设计与实现

    本文设计实现了一个中文分词模块,其主要研究目的在于寻找更为有效的中文词汇 处理方法,提高全文检索系统的中文处理能力.整个模块基于当前最流行的搜索引擎架构 Lucene,实现了带有歧义消除功能的正向最大匹配算法...

    Struts标签Lucene中文分词构建

    Struts标签Lucene中文分词构建基于词典的Lucene分析器使用Log4j进行日志记录 您使用过旅游指南吗?它总是能让我们快速的找到目的地。我对此有深刻的印象,希望这篇指南也能使您快速的完成Struts标签相关的任务。我...

Global site tag (gtag.js) - Google Analytics