信息检索和文本聚类的开源软件(部分)
(开源搜索引擎索引库)
Free Software for research in Information Retrieval and Textual Clustering(partly)
Emmanuel Eckard and Jean-C´edric Chappelier
作者:
Emmanuel Eckard
http://people.epfl.ch/emmanuel.eckard
博士,机器学习,信息检索领域,洛桑联邦理 工学院。
Jean-C´edric Chappelier
http://liawww.epfl.ch/People/chaps.html
副教授,自然语言处理,洛桑联邦理工学院。
翻译:
史春奇,
搜索工程师,
中科院计算所毕业,
chunqi.shi@hotmail.com
原 文:http://infoscience.epfl.ch/record/115460/files/Free_sofware_for_IR.pdf
摘要
本文综述了主流的信息检索领域的开源软件, 和相关背景。 本文可以作为选择合适的开源工具作为参考资料。
1 简介
自1950年代后, 自然语言 处理高速发展。 随着互联网和计算机的普及, 信息变得庞大无比, 因而需要自动系统来进行管理。并且万维网的大众化带来了类似搜索引擎(Google, Yahoo), 机器翻译(远景公司Altavista--巴别鱼翻译Babel Fish Translation)这样自然语言处理极大需求。
文本自然语言处理可以划分成多个子领域, 每个领域又都有特殊的问题, 提供特别的服务。部分领域相关性很高,可能是之间拥有相似性(例如, 信息检索和文本聚类, 两者精髓一致, 要么是处理一组文本, 要么处理两组文本), 也可能是基于共同的服务(例如, 文本分块或者分词为信息检索提供便捷)。 因此, 自然语言处 理的流程必然包含一系列特异化的步骤。 不同研究着眼点会不一样。一个步 骤的输出可能成为另外一个步骤的输入。 一个的底层处理可能会是另外一个 步骤的高层处理。 这要取决于研究者是专注于索引,分词, 文档聚类, 还是评 估。
本文从信息检索的角度出发, 输入是自然语言的文本集合, 由计算机术语空间向量模型表示。 这种方式中, 假定 文本已经做完分词和变形处理, 它的索引被认为是低端工作。 其他流程在输入输出上和标准信息检索大体一致, 即聚类, 分类, 过滤, 机器翻译, 和问题回答。
随着万维网的普及信息检索技术传播极快。 基于网页的信息检索尤其强调太(T)级别数据量的海量数据管理, 以及对用户查询的快速响应(尤其用户考虑网络延迟的情况下, 目前网页搜索引擎应用中, 网络延迟几乎占用户等待时间的一半)。 这种基于海量数据的高效查询的需求吸引了无数学术研究, 已经工业化的开发超大系统。文本检索大会TREC的最新期已经Web和Terabytes的方向, 提供给 研究人员对应的文档集。
图一, 含有隐含特征的信息检索处理流程。 索引流程囊括了类似分块, 消歧或者词根替换, 以及应用外在信息。 隐含变量的处理步骤是基于带潜在参数的文档的模型, 例如贝叶斯(Naïve Bayesian), LSI, PLSI,或者Smoothed Dirichlet。 而文档比较基于表示文档的向量空间模型的相似性。
在此例中, 信息检 索由含隐形变量的空间学习, 含隐含变量的空间映射和比较。
2 软件
2.1 信息检索
信息检索的境况相当微妙, 正如本网写到, 没有一个软件框架被认为是行业内的标准工具集。 因此, 一 些专业的实验室在升级他们自己的工具, 采用不同的编程语言, 专注于信息检索的不同的阶段, 并且以各异的证书来发布。 选个好的软件框架相当重要,原因如下:高效的访问, 存储和数据处理是复杂而具体的任务, 需要优化措施远超出了信息检索领域。 数据索引可能需要分词, 分块, 词句消歧, 等等。这些很多时候会落在目标领域之外。现成的软件已经提供了完成的工具链, 根本不要求你懂模型, 因此可能进行基线比较。 开源软件相当适合类似比较实验, 因为免费所以方便随便测试, 因为开源所以可以开发新算法, 还因为软件架构的通用性使得第 三方可以在研究中采用合适的软件。
大部分软件很明显的共有特征是,都适用于上G的数据集, 这是为了和TREC的Terabyte的方向一致, 当 用大数据集的时候, 方便考察信息检索模型的行为特征。
接下来, 综述了下 知名软件。本综述可由法国信息检索社区获得。 在图3,4和5中出了表来说结果。
2.1.1 Lemur(狐 猴)
Lemur是信息检索和语言建模的工具。 以BSD证书发布。网站是http://www.lemurproject.org 项目组织很好, 是研究的基线。
Lemur提供六种检索模型:TFIDF, Okapi (BM 25), Simple KL, InQuery, CORI集合选择, cosine距离, Indri SQL。另外, Lemur的可选的分类工具中提供了霍夫曼(Hoffman)统计语义分析(Probabilistic Semantic Analysis)或者至少其中的最大似然估计学习部 分。 这样的话, 查询词如果不用折叠方法的话, 就没法很容易地被处理。而折叠方法既没有在Lemur实现, 而且在研究中也没有很好地被定义。
Lemur本身就是一个库。 而提供独立的搜索引擎的包叫Indri(大狐猴),Indri是并行的, 可当 成过滤器来用也适合处理T字节数据。
Lemur建索引支持PDF, HTML, XML格式和TREC的语义, 编码采用UTF-8。
2.1.2 Lucene
Lucene是一个信息检索库, 由Apache基金会提供,采用Apache软件证书, 网站 是http://lucene.apache.org/java/docs/index.html
Lucene最早Java编写,也有Delphi, Perl, C#, C++,Python, Ruby and PHP的版本。LucQE的Lucene查询扩展模块就提供接口用Lecene来进行TREC实验。
2.1.3 Terrier(太字节检索)
Terrier(小猎犬/梗犬)是大数据量的信息检索系统。用Java开发, 以Mozilla开源证书发布。
Terrier号称全面支持TREC实验,可以做索引,查询,评估标准的TREC数据集, 例如AP, WSJ, WT10G,.GOV和 .GOV2
Terrier提供TF-IDF, Okapi’s BM25和Rocchio的查询扩展。 据测试,适用所有的TREC数 据集。
开发者可以参考http://terrier.org/ Terrier适用框架应用, 用户必须要写一个appmain()的应用。 参数以XML方式配置。
2.1.4 Zettair
Zettair是皇家墨尔本理工大学(RMIT University)以BSD证书发布的文本信息检索系统。
Zettair支持文本, HTML, TREC格式。
网上介 绍在http://www.seg.rmit.edu.au/zettair/quick_start_trec.html 。Zettair的查询日志符合TrecEval格式要求。
Zettair测试过TREC 太 字节方向的426G的 数据集合。
Zettair是C开发 的。
2.1.5 Zebra
Zebra(斑马)是以GPL证书发布的索引和检查软件。网站是http://www.indexdata.dk/zebra/ 。
Zebra经过测试适合几十G的数据集。
Zebra是用C开发的。
2.1.6 Xapian
Xapian是一个统计检索的信息检索库。 基于它的独立搜索引擎包叫Omega。 Xpian以GPL发布, 网站是http://www.xapian.org/。
Xapian是C++开发的, 已经有Perl, Python, PHP, Java, TCL,Ruby 和 C#的版本。
Xapian提供了主要的Linux发行(rpm和deb)的预编译的软件包。
由于Xapian不提供PSLI, 本文实现了一个PSLI来作为更通用的软件层。这个版本和Lemur是对照的基准, 能够产生更准确的结果。 给定一个统计分布, 生成了50个文档, 这个算法被用到文档上看它是如何来发现原始分布的(图2)。