千度检索与语言处理实验平台--开幕片

 

   从今天开始我要正式的做一些关于我毕业设计系统的文章了。之前有打算写一些文章,但是总感觉缺了些知识的底蕴在里面。经过近 2 个多月的积累,我逐渐的形成了一些想法。在这期间,我完成了这个系统的 debug 版本的开发,从中积累了一些经验,同时也学到了很多知识。希望我的文章可以对于各位读者有所启发。

 

序曲:

     两个多月前,我正式的来到了我现在所在的实验室--沈阳航空工业学院 知识工程中心。这个实验室主要研究的方向是自然语言处理,其中包括信息检索、机器翻译、人工智能、知识工程等有趣的话题。我的导师就是这个实验室的leader,蔡东风教授。这里浓厚的学习与研究氛围激发了我的热情,作为毕业前在学校度过的最后时光,我非常的珍惜这段宝贵的时光。关于这段时间的安排,毕业设计当然是我努力的主线与主要成果。我努力的学习、研究,精心的构建了一个用于科研实验的检索系统,以此作为我为蔡老师以及实验室各位师兄的关怀的一点微不足道的回报。希望我这一阶段的努力能够为所有关心我的人带来一丝启发、喜悦或者是欣慰。也希望这些努力能够为我大学的学习生活画上一个圆满的句号。

思想来源:

      Internet的发展给世界带来了一场信息革命,通过互联网,人们可以简单而快捷的获取海量信息。然而世界并没有因此而变得“平坦”,人们仍然无法平等的获取信息。其中的一个最为突出的因素就是“信息爆炸”的问题。面对着如此海量的信息,如何提取我们需要的“有用”信息呢?

搜索引擎,作为一种目前较为成熟的解决方案,得到了广泛的重视。随着Google为代表的第二代搜索引擎在商业上取得了极大的成功,世界各地掀起了一场“搜索引擎”热潮。无论是在工业界还是在学术界,搜索引擎的相关技术始终是热门话题。

搜索引擎实际上就是一个信息检索系统,其本质就是从非结构化的信息集合中找出与用户需求相关信息的计算机软件系统[1.信息检索系统导论]。目前比较成熟的检索系统都是大量优化技术的组合,整个系统的性能与效果不仅仅取决于某个部分的表现,还要考虑各个部分的结合方式。因此,检索系统的研究人员除了要解决自己所研究的部分之外,还有兼顾整个系统的构建。特别在实验当中,研究与开发人员不仅要构建自己所研究的优化技术,还要去构建检索系统的其它部分,这样就使得很多人无法集中精力去解决那些本质上的复杂性问题。

在工业界,比较著名的检索开发工具有Apache Lucene,支持P2P架构的Hyper Estraier,基于SQL的全文检索引擎Sphinx,结构化文本索引和检索Zebra等。其中最广泛使用的是lucene,它基于Java开发,接口简洁,具有良好的系统构建与可扩展性。然而,它有性能较差,提供的检索算法较少,无法支持大规模的数据处理等弱点,这样导致这些以Lucene为代表的商用检索工具并不适用于科学研究。

研究人员往往需要一个支持大规模数据的、灵活的、健壮的、易扩展的实验平台,用来测试和验证各种新的优化技术以及算法。在这种情况下,很多国外的科研机构都开发了自己的检索工具平台。具有代表性的有卡内基梅隆大学(CMU)与马萨诸塞州立大学(UMass)联合开发的语言模型和信息检索工具包Lemur,皇家墨尔本理工大学(RMIT)Zettair,加拿大滑铁卢大学的Wumpus等。其中比较有特色的是Lemur,其对于检索效果试验有良好的支持,目前也被很多科研机构所采用。但在检索效率、索引实验等方面,Lemur并不能提供良好的扩展支持。国内目前同类的检索工具仅有中国科学院计算所开发的FirteX,虽然系统的构架与思路不错,但是在核心检索模型的支持上与国外的工具还有一定的差距,所以在目前的国际检索评测会议上,还没有出现基于国内的检索工具开发的系统。

Lemur本身并不是一个完整的检索系统,而是一个检索系统的工具集合。它仅提供了构建检索系统所必要的组件和API。虽然lemur后续推出了开源项目indri,其为一个完整的检索系统程序,但是与lemur本身一样,使用这些工具开发系统均存在着如下问题:

1.    文档支持比较粗糙,部分信息无法同软件最新版本同步。

2.    参考资料极少,中文的介绍资料暂无。

3.    使用者多为科研机构,开发者相对较少,社区不活跃。

4.    Lemur本身实现复杂,进行开发需要一定的领域知识。

5.    对于中文的支持较弱,仅支持单字的切分。

6.    开源软件,部分组件发现的bug无法得到及时的修补。

鉴于上述开发系统当中所遇到的问题,我产生了构建这样一个检索与语言处理平台的想法。

系统实现目标:

1.    深入研究lemur,包括它所提供的具体功能、API调用方式、开发方法、内部实现机制等问题。

2.    基于lemur开发检索平台,该平台需具有如下特征:

l  整个系统的构架保持lemur的风格,追求灵活性与功能的强大与完整性;同时系统结构力求简洁,尽量的减少lemur中设计的复杂性问题。

l  系统模块定义清晰,构架具有良好的伸缩性,力争做到每一个组件都可以容易的扩展、定制、维护等。

l  提供对于英文与中文的良好语言处理支持。

l  友好的交互界面,使得科研人员可以“点按钮,做实验”。

l  尽量提高系统的响应速度。

l  尽量保证系统代码的简洁性与健壮性。

l  形成详细的开发文档,并提供关于检索系统的构建思想以及lemur使用的一些介绍性文档,以供初学者学习

 

你可能感兴趣的:(搜索引擎,Lucene,自然语言处理,语言,工具,平台)