RawCluster:聚类中的类别单位

RawCluster.getDocuments():获得该类的文档列表

RawDocument:每个类的文档单位

STC:后缀树表示法

2008-11-13

Carrot2的组建(components)的介绍:

1.        输入(input):产生聚类文本的组建。Carrot2针对目前的几个主要搜索引擎(Yahoo:carrot2-input-yahooapi.jar, Google, MSN Search)和开源搜索引擎(lucene:carrot2-input-lucene.jar)以及XMLs接口 (such as RSS or OpenSearch:carrot2-input-xml.jar).,提供了几个默认的输入组建。除此之外,你也可以自己重写自己的输入组建。

LocalComponentFactory

LuceneLocalInputComponentConfig

LuceneLocalInputComponentFactoryConfig

// Create Lucene input component factory.

//

final LocalComponentFactory input = new LocalComponentFactory() {

public LocalComponent getInstance() {

returnnew LuceneLocalInputComponent(luceneConfig);

}

};

// add lucene input as 'lucene-myindex'

controller.addLocalComponentFactory("lucene-myindex", input);

2.      过滤器(filters): Carrot2中的过滤器其实就是聚类组建和一些过滤操作的集合。Carrot2自带有一定数量的过滤器,每一个过滤器都执行一个不同的算法(如lingo,k-mean and so on),并且根据处理链中,在它之前的过滤器的不同和以及自身配置的不同,每个过滤器会有一些不同的要求设置。Eg:carrot2-filter-lingo.jar,carrot2-filter-haog.jar,carrot2-filter-stc.jar

final LocalComponentFactory lingo = new LocalComponentFactory() {

public LocalComponent getInstance() {

// we will use the defaults here, see {@link Example}

// for more verbose configuration.

returnnewChineseLingoLocalFilterComponent();

}

};

// add the clustering component as "lingo-classic"

controller.addLocalComponentFactory("lingo-classic", lingo);

3.      输出(output):当从聚类器获得结果的时候,carrot2用输出组件去对这些结果进行一些处理操作。实际上输出组件处理的是接口“RawCluster”的实例。最简单的处理方式就是把哲学聚类结果保存没在一个数组中,直到所有的聚类操作完成;一个更高级一点的方式就是,聚类结果出来一个马上进行输出处理,而不是放在一个数组中最后统一处理,这种凡是的实质就是一个与聚类操作(filter)的同步。

final LocalComponentFactory output = new LocalComponentFactory() {

public LocalComponent getInstance() {

returnnew ArrayOutputComponent();

}

};

// add the output component as "buffer"

controller.addLocalComponentFactory("buffer", output);

话外话:carrot2中之所以很多地方都用到”Local”来命名,这其实是由于历史原因:在carrot2中曾经设计过一个用于远程通信的并行组建,虽然现在弃用了,但是与之相对的本地组建用“Local”命名的方式一直沿用着。

2008-11-14

设计概要

1.       carrot2中LocalComponent是一下三种本地组建的超级几口:

LocalInputComponent:用于接受用户的查询和处理初始数据

LocalFilterComponent:用于改变或者丰富数据

LocalOutputComponent:收集聚类结果或者对结果做一些处理,如用可视化组建显示这些结果等等

2.       组建初始化

在任何处理操作之前,组件和处理器(processes:LocalProcessBase)被添加到一个组建容器,同时它们也会被一个控制(controller)组件所引用。这个控制组件不会再核心框架中被明确指定,因为它更有可能是应用相关的,即属于应用层,已经超出了限定的范围。然而,在框架中却指定了一个LocalControllerContext接口,并且它会传递给每一个实例化的组建。其实LocalControllerContext主要是用来证实每个组建和处理器之间的兼容性的,同时也为实现一些别的组件类型提供了可能性。

3.      处理器

一个本地处理器包含了处理查询和在处理链中装配组件的逻辑过程。这个接口(LocalProcess)的实例必须由框架的使用者来定义(也就是应用相关),因为他要决定哪些组建要被用于处理查询而他们之间又是如何联系的。LocalProcess的行为规范是十分复杂的,一般鼓励开发者去使用它的子类LocalProcessBase,可以重载它里面的钩子(Hook)函数。

//

// In the final step, assemble a process from the above.

//

try{

controller.addProcess("lucene-lingo",

 new LocalProcessBase("lucene-myindex", "buffer", new String [] {"lingo-classic"}));

} catch (InitializationException e) {

// This exception is thrown during verification of the added component chain,

// when a component cannot properly initialize for some reason. We don't

// expect it here, so rethrow it as runtime exception.

thrownew RuntimeException(e);

} catch (MissingComponentException e) {

// If you give an identifier of a component for which factory has not been

// added to the controller, you'll get this exception. Impossible in our

// example.

thrownew RuntimeException(e);

}

