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. go get 下载的包放在哪里呢?

    有些问题,我以前都是似懂非懂,没有去弄个究竟!!!!! 这个习惯非常不好,搞得有些东西看似懂了,又不能百分之百说自己懂了,可能下次就弄不出来了,这样是不可取的. 不能有这种做事的风格. ------- ...

  2. APK大小的瘦身的总结:

    首先是看了博客:http://blog.csdn.net/sw950729/article/details/64919051 时.认为大神我就是马云飞写的非常有道理.全部自己就自己写了一遍.长话短说: ...

  3. 【Android】The application has stopped unexpectedly.Please try again.

    打出的android APK在android4.0.2手机上运行正常,但是在2.3.7的MOTO DEFY ME525上运行失败. android 2.3.3版本的模拟器上面运行失败: Sorry! ...

  4. Session机制详细介绍

    Session机制详细介绍  

  5. VBA【遍历每个工作表并将工作表表名赋予B2单元格】

    方法一:  存在缺陷:选中所有单元格,批量生成公式时候,每次需要点击进入工作表点击单元格--进入编辑状态,然后公式才会生效 使用公式如下: =,) 附件下载地址:点击下载 方法二: 使用宏编程进行复制 ...

  6. 由friend用法引出的声明与定义那些事儿

    今天遇到了一个问题,大致描述一下就是有两个类A和B.我想达到如下效果:B是A的友元,同时A是B的类类型成员. 第一次尝试,在B.h中包含A.h,在A.h中包含B.h,在A类中声明friend clas ...

  7. (三)Oracle学习笔记—— sql语句

    0. scott 用户默认表介绍 scott用户Tables目录下包含四张表 1. insert(插入)语句 给指定列插入数据: ,'xx'); 插入全部列数据: ,'xx','lll'); 2. u ...

  8. WP8控件进度条(ProgressBar)的使用

    --前台代码 <Grid x:Name="ContentPanel"  Grid.Row="1" Margin="0,0,24,0"& ...

  9. C# 调用adb command 读取手机型号和IMEI

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  10. silverlight 对ChildWindow返回给父窗体值的理解(转载)

    这篇文章是我对ChildWindow的理解,举例说明: 有时候在项目中需要弹出子窗体进行一些操作,然后将操作的值返回到父窗体中. 下图是子窗体的界面(比较粗糙....) 下面贴出其代码: 子窗体前台代 ...