根据设计目的和使用用途的不同,文本信息检索系统可以分为两大类:一类是以技术研究为目的,供研究者使用的实验系统;另一类是供普通用户使用的实用系统,其中使用最广泛的就是WWW搜索引擎。
实验系统
由于文本信息检索系统非常复杂,所涉及的技术很多,因此,如果每个研究者都自己开发一个完整的检索系统则是相当困难的,并且也没有必要。事实上,已经有不少很完善的实验系统出现,研究者可以利用它们进行研究,其中很多系统都可免费使用,有些甚至提供源代码和完善的文档,让使用者可以很方便地实现自己的算法。
1.Smart系统([url=http://ftp.cs.cornell.edu/pub/smart/]http://ftp.cs.cornell.edu/pub/smart/[/url])
Smart 系统是最著名的、使用者最多的实验系统之一。其原因一方面是它的历史比较长,另一方面是它的使用是免费的,且可下载源代码,使研究者使用起来非常方便。 Smart系统由美国康奈尔大学研发,最初的研发工作由Gerard Salton教授领导,并在20世纪80年代初开发出第一个版本。目前其维护工作由Chris Buckley负责,最新的版本是Smart11。
开发Smart系统的目的是为了给文本信息检索技术的研究者提供一个完善的实验平台。在这一思想指导下,Smart实现了一个完整的基于向量空间模型的文本信息检索系统,不过目前只能处理英文文档。利用Smart,用户可以对一组文档建立索引,然后即可对给出的问询(query)返回检索结果,并对结果进行评价。同时,它包括去除stopwords(stopwords列表可由用户指定)、词干还原(stemming)、weighting计算等子功能模块。用户可以根据自己的需要分别调用。不过,由于其设计年代较早,Smart系统存在一个很大的缺点,即只能处理大约500MB以下的文档集合,这使它在数据量达到10GB以上的TREC Web Track这样的问题时显得力不从心。Smart系统的另一个不足之处是缺乏良好的文档,使用者常常需要自己摸索使用方法。
2.Okapi系统([url=http://www.soi.city.ac.uk/~andym/OKAPI-PACK/index.html]http://www.soi.city.ac.uk/~andym/OKAPI-PACK/index.html[/url])
Okapi 是另一个著名的文本检索实验系统。其第一版于20世纪80年代末问世,运行在Unix系统上。时至今日,经过10多年的发展,Okapi系统越来越健壮,检索精确度也越来越高。近几年,在TREC比赛中,有不少参加者采用Okapi系统取得了很好的成绩。不过,Okapi系统不是免费的,并且不提供源代码。目前,该系统可运行在Sun工作站、Linux系统以及Windows系统平台上。
Okapi 系统是由伦敦城市大学开发的。它基于概率检索模型设计,使用著名的bm25公式及其变形(bm2500、bm250)等作为求term 权值的公式。这种权重计算公式在概率模型中已经成为公认的成熟的标准计算方法。Okapi同样提供建立索引和查询的工具,分别有命令行方式和图形界面方式。
3.Lemur Toolkit系统([url=http://www-2.cs.cmu.edu/~lemur/]http://www-2.cs.cmu.edu/~lemur/[/url])
Lemur Toolkit是一个新兴的实验系统。它由卡耐基-梅隆大学(CMU)开发,在2001年公布了第一个公开的版本。其特点是在检索中引入了语言模型,更重要的是,它不仅是一个完整的检索系统,而且是以工具包的形式提供的。各功能模块都有良好的封装,并提供清晰的源代码和丰富的文档说明,研究者使用它搭建自己的实验系统易如反掌。
Lemur Toolkit的设计目标是促进和帮助在文本信息检索和语言模型方面的研究,包括特定目标检索、分布式检索、跨语言检索、文摘系统、信息过滤和文本分类等各方面技术的研究。工具包支持对大规模文本数据建立索引,对文档和查询构建简单的语言模型,同时实现了基于语言模型的检索系统。整个系统用C和C++语言实现,可在Unix和Windows系统下运行。
4.Apache Lucene:[url=http://jakarta.apache.org/lucene/]http://jakarta.apache.org/lucene/[/url]
是一个高性能(high-performance)的全能的全文检索(full-featured text search engine)的搜索引擎框架库,完全(entirely)使用Java开发。它是一种技术(technology),适合于(suitable for)几乎(nearly)任何一种需要全文检索(full-text search)的应用,特别是跨平台(cross-platform)的应用。可以进行增量的索引(Append),可以对于大量数据进行批量索引,并且接口设计用于优化批量索引和小批量的增量索引。Lucene没有定义具体的数据源,而是一个文档的结构,因此可以非常灵活的适应各种应用(只要前端有合适的转换器把数据源转换成相应结构),Lucene的文档是由多个字段组成的,甚至可以控制那些字段需要进行索引,那些字段不需要索引,近一步索引的字段也分为需要分词和不需要分词的类型:需要进行分词的索引,比如:标题,文章内容字段,不需要进行分词的索引,比如:作者/日期字段;通过语言分析器的不同扩展实现:可以过滤掉不需要的词:an the of 等,西文语法分析:将jumps jumped jumper都归结成jump进行索引/检索非英文支持:对亚洲语言,阿拉伯语言的索引支持;通过查询分析接口的实现,可以定制自己的查询语法规则:比如:多个关键词之间的 + - and or关系等; 能够支持多用户的使用。
实验系统
由于文本信息检索系统非常复杂,所涉及的技术很多,因此,如果每个研究者都自己开发一个完整的检索系统则是相当困难的,并且也没有必要。事实上,已经有不少很完善的实验系统出现,研究者可以利用它们进行研究,其中很多系统都可免费使用,有些甚至提供源代码和完善的文档,让使用者可以很方便地实现自己的算法。
1.Smart系统([url=http://ftp.cs.cornell.edu/pub/smart/]http://ftp.cs.cornell.edu/pub/smart/[/url])
Smart 系统是最著名的、使用者最多的实验系统之一。其原因一方面是它的历史比较长,另一方面是它的使用是免费的,且可下载源代码,使研究者使用起来非常方便。 Smart系统由美国康奈尔大学研发,最初的研发工作由Gerard Salton教授领导,并在20世纪80年代初开发出第一个版本。目前其维护工作由Chris Buckley负责,最新的版本是Smart11。
开发Smart系统的目的是为了给文本信息检索技术的研究者提供一个完善的实验平台。在这一思想指导下,Smart实现了一个完整的基于向量空间模型的文本信息检索系统,不过目前只能处理英文文档。利用Smart,用户可以对一组文档建立索引,然后即可对给出的问询(query)返回检索结果,并对结果进行评价。同时,它包括去除stopwords(stopwords列表可由用户指定)、词干还原(stemming)、weighting计算等子功能模块。用户可以根据自己的需要分别调用。不过,由于其设计年代较早,Smart系统存在一个很大的缺点,即只能处理大约500MB以下的文档集合,这使它在数据量达到10GB以上的TREC Web Track这样的问题时显得力不从心。Smart系统的另一个不足之处是缺乏良好的文档,使用者常常需要自己摸索使用方法。
2.Okapi系统([url=http://www.soi.city.ac.uk/~andym/OKAPI-PACK/index.html]http://www.soi.city.ac.uk/~andym/OKAPI-PACK/index.html[/url])
Okapi 是另一个著名的文本检索实验系统。其第一版于20世纪80年代末问世,运行在Unix系统上。时至今日,经过10多年的发展,Okapi系统越来越健壮,检索精确度也越来越高。近几年,在TREC比赛中,有不少参加者采用Okapi系统取得了很好的成绩。不过,Okapi系统不是免费的,并且不提供源代码。目前,该系统可运行在Sun工作站、Linux系统以及Windows系统平台上。
Okapi 系统是由伦敦城市大学开发的。它基于概率检索模型设计,使用著名的bm25公式及其变形(bm2500、bm250)等作为求term 权值的公式。这种权重计算公式在概率模型中已经成为公认的成熟的标准计算方法。Okapi同样提供建立索引和查询的工具,分别有命令行方式和图形界面方式。
3.Lemur Toolkit系统([url=http://www-2.cs.cmu.edu/~lemur/]http://www-2.cs.cmu.edu/~lemur/[/url])
Lemur Toolkit是一个新兴的实验系统。它由卡耐基-梅隆大学(CMU)开发,在2001年公布了第一个公开的版本。其特点是在检索中引入了语言模型,更重要的是,它不仅是一个完整的检索系统,而且是以工具包的形式提供的。各功能模块都有良好的封装,并提供清晰的源代码和丰富的文档说明,研究者使用它搭建自己的实验系统易如反掌。
Lemur Toolkit的设计目标是促进和帮助在文本信息检索和语言模型方面的研究,包括特定目标检索、分布式检索、跨语言检索、文摘系统、信息过滤和文本分类等各方面技术的研究。工具包支持对大规模文本数据建立索引,对文档和查询构建简单的语言模型,同时实现了基于语言模型的检索系统。整个系统用C和C++语言实现,可在Unix和Windows系统下运行。
4.Apache Lucene:[url=http://jakarta.apache.org/lucene/]http://jakarta.apache.org/lucene/[/url]
是一个高性能(high-performance)的全能的全文检索(full-featured text search engine)的搜索引擎框架库,完全(entirely)使用Java开发。它是一种技术(technology),适合于(suitable for)几乎(nearly)任何一种需要全文检索(full-text search)的应用,特别是跨平台(cross-platform)的应用。可以进行增量的索引(Append),可以对于大量数据进行批量索引,并且接口设计用于优化批量索引和小批量的增量索引。Lucene没有定义具体的数据源,而是一个文档的结构,因此可以非常灵活的适应各种应用(只要前端有合适的转换器把数据源转换成相应结构),Lucene的文档是由多个字段组成的,甚至可以控制那些字段需要进行索引,那些字段不需要索引,近一步索引的字段也分为需要分词和不需要分词的类型:需要进行分词的索引,比如:标题,文章内容字段,不需要进行分词的索引,比如:作者/日期字段;通过语言分析器的不同扩展实现:可以过滤掉不需要的词:an the of 等,西文语法分析:将jumps jumped jumper都归结成jump进行索引/检索非英文支持:对亚洲语言,阿拉伯语言的索引支持;通过查询分析接口的实现,可以定制自己的查询语法规则:比如:多个关键词之间的 + - and or关系等; 能够支持多用户的使用。