4.      查询执行

当所有的处理器和组建都添加到控制器之后。控制器就会用一个query()(旧版如下)将一个查询请求传递给本地处理实例。

public void Object query(RequestContext context, String query) throws Exception

一个处理就会请求一个组件实例并将它同一个处理链联系起来,然后执行查询请求。(转自:http://blog.sina.com.cn/s/blog_43b8e6dd0100ne5z.html)

Carrot2 in action 初步印象的更多相关文章

  1. 转来的——python webdriver自动化测试初步印象——转来的

    python webdriver自动化测试初步印象 以下示例演示启动firefox,浏览google.com,搜索Cheese,等待搜索结果,然后打印出搜索结果页的标题 from selenium i ...

  2. HBASE学习笔记-初步印象

    HBASE概念: HBASE是一个分布式架构的数据库,通过对数据进行多层的分块打散储存.从而改写传统数据库的储存能力和读取速度. HBASE的集群服务器: HBASE的集群主要分为Zookeeper集 ...

  3. linux服务器初步印象,远程连接mysql数据库,传输文件,启动/关闭tomcat命令

    1.连接服务器数据库,以Navicat连接mysql为例 1.1 常规 新建连接,连接名,主机名或ip地址:127.0.0.1 端口:3306用户名:(服务器端)root密码:(服务器端)pwd 1. ...

  4. paddlepaddle初步印象

    从其官网整理了一些资料如下: 1.基本概念 基本使用概念 PaddlePaddle是源于百度的一个深度学习平台.PaddlePaddle为深度学习研究人员提供了丰富的API,可以轻松地完成神经网络配置 ...

  5. CMake初步(1)

    转自:<你所不知的OSG>第一章:CMake初步(1)http://bbs.osgchina.org/forum.php?mod=viewthread&tid=1189&f ...

  6. PostgreSQL执行机制的初步学习

    作为开源数据库的新手,近日有兴对比了Pg和MySQL的查询计划. 通过Pg源码目录下的src\backend\executor\README文件,加上一些简单调试,就能对Pg的执行机制产生一个初步印象 ...

  7. ASP.NET MVC 5 Web编程1 -- 入门

    开篇引言 说起ASP.NET MVC,我想作为WebForms开发者第一点要问的是:为什么要使用它?我的理解是:MVC是更细节化的框架,“细节可控”意味着你的系统更精致.具体体现在应用上.MVC的出现 ...

  8. 通过案例对 spark streaming 透彻理解三板斧之一: spark streaming 另类实验

    本期内容 : spark streaming另类在线实验 瞬间理解spark streaming本质 一.  我们最开始将从Spark Streaming入手 为何从Spark Streaming切入 ...

  9. 使用Jenkins搭建持续集成服务

    1. 什么是持续集成 持续集成 (Continuous Integration, 简称 CI) 是软件工程中的一种实践, 用于将开发人员不同阶段的工作成果集成起来, 通常一天之中会进行多次. 持续集成 ...

随机推荐

  1. Netty4 initAndRegister 解析

    我们从框架的应用层面来分析,NioEventLoopGroup在netty中的使用. 这是我们需要配置的地方. 紧接着我们进入netty的运行中.ServerBootstrap.bind(PORT); ...

  2. IReferenceCounted DotNetty.Common

    // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file ...

  3. kyeremal-bzoj2038-[2009国家集训队]-小z的袜子(hose)-莫队算法

    id=2038">bzoj2038-[2009国家集训队]-小z的袜子(hose) F.A.Qs Home Discuss ProblemSet Status Ranklist Con ...

  4. B1:模板方法模式 TemplateMethod

    定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤 应用场景: A.操作步骤稳定,而具体细节延迟到子类. UML: 示例代码: ...

  5. The fundamental differences between "GET" and "POST"

    The HTML specifications technically define the difference between "GET" and "POST&quo ...

  6. Spring 注入简介

    注入方式有三种,setter,构造方法,接口注入.   常用的是setter注入和构造方法注入.   setter注入: <?xml version="1.0" encodi ...

  7. Spring Boot整合shiro-登录认证和权限管理

    原文地址:http://www.ityouknow.com/springboot/2017/06/26/springboot-shiro.html 这篇文章我们来学习如何使用Spring Boot集成 ...

  8. SVN环境搭建(2)

    原文地址:http://www.penglig.com/post-73.html TortoiseSVN的使用. 首先打开VisualSVN Server Manager,如图: 可以在窗口的右边看到 ...

  9. spring学习笔记(六)

    1.配置环绕通知 需要实现的接口为  MethodInterceptor   代码举例 package com.huawei.aop; import org.aopalliance.intercept ...

  10. pandas 绘图与滑窗

    #import nessary library before start import pandas as pd import numpy as np import matplotlib.pyplot ...