1.1 信息检索概述
1.1.1 信息过载
互联网的飞速发展使人类进入了信息大爆炸的时代,根据相关统计数据显示,目前全球网民数量已经达到32亿人,互联网上的数据也呈指数级增长。图1-1是国外初创公司Domo发布的一张信息图,该图展示了各大网站在60秒内产生的巨大数据量。
图1-1 互联网上的一分钟
根据Domo的数据显示,在一分钟内YouTube用户会上传400个小时的新视频,Netflix用户每分钟则观看86805个小时的视频。与此同时,苹果用户每分钟下载51000个应用,亚马逊每分钟交易额达222283美元,Google在一分钟内翻译了69500000个单词,SIRI一分钟内回答了99206个问题,The Weather Channel(注:一款天气预报软件)每分钟接收13888889次天气查询请求。在社交网站方面,Facebook用户每分钟分享216302张照片,Dropbox用户每分钟上传833333个新文件,Tinder用户每分钟发布9678条表情符号推文,而Snapchat用户每分钟会发布284722张照片。
就在你看完上面这段内容的时间里,所有的一切都可能发生了改变。我们处在一个大数据时代,也是一个信息过载(Information Overload)的时代。大数据时代的特点可以用4个V来概括:
● Volume
数据量大,全球每年产生的数据总量已经达到ZB(1ZB=240GB)级别。
● Variety
数据种类繁多,如文本、图片、视频、地理信息、各种传感器信息等。
● Velocity
数据流动速度快,对数据处理的时效性要求高。
● Value
大数据蕴含着巨大的价值,可以帮助人们解决数据量不足时所不能解决的问题。
信息过载是指社会信息超过了个人或系统所能接受、处理或有效利用的范围,并导致故障的状况。信息过载主要有以下3个特点:
(1)受传者对信息反映的速度远远低于信息传播的速度。
(2)大众媒介中的信息量大大高于受众所能消费、承受或需要的信息量。
(3)大量无关的、没用的、冗余的信息严重干扰了受众对相关有用信息的准确分析和正确选择。
信息过载是信息时代信息极大丰富的负面影响之一。
1.1.2 信息检索定义
信息资源总量呈爆炸式增长,在信息的海洋里获取想要的信息变得更加困难。为了解决信息过载的问题,无数科学家和工程师提出了很多天才的解决方案,其中最具代表性的是分类目录和搜索引擎。
分类目录是将网站信息系统地分类整理,提供一个按类别编排的网站目录,在每类中排列着属于这一类别的网站站名、网址链接、内容提要以及子分类目录,可以在分类目录中逐级浏览寻找相关的网站,分类目录中往往还提供交叉索引,从而可以方便地在相关的目录之间跳转和浏览。互联网早期的门户网站,比如雅虎、搜狐、新浪等,都是将不同来源的信息以一种整齐划一的形式整理、储存并呈现给用户,用户根据信息来源、信息类型、关键字等方式筛选网站内容。
搜索引擎是指自动从因特网搜集信息,经过一定整理以后,提供给用户进行查询的系统。国外具有代表性的搜索引擎有Google、Bing、Yahoo等,国内具有代表性的搜索引擎有百度搜索、搜狗搜索、360搜索等。
我们常用的搜索引擎是Web搜索,是信息检索的一个分支,学术上的信息检索(Information Retrieval,简称IR)的定义为:信息检索是从大规模非结构化数据(通常是文本)的集合(通常保存在计算机上)中找出满足用户信息需求的资料(通常是文档)的过程。
1.1.3 信息检索常用术语
信息检索领域有一些常用的术语,深刻理解这些术语对入门信息检索非常有必要,简介如下。
● 用户需求(User Need,简称UN)
用户需要获得的信息。严格地说,UN只存在于用户的内心,但是通常用文本来描述,如查找与“2014世界杯”相关的新闻,有时也称为主题(Topic)。
● 查询(Query)
UN提交给检索系统时称为查询(Query),如“iPhone7价格”。对同一个UN,不同人不同时候可以构造出不同的Query,上述需求也可表示成“苹果7价格”。Query在IR系统中往往还有内部表示。
● 文档(Document)
文档是信息检索的对象,文档不仅仅可以是文本,也可以是图像、视频、语音等多媒体文档。
● 文档集(Crops)
由若干文档构成的集合称为文档集合,文档集有时也称为语料库。海量的互联网网页、文件系统中的文本文件、大量的电子邮件,都是文档集合的具体例子。
● 文档编号(Document ID)
文档ID是给文档集中的每个文档赋予的唯一标识符,通过文档ID来区分不同的文档,这样能够方便搜索引擎的内部处理。缩写为docID。
● 词条化(tokenization)
词条化是将给定的字符序列拆分成一系列子序列的过程,拆分的每个子序列称为一个词条。词条化的过程中有可能会去除标点符号等特殊字符。下面是一个词条化的具体例子。
输入:Whatever happens tomorrow, we have had today.
输出:
● 词项(Term)
词项是经过语言学预处理之后归一化的词条。词项是索引的最小单位,一般情况下可以把词项当作词,但词项不一定就是词。对于上面的句子,产生词项如下:
● 词项-文档关联矩阵(Incidence matrix)
词项-文档关联矩阵是表示词项和文档之间所具有的一种包含关系的概念模型,表1-1展示了其含义。表中的每列代表一个文档,每行代表一个词项,打对勾的位置代表包含关系。
表1-1 词项-文档关联矩阵
从纵向即文档这个维度来看,每列代表一个文档包含的词项信息,比如doc1包含了term1、term4和term5,而不包含term2、term3、term6。从横向即词项这个维度来看,每行代表该词项在文档中的分布信息,比如对于term1来说,doc1、doc3、doc6中出现过term1,而其他文档不包含term1。矩阵中其他的行列也可作此种解读。
● 词项频率(Term frequency)
同一个单词在某个文档中出现的频率。比如,单“apple”在某文档中出现了3次,那么该单词在该文档中的词项频率就是3。
● 文档频率(Document frequency)
出现某词项的文档的数目。比如,单词“China”只出现在文档集合中的文档1和文档5,那么该单词的文档频率就是2。
● 倒排记录表(Postings lists)
倒排记录表用于记录出现过某个单词的所有文档的文档列表以及单词在该文档中出现的位置信息,每条记录称为一个倒排项。通过倒排列表即可获知哪些文档包含哪些单词。
● 倒排文件(Inverted file)
倒排记录表在磁盘中的物理存储文件称为倒排文件。
1.1.4 信息检索系统
一个完整的信息检索系统的基本架构如图1-2所示。信息检索系统可以分为信息采集、信息整理和用户查询3部分。
图1-2 IR系统基本架构图
1.信息采集
信息采集基本都是通过网络爬虫(Spider)自动完成的。网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。互联网上的网页数以亿计,遍布在全球的各个服务器上,通过爬虫可以将网页下载下来进行进一步的分析和挖掘,经过格式处理之后提取网页信息为构建索引做准备。
2.整理信息
信息检索系统整理信息的过程称为索引构建。信息检索系统不仅要保存搜集起来的信息,还要将它们按照一定的规则进行编排,这样就不用重新翻查它所有保存的信息就能迅速找到所要的资料。如果信息是不按任何规则地随意堆放在系统中,那么它每次找资料都得把整个资料库完全翻查一遍,如此一来再快的计算机系统也没有用。
3.接受查询
用户向信息检索系统发出查询请求,信息检索系统接受查询并向用户返回检索到的文档。信息检索系统(尤其是商用搜索引擎)每时每刻都要接到来自大量用户的几乎是同时发出的查询,它按照每个用户的要求检查自己的索引,在极短时间内找到用户需要的文档,并返回给用户。目前,搜索引擎返回主要是以网页链接的形式提供的,通过这些链接用户便能到达含有自己所需资料的网页。搜索引擎通常会在这些链接下提供一小段来自这些网页的摘要信息以帮助用户判断此网页是否含有自己需要的内容。