`
travels_with_you
  • 浏览: 21327 次
  • 性别: 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中文分词器(paoding解牛)

    《Lucene中文分词器——Paoding解牛详解》 在中文信息检索领域,分词是至关重要的一环,它能够将连续的汉字序列切割成具有独立意义的词语,为后续的索引和查询提供基础。Lucene作为Java最著名的全文搜索引擎库,其...

    Lucene中文分词器包

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

    lucene.NET 中文分词

    总的来说,Lucene.NET在中文分词和高亮显示方面的应用需要结合合适的分词器,并进行适当的配置和优化。开发者可以根据实际需求选择适合的分词器,并通过集成和调优提高系统的搜索效率和用户体验。

    lucene3.0 分词器

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

    lucene3庖丁解牛中文分词器

    《深入剖析:Lucene3与庖丁解牛中文分词器》 在信息技术飞速发展的今天,全文检索和搜索引擎已经成为日常开发中不可或缺的部分。Lucene作为一款强大的全文检索库,被广泛应用于各种信息检索系统中。然而,对于中文...

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

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

    lucene中文分词工具包

    3. **分词器分词**:这是核心步骤,IKAnalyzer采用动态调优算法,能够在运行时根据上下文调整分词策略,以达到更好的分词效果。它支持基于正向最大匹配(MMAX)和逆向最大匹配(RMMAX)等多种分词模式。 4. **歧义...

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

    以下是对几种常见Lucene中文分词器的总结: 1. CJKAnalyzer:此分词器是Lucene contrib目录下的analyzers子目录中的组件,位于cn目录。CJKAnalyzer主要针对中日韩三国语言进行分词,它基于字符级别进行分词,适用于...

    lucene分词测试代码

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

    lucene 中文分词 庖丁解牛

    《Lucene中文分词:庖丁解牛》 在信息技术高速发展的今天,全文搜索引擎已经成为网站内容检索不可或缺的一部分。其中,Apache Lucene作为一个开源的全文检索库,被广泛应用于各种项目中,尤其对于处理中文文本,...

    lucene中文分词

    《Lucene中文分词技术详解》 在信息检索和自然语言处理领域,中文分词是至关重要的一步。Lucene,作为一个强大的全文搜索引擎库,对于处理中文文档,分词的准确性和效率直接影响到搜索效果。本文将围绕“lucene中文...

    lucene.net中文分词器

    《Lucene.NET中文分词器:深入解析与实践》 Lucene.NET是一个开源全文检索库,它是Apache Lucene项目在.NET平台上的实现。作为一个强大的信息检索工具,Lucene.NET广泛应用于搜索引擎开发、文档检索系统等领域。...

    Lucene-Demo.rar Lucene分词的demo

    分词器的配置是灵活的,可以根据需求选择不同的分词策略,比如标准分词器(StandardAnalyzer)适用于大多数英文文本,而中文分词可能需要使用IKAnalyzer或SmartChineseAnalyzer等针对中文特性的分词器。 在运行这个...

    Lucene中文分词组件 JE-Analysis 1.5.1

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

    Lucene3.0分词系统.doc

    Lucene3.0分词系统的核心在于理解和应用其分词原理,无论是对于英文还是中文文本,这一过程都是构建高效搜索引擎的基础。以下是对Lucene3.0分词系统中涉及的关键知识点的深入解析。 ### 英文分词原理 英文分词相较...

    lucene中文分词(庖丁解牛)庖丁分词

    《Lucene中文分词——庖丁解牛》 在自然语言处理领域,中文分词是基础且关键的一环。在Java开发中,Apache Lucene是一个强大的全文搜索引擎库,但默认并不支持中文,这就需要借助第三方分词工具。本文将深入探讨...

    lucene中文分词jar包

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

    lucene中文分词源码,做搜索引擎需要用到的好东西哦

    这些分词器能够识别出词语的边界,对连续的汉字序列进行切割,生成合理的词汇。 接着,Analyzer会通过TokenStream来处理Token流。TokenStream接口定义了对Token进行读取和修改的操作,它允许我们在分词过程中进行...

Global site tag (gtag.js) - Google Analytics