Terrier 组件
在这一页我们会为Terrier的主要组件及其交互做一个概述。
组件交互
索引
下图展示了在索引过程中涉及到的主要组件之间的交互。
- 一个语料库将被表示成一个Collection 对象的形式。裸的文本数据会被表示成一个Document 对象的形式。 Document的实现往往是用一个Tokeniser类的实例将文本片段打碎成单一的索引标记(tokens)来提供。
- 索引器(indexer)负责管理建索引进程。他遍历集合中的每一篇文档,然后把通过TermPipeline组件找到的每一个术语(term)发送出去。
- TermPipeline可以为术语(term)变形或者去掉不应该被索引的术语(term)。TermPipeline处理链相当于去除停用词加词干分析termpipelines=Stopwords,PorterStemmer,用Stopwords对象从文档中去除停用词,然后对术语(term)施加英语的波特词干分析算法(PorterStemmer)。
- 一旦术语(term)经过TermPipeline处理,他们将被汇总,他们相应的文档构建器(DocumentBuilders)会建立下面这些数据结构:直接索引(DirectIndex),文档索引(DocumentIndex),,词汇(Lexicon),和倒排索引(InvertedIndex)。
- 对于单通道索引,这些结构将按不同的顺序写入。倒排文件的记录是在内存中建立的,当内存耗尽时会被提交给”runs”。一旦整个集合被索引完,所有runs会合并形成倒排索引(InvertedIndex)和词典(Lexicon)。
检索
下图展示了在检索阶段Terrier的组件间的交互。
- 先由像Desktop Terrier 或 TrecTerrier这样的应用向Terrier框架提交一个查询。
- 第一步,这个查询(query)会被解析,并被实例化为一个查询(Query)对象。
- 随后查询会被交给Manager组件。The Manager首先会用配置过的术语管道对其预处理(TermPipeline)。
- 在预处理之后将被交给匹配组件(Matching component)。匹配组件负责初始化相应的加权模型(WeightingModel)和文档评分器(DocumentScoreModifiers)。一旦所有这些组件都被实例化了,关于查询的文档评分计算就会进行。
- 随后就会进行后期处理(PostProcessing)和后期过滤(PostFiltering)。在后期处理中,结果集可以被任意调整,比如查询扩展(QueryExpansion)扩展了查询,然后再一次调用匹配组件(Mathing)来生成改进过的文档排名。后期过滤更简单,它允许文档包含某部分或排除某部分,这对于使用交互式应用的用户想要限制文档被检索的域时非常理想。
- 最后,结果集会被返回给应用程序组件。
组件描述
这里对Terrier的组件提供了简单的描述列表。
索引
名称 | 描述 |
Collection | 这个组件封装了Terrier建索引的大部分基本概念。一个 Collection 就是一个文档的集,详情见 org.terrier.indexing.Collection。 |
Document | 这个组件封装了文档的概念。它本质上是一个对文档中的术语(term)的一个迭代器。详情见org.terrier.indexing.Document。 |
Tokeniser | 被文档(Document)组件用来将文本序列(句子)打碎成单词的流以建立索引。详情见org.terrier.indexing.tokenisation.Tokeniser。 |
TermPipeline | 模型化了一个在术语(term)处理进程中管道组件的概念。实现这个接口的类可以是词干分析算法,停用词去除器或者仅仅是为了说明某些例子做的缩减扩展。详情见org.terrier.terms.TermPipeline。 |
Indexer | 这个组件负责管理建索引进程。它实例化了术语管道(TermPipelines)和建造器(Builders)。 详情见org.terrier.structures.indexing.Indexer 。 |
Builders | 建造器(Builders)负责将所有写入磁盘。详情见org.terrier.structures.indexing package 。 |
数据结构
名称 | 描述 |
BitFile | 一个用伽马和一元编码(gamma and unary encodings)的高度压缩的I/O层。 详情见org.terrier.compression。 |
Direct Index | 直接索引(Direct Index)每篇文档里出现过的术语(term)及相应出现频率的标记。他被用于自动查询扩展, 也可用于用户分析活动。详情见org.terrier.structures.bit.DirectIndex。 |
Document Index | 文档索引(Document Index)存储关于每个文档的信息,比如文档的长度和标识,以及一个指向相应直接索引(Direct Index)里的入口的指针。 详情见org.terrier.structures.DocumentIndex。 |
Inverted Index | The 倒排索引(Inverted Index)存储记录列表,比如文档标识和他们相应的词频。 另外他能够存储术语(term)在一篇文档中的位置。 详情见org.terrier.structures.bit.InvertedIndex。 |
Lexicon | 词典(lexicon)存储词汇的集合和相应的文档以及词频。详情见org.terrier.structures.Lexicon。 |
Meta Index | 元数据索引(Meta Index)存储每篇文档额外(meta)的信息,比如它的唯一文本编号或者URL。详情见 org.terrier.structures.MetaIndex 。 |
检索
名称 | 描述 |
Manager | 这个组件负责处理/协调查询的主要上层查询操作,这些操作有:
|
Matching | 匹配组件负责决定哪个文档与给定的查询匹配并负责对该文档关于相应的查询进行打分。详情见See org.terrier.matching.Matching。 |
Query | 查询(Query)组件是对一个包含子查询和查询术语(term)的查询建立模型。详情见org.terrier.querying.parser.Query。 |
Weighting Model | 加权模型(Weighting Model)代表给文档中的术语加权重的检索模型。 详情看org.terrier.matching.models.WeightingModel。 |
Document Score Modifiers | 负责查询相关的文档的评分的调整。详情 org.terrier.matching.dsms package。 |
应用程序
名称 | 描述 |
Trec Terrier | 一个支持对TREC数据集建索引和查询的应用。 详情见org.terrier.applications.TrecTerrier。 |
Desktop Terrier | 一个允许用户索引和检索本地内容的应用。 详情见 org.terrier.applications.desktop package。 |
HTTP Terrier | 一个允许通过浏览器检索文档的应用。详情见 src/webapps/results.jsp 或者relevant documentation的相关文档。 |