`

carrot2 融入自己的中文分词器

阅读更多
初试身手—融入自己的中文分词器

 

现在准备着手写一个真正意义上的聚类搜素了。一开始担心老外的carrot2对中文会进行“歧视”,后来发现原

来carrot2还是比较重视中文的,在有一个

org.carrot2.filter.lingo.local.ChineseLingoLocalFilterComponent的类,专门用来为中文提供分词操作。

再次往下细看,底层的分词造作在org.carrot2.util.tokenizer.parser.jflex.JeZHWordSplit中实现的,采用

的是基于lucene的MMAnalyer 。我没有使用过这种分词器,不知道它的消歧机制和切分效率如何,于是想拿经

常使用的分词器来做个比较。于是,必须建立一个自己的中文filter组建。   以往经常使用的是中科院的java

改良版(还是很慢)和c++版本的mmseg,由于使用的是自己家是windows平台的,所以只好用中科院的java改良

版。

1.              首先在org.carrot2.util.tokenizer.parser中新加一个分析器就叫KellyWordSplit:

package org.carrot2.util.tokenizer.parser;

 

 

import org.apache.lucene.analysis.ictcals.FMNM;

import org.carrot2.util.tokenizer.parser.jflex.PreprocessedJFlexWordBasedParserBase;

public class KellyWordSplit extends PreprocessedJFlexWordBasedParserBase {

//public Segment seg = null;

 

    public KellyWordSplit() {

//     try {

//         seg = new Segment(1, new File(".").getCanonicalPath()

//                + File.separator+"dic"+File.separator);

//     } catch (IOException e) {

//         // TODO Auto-generated catch block

//         e.printStackTrace();

//     }

    }

 

    @Override

    public String preprocess(String input) {

       System.out.println("cut:"+input);

       return FMNM.ICTCLASCut(input) ;

    }

 

}
然后再在这个包中建立一个解析工厂:ICTCALWordBasedParserFactory

package org.carrot2.util.tokenizer.parser;

 

import org.apache.commons.pool.BasePoolableObjectFactory;

import org.apache.commons.pool.ObjectPool;

import org.apache.commons.pool.impl.SoftReferenceObjectPool;

 

public class ICTCALWordBasedParserFactory {

    /** Chinese tokenizer factory */

    public static final ICTCALWordBasedParserFactory ChineseSimplified = new

KellyICTCALWordBasedParserFactory();

 

    /** Parser pool */

    protected ObjectPool parserPool;

 

    /** No public constructor */

    private ICTCALWordBasedParserFactory() {

       // No public constructor

    }

 

    public WordBasedParserBase borrowParser() {

       try {

           parserPool.returnObject(parser);

       } catch (Exception e) {

           throw new RuntimeException("Cannot return a parser", e);

       }

    }

 

    /**

     * @author Stanislaw Osinski

     * @version $Revision: 2122 $

     */

    private static class KellyICTCALWordBasedParserFactory extends

           ICTCALWordBasedParserFactory {

       public KellyICTCALWordBasedParserFactory() {

           parserPool = new SoftReferenceObjectPool(

                  new BasePoolableObjectFactory() {

                     public Object makeObject() throws Exception {

                         return new KellyWordSplit();

                     }

                  });

       }
     }

}



分享到:
评论
1 楼 ivan.zhuang 2009-06-12  
你好,请问文中所说的org.carrot2.filter.lingo.local.ChineseLingoLocalFilterComponent的类
我去CARROT2里找了下并没有发现

能贴出从哪里可以下到这个类的吗

相关推荐

    carrot2c#api

    Carrot2是一款强大的文本聚类和排序工具,它能够帮助用户从大量的文档集合中提取出关键主题和概念。Carrot2提供了多种API,方便开发者在不同的编程语言环境中使用,其中包括C# API。本文将深入探讨"carrot2c#api",...

    carrot2-java-api-3.6.0

    它的Java API允许开发者在自己的应用程序中集成Carrot2的功能,以实现智能的信息检索和处理。"carrot2-java-api-3.6.0"是Carrot2的Java API的一个特定版本,提供了更新和优化的功能。 该API的核心概念包括以下几个...

    Carrot2聚类工具简介

    这是一个学习Carrot2的极好的书籍,通俗易懂

    elasticsearch-carrot2-7.5.2.zip

    通过这些 JAR 文件,ElasticSearch-carrot2 插件能够将 Carrot2 的聚类能力无缝集成到 ElasticSearch 中,为用户提供高效、准确的搜索结果聚类。在实际应用中,开发者可以通过配置插件参数,选择合适的聚类算法(如 ...

    elasticsearch-carrot2-7.6.0.zip

    "elasticsearch-carrot2-7.6.0.jar"是专门为Elasticsearch定制的插件实现,它将Carrot2的功能与Elasticsearch的API无缝对接。"plugin-security.policy"是插件的安全策略文件,用于限制插件的权限,确保系统安全。...

    最新可用已配置好solr的carrot2插件

    最新可用已配置好solr的carrot2插件,tomcat里面需配置好solr具体到http://carrot2.github.io/solr-integration-strategies/carrot2-3.8.0/index.html查看

    elasticsearch-carrot2-7.5.0.zip

    7. elasticsearch-carrot2-7.5.0.jar:这是 Elasticsearch Carrot2 插件的主要实现,包含了与 Elasticsearch 的集成代码以及 Carrot2 聚类算法的适配逻辑。 8. jackson-annotations-2.8.11.jar:Jackson 注解库,...

    carrot2:胡萝卜2

    Carrot2是用于对文本进行聚类的编程库。 它可以自动发现相关文档组,并用短关键字或短语标记它们。 例如,Carrot2可以将搜索结果标题和代码片段分为以下几类: 安装 Carrot2是一个软件组件,通常作为库依赖项与...

    Carrot2-开源

    项目移至 GitHub! https://github.com/carrot2/carrot2 Carrot2 是一个开源搜索结果聚类引擎。 它可以自动将小型文档集合(例如搜索结果)组织到主题类别中。 Carrot2 与开源和专有搜索引擎集成得很好。

    elasticsearch-carrot2:用于ElasticSearch的Carrot2插件

    bin/elasticsearch-plugin install org.carrot2:elasticsearch-carrot2:7.12.0 要从源代码安装(主分支),请运行: ./gradlew clean build 然后安装(使用完整路径): Linux: bin/elasticsearch-plugin install...

    carrot2 聚类工具简介

    carrot2是开源的用于聚类搜索和文档聚类的工具,可用于google,yahoo等大型搜索引擎

    solr的carrot2需要用到的文件

    solr的carrot2需要用到的文件solr-integration-strategies-gh-pages carrot3.9webapp,还有tomcat还有solr4.81请自己下载

    following the carrot算法

    路径跟随算法follow the carrot算法,在ros环境下已经调试好的,可以直接编译运行的程序,需要给程序发布话题/amcl_pose 消息格式为geometry_msgs/PoseWithCovarianceStamped,算法经过计算发布速度到话题/cmd_vel

    保卫萝卜1.9.1存档com.carrot.carrotfantasy.zip

    存档中这些被清空,意味着玩家在使用这些资源时没有留下任何遗憾,为新玩家提供了一个干净的起点,让他们可以根据自己的策略来收集和使用这些资源。 存档文件“com.carrot.carrotfantasy.zip”是通过压缩技术打包的...

    Python-carrot为Django打造的Celery替代品

    2. **轻量级**:与Celery相比,Python-carrot可能更小、更精简,这使得它在资源消耗和学习成本上更具优势,对于小型项目或者对性能要求不那么高的应用来说,可能是一个更好的选择。 3. **API友好**:Python-carrot...

    Python库 | django-carrot-1.4.0a2.tar.gz

    Django是Python的一个著名Web框架,它遵循模型-视图-控制器(MVC)设计模式,用于快速开发安全且可维护的网站。本文将深入探讨与“django-carrot-1.4.0a2.tar.gz”相关的知识点。 首先,`django-carrot` 是一个针对...

    Carrot-crx插件

    Carrot增强了Codeforces的排名。 对于进行中的竞赛:当您打开排名列表时,Carrot会根据当前排名计算评分变化,并将其显示在新列中。 Carrot还添加了一个列,该列显示了升级所需的增量。 增量计算是实时a̶n̶d̶i̶s...

    Python库 | carrot_rcc-0.4.0-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:carrot_rcc-0.4.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Laravel开发-carrot

    **Laravel 开发与 Carrot RabbitMQ 基础库详解** 在 Laravel 框架中,Carrot 是一个用于处理 RabbitMQ 消息队列的流行库,它提供了丰富的功能,使得开发者能够轻松地集成 RabbitMQ 进行异步任务处理。本文将深入...

Global site tag (gtag.js) - Google Analytics