1.1什么是信息检索
Information retrieval is a field concerned with the structure, analysis, organization, storage, searching, and retrieval of information. From Gerard Salton
信息检索是一个涉及信息结构,分析,组织,存储,搜索和检索的领域。
信息检索主要焦点是文本和文本文件。其中文档和典型的数据库记录的区别:
文档多是文本,非结构化。典型数据库记录是结构化的,有字段和属性。
结构化的数据含义和格式都非常明确,比较和查询他们非常容易。非结构的数据则没那么容易,以下为例:
现在考虑一个关于两家银行合并的新闻报道。故事将有一些属性,例如故事的标题和来源,但主要内容是故事本身。在数据库系统中,这一关键信息通常存储为单个大型属性,没有内部结构。提交给与此故事相关的网络搜索引擎(例如Google)的大多数查询将采用“银行合并”或“银行接管”的形式。要进行此搜索,我们必须设计可以将查询文本与故事文本进行比较的算法,并确定故事是否包含正在搜索的信息。定义一个单词,一个句子,一个段落或一个整个新闻故事的含义比定义一个帐号要困难得多,因此比较文本并不容易。理解和建模人们如何比较文本,设计计算机算法以准确地执行这种比较,是信息检索的核心。
另外,信息检索不仅在结构化数据、文本内容上应用广泛,在多媒体(图像、音频和视频)的应用也越来越广泛。
信息检索的场景:用户向搜索引擎输入结果,得到排序过的结果。
如万维网,企业搜索,垂直搜索(特定主题),桌面搜索,点对点搜索(没有任何集中控制的情况下在节点或计算机的网络中查找信息)
搜索和相关信息检索技术用于广告,情报分析,科学发现,医疗保健,客户支持,房地产等。任何涉及文本集合或其他非结构化信息的应用程序都需要组织和搜索该信息。
基于用户查询进行搜索(有时称为临时搜索[ad hoc search],因为可能的查询范围很大而且没有预先确定)并不是在信息检索中研究的唯一基于文本的任务。 其他任务包括过滤,分类和问答。 过滤或跟踪涉及根据个人的兴趣检测感兴趣的故事,并使用电子邮件或其他机制提醒用户。 分类使用一组定义的标签或类别(例如Yahoo! Directory中列出的类别)并自动将这些标签分配给文档。 问答是类似于搜索,但针对的是更具体的问题,例如“珠穆朗玛峰的高度是多少?” 问答的目标是返回文本中找到的特定答案,而不是文档列表。 表1.1总结了信息检索领域的一些方面或维度。
1.2 信息检索的大问题
信息检索研究人员关注的几个关键问题在使用数十亿网页的商业网络搜索引擎时代仍然同样重要,就像20世纪60年代在包含大约1.5兆字节文本的文档集合上进行测试时那样。其中一个问题是相关性。相关性是信息检索的基本概念。简而言之,相关文档包含一个人在向搜索引擎提交查询时所寻找的信息。虽然这听起来很简单,但是一个人决定某个特定文档是否相关的因素有很多。在设计用于比较文本和排名文档的算法时,必须考虑这些因素。简单地将查询的文本与文档的文本进行比较并寻找完全匹配,如在数据库系统中或在Unix中使用grep实用程序所做的那样,在相关性方面产生非常差的结果。一个显而易见的原因是,语言可以用来以多种不同的方式表达相同的概念,通常使用的词语也不一样。被称为信息检索中的词汇不匹配问题(vocabulary mismatch problem)。
区分主题相关性(topic relevance)和用户相关性(user relevance)也很重要。 如果文本文档位于同一主题上,则该文档与查询主题相关。 例如,关于堪萨斯州龙卷风的新闻报道将与查询“恶劣天气事件”有关。 提出问题的人(称为用户)可能不会认为与这个故事是相关的。但是,如果她之前已经看过这个故事,或者故事是多年前的故事,或者故事是中国出版社用中文发表的,那么这个故事跟用户就是相关的。 用户相关性将故事的这些附加功能考虑在内。
为了解决相关性问题,研究人员提出了检索模型(retrieval models)并测试它们的工作情况。 检索模型是匹配查询和文档的过程的正式表示。 它是在搜索引擎中用于生成排序的文档列表的排名算法的基础。 一个好的检索模型将找到可能被提交查询的人认为相关的文档。 一些检索模型侧重于主题相关性,但是在真实环境中部署的搜索引擎必须使用包含用户相关性的排名算法。
信息检索中使用的检索模型的一个有趣特征是它们通常模拟文本的统计特性而不是语言结构。 例如,排名算法通常更关注单词出现的计数,而不是单词是名词还是形容词。 更高级的模型确实包含语言特征,但它们往往具有次要的重要性。 使用词频信息来表示文本是从一个信息检索先驱H.P.Luhn(1950s)开始的。 直到20世纪90年代,文本的观点才在其他计算机科学领域(如自然语言处理)变得流行。
信息检索的另一个核心问题是评估(evaluation)。由于文档排名的质量取决于它与人的期望的匹配程度,因此有必要尽早制定评估方法和实验程序,以获取这些数据并使用它来比较排名算法。西里尔·克莱弗顿(Cyril Cleverdon)在20世纪60年代早期开发了评估方法,他使用的两项措施,精确度(precision)和召回率(recall)仍然很受欢迎。精确度是一种非常直观的衡量标准,是检索到的相关文档的比例(检索到的相关文档数/检索到的文档数)。召回是检索的相关文件的比例(检索到的相关文档数/所有相关文档数)。当使用召回衡量时,假设已知给定查询的所有相关文档。这种假设在网络搜索环境中显然存在问题,但是对于较小的文档测试集合,该度量可能是有用的。用于信息检索实验的测试集合包括一组文本文档,典型查询的样本以及每个查询的相关文档列表(相关性判断)。最著名的测试集合是与TREC(文本检索会议)评估论坛相关的集合。
检索模型和搜索引擎的评估是一个非常活跃的领域,目前大部分时间都集中在使用来自用户交互的大量日志数据,例如点击数据,它记录了在搜索会话期间点击的文档。 点击率和其他日志数据与相关性密切相关,因此可用于评估搜索,但搜索引擎公司除日志数据外仍使用相关性判断来确保其结果的有效性。
信息检索的第三个核心问题是强调用户及其信息需求(infomation needs)。应该清楚,因为搜索的评估是以用户为中心的。搜索引擎的用户是质量的终极评判者。已经引发了大量关于人们如何与搜索引擎互动的研究,特别是开发了帮助人们表达其信息需求的技术。信息需求是人提交给搜索引擎的查询的根本原因。与对数据库系统的请求相反,例如对于银行账户的余额,文本查询对用户实际想要的内容的描述很差。诸如“猫”之类的单字查询可以是关于猫的购买地点或百老汇音乐的描述的信息请求。然而,尽管缺乏特定的城市,但单词查询在网络搜索中非常常见。技术问卷调查,查询扩展和相关反馈使用交互和上下文来重新初始查询以便生成更好的排名列表。
这本问题将在本书中出现,并将在相当详细的讨论中进行讨论。 我们现在有足够的背景来开始讨论信息检索研究的主要产品 - 即搜索引擎。
1.3搜索引擎
搜索引擎是信息检索技术在大规模文本集合中的实际应用。 网络搜索引擎就是一个明显的例子,但正如前面提到的,搜索引擎可以在许多不同的应用程序中找到,例如桌面搜索或企业搜索。 搜索引擎已存在多年。 例如,在线医学文献检索系统MEDLINE始于20世纪70年代。 术语“搜索引擎”最初用于指代用于文本搜索的专用硬件。 然而,从20世纪80年代中期开始,它逐渐被用作优先使用“信息检索系统”作为软件系统的名称,该系统将查询与文档进行比较并产生排序的文档结果列表。 当然,搜索引擎比排序算法更多,我们将在下一章讨论这些系统的一般架构。
搜索引擎有许多配置,可以反映它们的设计目标。谷歌和雅虎等网络搜索引擎必须能够捕获或抓取许多兆兆字节的数据,然后为每天从世界各地提交的数百万条查询提供亚秒响应时间。企业搜索引擎(例如,Autonomy)必须能够处理公司中的各种信息源,并使用公司特定的知识作为搜索和相关任务的一部分,例如数据挖掘。数据挖掘(data mining)是指自动发现数据中有趣的结构,包括聚类(clustering)等技术。桌面搜索引擎,例如Microso VistaTM搜索功能,必须能够在用户创建或查看时快速合并新文档,网页和电子邮件,并提供直观的界面来搜索这种异构的信息组合。谷歌等系统在这些类别之间重叠,可用于企业和桌面搜索的配置。
开源搜索引擎是另一类重要的系统,其设计目标与商业搜索引擎有些不同。这些系统中有许多,维基百科的信息检索页面提供了许多系统的链接。特别感兴趣的系统是Lucene,Lemur以及本书提供的系统,Galago。Lucene是一种流行的基于Java的搜索引擎,已被广泛用于商业应用。它使用的信息检索技术相对简单.Lemur是一个开源工具包,包括基于Indri C ++的搜索引擎。 Lemur主要被信息检索研究人员用来比较高级搜索技术。 Galago是一个基于Java的搜索引擎,基于Lemur和Indri项目。本书中的作业广泛使用了Galago。它旨在快速,适应性强且易于理解,并结合了非常有效的信息检索技术。
搜索引擎设计中的“大问题”包括信息检索已经确定的问题:有效的排名算法,评估和用户交互。 然而,搜索引擎的许多其他关键特性是由于它们在大规模操作环境中的部署而产生的。 这些功能中最重要的是搜索引擎在响应时间,查询吞吐量和索引速度等方面的性能。 响应时间是提交查询和接收结果列表之间的延迟,吞吐量测量在给定时间内可以处理的查询数,索引速度是文本文档可以转换为搜索索引的速率。 索引是一种提高搜索速度的数据结构。 搜索引擎的索引设计是本书的主要议题之一。
另一个重要的性能指标是新数据加入索引的速度有多快。 搜索应用程序通常处理动态,不断变化的信息。 覆盖率衡量公司信息环境中的现有信息有多少被索引并存储在搜索引擎中,新近度(recency)或新鲜度度(freshness measures)衡量存储信息的“年龄”。
搜索引擎可以与小型集合一起使用,例如桌面上的几百封电子邮件和文档,或者非常大的集合,例如整个Web。 可能只有给定应用程序的少数用户,或者数千个用户。 可伸缩性(Scalability)显然是搜索引擎设计的一个重要问题。 适用于给定应用程序的设计应该随着数据量和用户数量的增长而继续工作。 在1.1节中,我们描述了搜索引擎如何在许多应用程序和许多任务中使用。 要做到这一点,他们必须是可定制的或适应性的。 这意味着搜索引擎的许多不同方面,例如排名算法,接口或索引策略,必须能够被调整并适应应用程序的要求。
影响搜索引擎设计的实际问题也会出现在特定的应用程序中。 最好的例子是网络搜索中的垃圾邮件(spam)。 垃圾邮件通常被认为是不受欢迎的电子邮件,但更一般地,它可能被定义为针对某些商业利益而设计的文档中的误导性,不适当或不相关的信息。 有许多类型的垃圾邮件,但搜索引擎必须处理的一种类型是放入文档中的垃圾邮件单词,以便在响应流行查询时检索它。 “垃圾索引”的实践可以显着降低搜索引擎排名的质量,网络搜索引擎设计师必须开发识别垃圾邮件并删除这些文档的技术。 图1.1总结了搜索引擎设计中涉及的主要问题。
基于对信息检索和搜索引擎之间关系的讨论,我们现在考虑计算机科学家和其他人在搜索引擎的设计和使用中扮演的角色。
搜索引擎工程师
信息检索研究涉及文本和语言的数学模型的开发,测试集合或用户的大规模实验,以及大量的学术论文写作。 由于这些原因,它往往由学者或研究实验室的人员完成。 这些人主要接受计算机科学方面的培训,但也有信息科学,数学,偶尔还有社会科学和计算语言学的培训。 那么谁与搜索引擎合作? 在很大程度上,它是同一类型的人,但更注重实践。 计算行业已经开始使用术语搜索工程师来描述这种类型的人。 搜索工程师主要是受过计算机科学培训的人员,主要是系统或数据库背景。 令人惊讶的是,他们中很少有人接受过信息检索方面的培训,这是本书的主要动机之一。
搜索工程师的角色是什么? 当然,在设计和实施新搜索引擎的主要网络搜索公司工作的人是搜索工程师,但大多数搜索工程师都是为广泛的商业应用修改,扩展,维护或调整现有搜索引擎的人。 为搜索引擎设计或“优化”内容的人也是搜索工程师,实施处理垃圾邮件技术的人也是如此。 搜索工程师使用的搜索引擎涵盖了上一节中提到的整个范围:他们主要使用开源和企业搜索引擎进行应用程序开发,但也充分利用了桌面和Web搜索引擎。
搜索在现代计算机应用中的重要性和普遍性意味着搜索工程已经成为计算机行业的一个重要职业。 然而,在计算机科学系教授的课程很少,这使得学生能够理解所涉及的各种问题,特别是从信息检索的角度来看。 本书旨在为潜在的搜索工程师提供他们所需的理解和工具。
Ref
在每一章中,我们都提供了一些指向论文和书籍的内容,这些论文和书籍提供了有关所涵盖主题的更多详细信息。 额外的阅读对于理解本书而言不是必需的,而是在某些情况下提供更多背景,更深入的内容,对于高级主题,将描述本书未涉及的技术和研究结果。在我们看来,关于信息检索的经典参考文献是Salton(1968; 1983)和van Rijsbergen(1979)的著作。 Van Rijsbergen的书仍然很受欢迎,因为它可以通过网络获得。所有这三本书都提供了对信息检索早期研究的完美描述,直到20世纪70年代末。Salton的早期着作在定义计算机科学信息检索领域方面尤为重要。 最近的书籍包括Baeza-Yates和Ribeiro-Neto(1999)以及Manning等人。(2008年)。
关于本书所涉及的所有主题的研究论文可以在计算机协会会议记录(ACM)信息检索特别兴趣小组(SIGIR)会议上找到。这些程序可在网上获得,作为ACM数字图书馆的一部分。关于信息检索和搜索的优秀论文也出现在欧洲信息检索会议(ECIR),信息和知识管理会议(CIKM)以及网络搜索和数据挖掘会议(WSDM)上。 WSDM会议是万维网会议(WWW)的衍生产品,其中包括一些关于网络搜索的重要论文。 TREC研讨会的会议记录可在线获取,其中包含来自许多不同学术和行业团体的新研究技术的有用描述。 TREC实验的概述可以在Voorhees和Harman(2005)中找到。越来越多的与搜索相关的论文开始出现在数据库会议中,例如VLDB和SIGMOD。偶尔的论文也出现在语言技术会议上,如ACL和HLT(计算语言学和人类语言技术协会),机器学习会议等。