搜索引擎与信息处理 复习笔记

搜索引擎与信息处理 复习笔记

搜索引擎与信息处理 复习笔记

第1讲 信息检索与搜索引擎技术简介

一、什么是信息检索

信息检索简介

信息检索:是关于信息的结构、分析、组织、存储、搜索和检索的领域。

检索对象:信息检索主要针对文档(网页、电子邮件、论文、图书、新闻等),如今也视图处理各种多媒体信息。

文档检索与数据库查询的区别:数据库有良好结构(记录、属性);而文档大部分信息是文本,文本是无结构的,不过文档具有一定的结构(标题,章节,摘要等),信息检索会充分利用到这些信息。

信息检索的维度
  • 内容实例(检索对象的类型):文本、图像、视频、扫描文档、音频
  • 应用实例(检索系统的类型):网络搜索(万维网)、垂直搜索(针对某一行业的专业搜索)、企业搜索、桌面搜索(搜索硬盘中的文档)、P2P搜索
  • 任务实例(检索服务的目的):特殊搜索、过滤、分类、问答
信息检索中的三大关键问题
  1. 相关性:是否包含用户输入查询时想要找的信息
    • 话题相关:内容有关联
    • 用户相关:与当前用户的需求一致
  2. 评价:用于衡量信息检索的效果或质量
    • 评价指标:精确率、召回率、F值、点击流分析
  3. 用户的信息需求:当输入某个查询时,用户到底想要什么
    • 对搜索的评价是以用户为中心的,用户需求影响结果排序
    • 用户是搜索质量的最终审判者
搜索引擎

泛指“信息检索系统”,描述用来比较查询和文档生成文档排序结果软件系统

基本类型:

  • 网络搜索引擎(爬取T级数据,提供毫秒级查响应)
  • 企业搜索引擎(处理公司内不同类型信息源,甚至利用数据挖掘工具来分析发现结构)
  • 桌面搜索引擎(提供直观界面搜索异质的混合信息,如浏览的网页、文档、邮件等)
搜索引擎设计的核心问题

除了上面提到的信息检索中的三大关键问题,还有:

  • 性能:有效的搜索与索引
  • 合并新数据(到索引中):覆盖率和鲜度(新近性)
  • 可扩充性(可小可大):随着数据量和用户量而增长
  • 自适应性(可定制):为适应特定应用而做调节(排序算法、界面、索引策略)
  • 特殊信息:如垃圾信息

二、搜索引擎的基本架构

软件架构

架构:提供对系统中重要组件及组件之间的关系高层次描述

软件架构:一组软件组件;组件提供的接口;各组件之间的联系

搜索引擎的基本构件以及组件的基本功能

两种核心功能:索引处理查询处理

  • 索引处理组件集:
    索引处理

    • 文本采集组件
      • 爬虫
        最普遍的是网络爬虫,通过追踪网页的超链接来寻找和下载页面。
      • 信息源
        是一种存取实时文档流的机制
      • 文档转换
        将爬虫或信息源提供的各种文档转换为文本元数据格式
      • 文档数据库
        管理大量文档以及这些文档相关的结构化数据(标题、摘要、锚文本);
        可提高检索效率和快速生成显示结果(标题、摘要、快照)
    • 文本转换组件
      • 解析器
        处理文本中的词素序列,识别结构化元素(标题、超链接)
        词素的识别与切分(大小写、消歧、专用名词)
        使用HTML/XML等完成文档结构识别(标签语义)及内容删减
      • 停用词处理
        引入停用词表,便于去除文本中的无意义词或频繁词(的,为,和)
      • 词干提取
        用于把同一个词干得到的派生词进行归类,提高匹配可能性
        但是可能导致搜索问题(如fish:钓鱼,fishing:渔业),对英语重要对中文则无用
      • 超链接分析
        计算网页重要度,锚文本(可提高用户对指向网页的吸引力)很有用
      • 信息提取
        提取复杂的索引项(加粗、题目中词)
        重点研究具有指定语义内容的特征(关键词、人名、地名等识别)
      • 分类器
        识别与类别相关的元数据(如体育、政治、商业)
        垃圾文档判定(广告、垃圾邮件等识别)
    • 索引创建组件
      • 文档特征统计
        汇总和记录文档中词的特征及文档的统计信息
        出现哪些词、位置、次数,文档的日期、标题、长度
      • 特征权重计算
        权重由检索模型确定,依据文档特征统计结果
        权重反映文档中词的重要性,是文档排序的依据
      • 倒排索引
        依据“文档-特征”统计信息,建立基于特征的倒排文件
        为提高处理效率,通常需要压缩倒排文件
        倒排索引是实现高效检索的重要基础
      • 索引分派
        为提高检索效率(并行处理),索引需要分布存储(分块、复制等)
        索引分派就是如何处理好索引的分布存储、更新、一致性
  • 查询处理组件集:

    查询处理

    • 用户交互组件
      • 查询输入
        提供查询语言接口和解析器(如何正确解析查询语句和格式)
        挑战性任务:对查询给出好结果,对更规范的查询给出更好的结果
      • 查询转换
        如何根据用户查询快速找到相关文档集合
        如何通过交互或自动改善初始查询,得到更好的结果集合
        包括对查询语句(短语)进行词、短语切分,以及计算词权重
      • 结果输出
        如何将排好序的检索结果显示给用户
        包括:生成网页摘要,加亮显示结果中的重要词项,对输出结果的自动聚类(及引导查看),广告添加,语言翻译等
    • 排序组件
      • 打分机制(查询处理)
        在检索模型基础上,使用某种排序算法来计算文档的分值
        有多种打分算法,如tf/idf,BM25,Pagerank等
        基本形式: ∑ q i ⋅ d i \sum{q_i \cdot d_i} qidi
      • 性能优化
        如何降低系统响应时间,提供查询吞吐量
        如term-at-a-time(一次取查询中一项,来计算文档的分值贡献),document-at-a-time(同时取所有查询项,在相关多个索引表上来计算各文档的分值贡献)等分值计算方法
      • 分布式
        索引常被分布存储,排序易可分布地计算,经整合后再统一排序或可通过缓存(之前查询计算的结果)来提高打分计算效率
    • 评价组件
      • 日志
        系统运行记录,包括用户查询日志,文档点击次数,浏览时间等
        用户查询日志可用于拼写检查、推荐相关广告推荐等
        文档点击日志(次数,停留时间,次序)有助于网页排序和推荐
      • 排序分析
        分析大量日志数据,有助于对排序算法的效果进行评估、改进
        有助于系统参数的调整,提高排序靠前文档的质量
      • 性能分析
        专注于监测和改进系统的整体性能
        包括系统响应时间,吞吐量,(分布式)网络使用情况和效率等

第2讲 信息采集和信息源

一、信息采集

确定搜索的内容

搜索引擎工作基础:应当很好地存储文档集合中的信息。

搜索引擎的本质目标:回答“我们想要搜索什么”,提供一切我们所能搜索的信息

文档信息的更新:搜索引擎应尽可能多地含有近期的信息

信息采集的任务:想方设法找到要检索的文档集合,不论这些文档在哪里,甚至无论文档是什么格式

网络信息的爬取

网页的备份:将网页抓取到本地,便于对数据的分析处理,便于提高显示效率和效果

网络爬虫:从互联网下载网页的程序

网页爬取时存在的问题:互联网规模庞大;如何高效爬取网页和保持信息更新;是否允许爬取(可能需填写表单);如何礼貌爬取

抓取网页

统一资源定位器(URL):协议方案+主机名+资源名

网络爬虫如何获取网页

首先客户端程序连接到一个域名服务器(DNS),将主机名转换为IP地址。
然后客户端程序连接到该IP地址服务器。
连接成功时客户端发送一个HTTP请求(GET请求)来获得网页。

网络爬虫

网络爬虫基本任务:下载页面 + 发现新的URL

爬虫的基本工作原理:

  1. 指定种子URL集合,形成初始URL请求队列(frontier)。
  2. 从frontier中选取一个URL,爬取该网页。
  3. 对下载的网页进行解析,找到链接标签(含新的URL)
  4. 将新的URL(先计算重要度)插入到frontier
  5. 反复执行上述过程,直到frontier为空

并行爬取技术:由于大量爬取时间花费在等待(等待DNS响应、网站连接确认、网站发送网页等),为提升效率,网络爬虫常采用多个线程,一次抓取几百个网页。

礼貌策略:避免影响源网站正常工作,如规定一次抓取多少页面,规定两次抓取时间间隔。

时新性

当备份网页不能够再反映真实网页时,就应当更新。

HTTP协议提供了HEAD请求,仅返回页面头部信息(含最后修改时间)而非页面内容,可用于检查页面是否发生变化

办法之一:定期评估各页面变化频率。

页面年龄

对于页面的时新性,页面年龄是较好的度量方法。

假设一个页面的变化频率是 λ \lambda λ(在1天/1周内变化 λ \lambda λ次),则一个页面从上一次采集起, t t t天后的年龄期望值为: A g e ( λ , t ) = ∫ 0 t P ( 在 时 间 为 x 时 页 面 发 生 变 化 ) ( t − x ) d x {\rm Age}(\lambda, t) = \int_0^t{P(在时间为x时页面发生变化)(t-x) {\rm d} x} Age(λ,t)=0tP(x)(tx)dx

研究表明:页面更新一般遵循泊松分布,故有:
A g e ( λ , t ) = ∫ 0 t λ e − λ x ( t − x ) d x {\rm Age}(\lambda, t) = \int_0^t{\lambda e^{-\lambda x}(t-x) {\rm d} x} Age(λ,t)=0tλeλx(tx)dx

面向主题的信息采集

垂直搜索引擎:面向特殊类(专业)用户,索引 .仅收集面向某一主题/话题的页面

深层网络

深层网络:那些网络爬虫难以找到的站点或网站内容统称为深层网络。

至少包含三类:

  • 私人站点:通常要求注册账号,如:新闻出版,杂志审稿
    • 本来不希望被搜集(除非提供特许Robots.tet方式)
  • 表单结果:要求填写表单数据,如:机票销售,图书销售报表
    • 最难搜集(自动填写表单困难,涉及后台数据库)。试探法?网站主动提供?(网站地图)
  • 脚本页面:使用了Javascript、flash的页面,实际页面在浏览器中运行时动态生成
    • 相对容易(虽花费时间,爬虫也可运行Javascript、flash)
网站地图

网站地图:是一个包含了某网站信息描述(如信息修改时间和更新频率)的格式化XML文件,一般由网站管理员提供(robots.txt)

用途:

  1. 帮助网络爬虫找到那些通常不容易找到的信息
  2. 使爬虫直到各页面的修改时间、更新周期,直到什么页面更重要
分布式信息采集

对互联网上大量信息采集,常采用多台计算机并行执行。

假设一个爬虫程序有一个传输率为1MB/s的网络连接。网页的平均大小为20K,那么爬虫程序每秒钟可以备份50个页面。如果被采集信息的网站和爬虫程序所在的计算机距离很近,那么数据传输率可能会达到1MB/s。然而,网站开始传输数据需要80ms的时间,因为在打开连结和发送请求之间有传输延迟。假设每次请求需要100ms的时间(80ms的延迟时间,20ms的数据传输时间)。用50乘以100ms,可以看到,在传输50个页面时需要5秒钟的时间,其中包括延迟等待时间。这也意味着,在一秒钟内传输50个页面需要使用5个连接。

文档和电子邮件信息的采集

文档采集中的问题:

  • 更新速度:在桌面搜索中用户要求搜索结果是基于当前内容
  • 台式机本地空间不希望被占用,桌面爬虫应直接将文档读入内存,并直接发送给索引器
  • 桌面文档是用各种桌面程序查看的各种文档,需进行格式转换
  • 隐私问题:由于一台机器多个用户使用时每人只能看到允许的文档,文档存取权限必须与采集到的数据一起记录,并保持更新
文档信息源

文档信息源:比如出版物(书、文章、新闻、博客)某一时间创建后不再更新。来自同一个源头的出版物可在一个文档源的序列中得到,网络爬虫通过检查该(固定)信息源就可发现所有新文档。

文档信息源类型:

  • Push信息源:当有新文档到达时自动向订阅者发出通知(像电话)
  • Pull信息源:需要订阅者周期性地查看是否有新文档(像邮箱)
转换问题

文件格式转换:将文档中的内容转换成一种统一的标签格式,如HTML,XML。

存储文档

基本目的:为了对文档进行索引,一般需存储转换为统一格式后的文档。(桌面搜索不需要存储)

主要用途:

  • 对搜索结果创建网页摘要
  • 减少cpu和网络负载,下次建索引可少爬页面
  • 文档存储是信息抽取的起点

文档存储系统的基本要求:

  • 使用数据库系统:一种可能的方案是使用BigTable(一个分布式数据库系统)
  • 随机存取:使用散列函数及B-Tree/排序
  • 压缩与大规模文件:多文档合并存储到一个文件中,节省文档读取时间;保证多文档合并后文件规模适度,让文档的网络传输时间不至于过长;采用文档压缩技术
  • 更新
重复文档的检测

完全重复检测:检验和技术

近似重复检测方法:基于词(及权重)表达文档,并计算相似性;基于指纹(选择出的文档中的一些n-gram)表达文档,并计算相似性

文档噪声处理

文档噪声:网页中含有的与主要内容无关的文本、链接、图片等。

去噪声理由:搜索引擎基于词统计;无关文本干扰页面内容表示;无关文本、链接、图片等大量增加处理和空间消耗。

第3讲 文本处理

一、文本处理简介

文本处理:爬虫获得文本后,需决定是否修改或重构这些文本,以简化搜索。

处理目的:将词语可能出现的多种形式转化为更加一致的索引项

处理事项:

  • 忽略标点、词素切分、词串(成语、短语)切分
  • 去除停用词、词干提取
  • 格式改变(字体、大小)、结构处理(标题、章节)、链接处理
  • 信息抽取(识别:新词、人名、组织名、地址)、分类、多语言问题……

二、文本统计

齐普夫法则

一个词在词频统计表中的排名 r r r 乘以它的词频 f f f 约等于一个常数 k k k r ⋅ f = k r \cdot f = k rf=k

而因为一个词出现的概率 P r P_r Pr 等于这个词的出现次数 f f f 除以所有词在文本中出现次数 T T T 的总和,因此该法则可表示为: r ⋅ P r = c r \cdot P_r = c rPr=c,其中 c c c 是一个常数,对于英语来说约等于0.1。

该法则对排名靠后的低频词不一定准确。

词表增长的预测

Heaps法则

语料规模 v v v 与词表大小 n n n 的关系为: v = k ⋅ n β v = k \cdot n^\beta v=knβ

Heaps法则能预测词表大小语料规模的变化情况:语料规模小时新词增长很快,语料规模变大时增长速度变慢。

估计结果集大小

在用户输入查询后,搜索引擎一般会对结果集(包含所有查询词的文档)数量进行估计。

假设词在文档中出现的概率彼此独立。若查询包含3个词a,b,c,它们在文档中的出现频率分别为 P ( a ) , P ( b ) , P ( c ) P(a), P(b), P(c) P(a),P(b),P(c),文档集的规模数为 N N N,则查询结果集大小: f a b c = N ⋅ P ( a ) ⋅ P ( b ) ⋅ P ( c ) f_{abc} = N \cdot P(a) \cdot P(b) \cdot P(c) fabc=NP(a)P(b)P(c)

由于搜索引擎在建索引时易统计到出现过某个词的文档数目( f a , f b , f c f_a, f_b, f_c fa,fb,fc)和整个文档集的规模 N N N,而 P ( a ) = f a / N , P ( b ) = f b / N , P ( c ) = f c / N P(a) = f_a/N, P(b) = f_b/N, P(c) = f_c/N P(a)=fa/N,P(b)=fb/N,P(c)=fc/N。于是 f a b c = ( f a ⋅ f b ⋅ f c ) / N 3 − 1 f_{abc} = (f_a \cdot f_b \cdot f_c)/N^{3-1} fabc=(fafbfc)/N31

估计搜索引擎的文档集大小

由于若a和b是相互独立出现的两个词,有: f a b N = f a N ⋅ f b N \frac{f_{ab}}{N} = \frac{f_a}{N} \cdot \frac{f_b}{N} Nfab=NfaNfb,于是有: N = f a ⋅ f b f a b N = \frac{f_a \cdot f_b}{f_{ab}} N=fabfafb。只需尽量取到两个语义上无关联的词a和b并按此公式计算即可。

三、文档解析

词素切分:从文档的字符序列中获取词的过程。

词干提取方法

  1. 规则演算方法:处理常见的后缀
  2. 基于词典方法:采用一个词典来存储相关词的列表(如同义词表,适合中文及不规则变形)
  3. 规则与词典结合方式:英文词典+手动生成例外列表

四、文档结构和标记

可用XML标记文档结构,或利用到HTML标记的网页结构。

五、链接分析

锚文本的价值:

  • 很短(两三词),简洁地描述链出网页的主题。
    有助于排序算法的设计(如搜索数据库中的所有链接,查找与查询完全匹配的锚文本,匹配1次网页权重就增加1)
  • 写锚文本的人一般不是目标网页的作者。
    因此锚文本从另一角度来描述目标网页,或强调该网页对某群体的重要性。
PageRank技术

原理:基于随机游走。根据网页的入链数(指向该页)及每个网页的重要度来估算。

计算方法示例:假设有如下图这样的三个相互链接的网页:PageRank计算方法示例

页面C的PageRank(某个随机浏览网页的用户浏览C的概率)值:PR( C ) = PR(A)/2 + PR(B)/1。
即每个页面的PR(点击概率)应平均分配给所有外向链接。

特点:网页PR值与具体的查询无关。搜索引擎优先选择PR值高的网页。

六、信息抽取

NER(命名实体识别)

指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。

应用:

  1. 可应用于搜索中(短语、地名,人名,大小写),提高检索质量。
  2. 可用于搜索结果中(识别网页中的地址、人名,提供指向相应信息的链接;将识别到的人名、地名等自动加亮),改善友好性。
  3. 可应用于建立索引,提高索引质量。

方法:

  1. 基于基于规则的方法。 使用词典、规则或模板对实体识别分类,从而抽取地名、人名等
  2. HMM(隐马尔可夫模型 ) 找到一个实体类别序列,使得产生待识别句子的概率最大,则与序列中实体类别相关联的会被标记出来。

第4讲 搜索引擎索引

一些缩写的含义:

  • tf:单词在某个文档中出现的次数
  • N:文档集合包含的文档个数
  • df:某个单词在多少个文档中出现过

一、倒排列表

倒排索引主要由两个部分组成:单词词典倒排文件

倒排索引基本概念示意图
单词词典:单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息及指向倒排列表的指针。

倒排列表:倒排列表记载了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。倒排列表示意图

倒排文件:所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件即被称为倒排文件,倒排文件是存储倒排索引的物理文件。

二、建立索引

3种建立索引的方法
1、两遍文档遍历法

完全在内存里完成索引的创建过程。

第一遍文档遍历:收集一些全局的统计信息,如文档集合包含的文档个数N,文档集合内所包含的不同单词个数M,每个单词在多少个文档中出现过的信息df。将所有单词对应的df值全部相加,就可以知道建立最终索引所需内存大小是多少。于是在内存中分配足够大的空间,用来存储倒排索引内容。

第二遍文档遍历:开始真正建立每个单词的倒排列表信息,即对于某个单词来说,获得包含这个单词的每个文档的文档ID,以及这个单词在文档中的出现次数tf,这样就可以不断填充第一遍扫描所分配的内存空间。当第二遍扫描结束的时候,分配的内存空间正好被填充满,而每个单词用指针所指向的内存区域“片段”,其起始位置和结束位置之间的数据就是这个单词对应的倒排列表。

经过两遍扫描完成索引建立后,即可将内存的倒排列表和词典信息写入磁盘,这样就完成了建立索引的过程。

缺点:如果文档集合太大时,内存未必能够满足需求;要对文档集合进行两遍遍历,速度不占优势。

2、排序法

始终在内存中分配固定大小的空间,存放词典信息和索引中间结果,当分配的内存空间被消耗殆尽时,在内存中对索引信息三元组(单词ID,文档ID,单词频率)进行排序,将排序好的索引信息写入磁盘,词典不写入, 词典始终在内存中,新产生一个对应的中间文件,最后对所有中间文件进行合并,形成最终的索引。

优点:无论要建索引的文档集合有多大,都可以通过这种方法完成。

缺点:词典信息一直在内存中进行维护,随着处理文档越来越多,词典里包含的词典项越来越多,所以占用内存越来越大,导致后期中间结果可用内存越来越少。

3、归并法

对排序法做出了改进,整体流程和排序法大致相同,即每次将内存中数据写入磁盘时,包括词典在内的所有中间结果信息都被写入磁盘(在写入磁盘文件时,将词典项放在列表最前端,之后跟随相应的倒排列表),这样内存所有内容都可以被清空,后续建立索引可以使用全部的定额内存。

“归并法”的临时文件是每个单词对应的部分倒排列表,所以在合并时针对每个单词的倒排列表进行合并,形成这个单词的最终倒排列表。另外,“归并法”在最后的合并过程中形成最终的词典信息。

4种索引更新策略
1、完全重建策略

将新增文档和老文档一起重新构建新的索引,再删除老索引

2、再合并策略

加入新文档后,在内存当中构建增量索引,最后再将增量索引与磁盘中的老索引合并形成新的索引

3、原地更新策略

在初始建立老索引时,在每个倒排项末尾预留空余磁盘空间。有了新增文档之后,在内存中构建出增量索引,再直接把增量索引中每个倒排项的内容直接追加到内存中的老索引的对应倒排项末尾

4、混合策略

能够结合不同索引更新策略的长处,将不同的索引更新策略混合,以形成更高效的方法。

一般会将单词根据其不同性质进行分类,不同类别的单词,对其索引采取不同的索引更新策略。常见的做法是:根据单词的倒排列表长度进行区分,因为有些单词经常在不同文档中出现,所以其对应的倒排列表较长,而有些单词很少见,则其倒排列表就较短。长倒排列表单词采取原地更新策略,而短倒排列表单词则采取再合并策略。

三、查询处理

两种查询处理方法:

  • 一次一文档:通过处理所有的单词(索引项)对文档进行打分,每个文档循环一次。
  • 一次一词项:通过处理单词列表对文档打分,每个单词循环一次。
优化技术

对于查询处理,有2类优化技术:

  • 从索引中读取较少的数据
  • 处理较少的文档
联合处理

每篇返回给用户的文档,需要包含所有查询项。当有一个查询项较为罕见时,联合处理可以做得很好(如对于查询“fish locomotion”,单词“fish”的频率是“locomotion”的1000倍,既然对只包含2个词的文档感兴趣,系统能跳过“fish”倒排表中的大部分,以便找到同时包含“locomotion”的文档的posting)

对于短查询,能同时提高效率和效果;对于长查询如整个段落,不是一个好的选项。

阈值方法

使用前k个排序文档优化查询处理。对于每个查询,都有某一最小分数(阈值 τ \tau τ)是每个被检索出的文档都需要达到的,该最小分数是第k个最高得分文档的分数,任何没有达到此分数的文档不会显示给用户。

  • 对于“一次一文档”:可以使用排序后第k个文档的分数作为估计阈值。
  • 对于“一次一词项”:直到评价结束才能有全部的分数,但可以使用累加器表中第k大分数作为估计阈值。
提早终止
  • 在“一次一文档”中忽略一些常见的高频词(查询项)。
  • 在document-at-a-time中忽略倒排表非常靠后的文档。如文档以一些质量指标排序,如pagerank,提早终止以忽略质量较低的文档。
倒排表排列

基于文档质量对倒排表中的文档排序,如pagerank,或者根据部分分数对文档排序。

结构化查询
  • 使用查询语言写的查询,容许改变查询中使用的特征以及那些特征的组合方式。
  • 查询语言不是用户使用的,用户输入查询后,查询翻译器将用户的输入转换为结构化查询表达,如包括对词特征加权以及使用哪些同义词。
分布式的评价

基本过程:将所有查询发给一台目录计算机;目录计算机将消息发给多台索引服务器;它们各自做查询处理的一部分任务;然后目录机组织结果,并将结果发给用户。

2个主要方法:文档分布式词项分布式

文档分布式

每台索引服务器的行为类似于整个文档集一小部分数据的搜索引擎。目录机发送查询的拷贝给每台索引服务器,每台机器返回前k个结果以及每个结果的分数。这些结果由目录机合并为一个相关排序表,然后返回给用户。

较为常用,很容易支持新增的文档,负载均衡性好(常见词与罕见词汇均匀分布在不同的索引服务器上),容错性好(如果某台索引服务器故障,只影响到部分文档子集合,对于用户来说并不会直接感受到这种故障的影响),同时支持两种不同的查询处理方式。

词项分布式

索引中的每个倒排表被分给一个索引服务器。大部分情况下,所要处理的查询数据不会存储在一台机器,那么被选中处理查询的服务器通常是倒排表最长的那台索引服务器,如果其他索引服务器上有相关的数据,则通过网络传送给他们来处理查询。查询处理完成后,结果发给目录机。

可扩展性不足:如果有新增文档,对几乎所有的索引服务器都有直接影响。负载均衡性差(常见词倒排列表庞大,罕见词倒排列表很少),容错性差(如果某台索引服务器故障,则某些单词的倒排列表无法访问,直接影响用户体验),只能支持“一次一词项”查询处理方式。

第5讲 查询与界面

一、查询转换与提炼

停用词去除和词干提取

文本查询最初的处理过程,应该对应于文档的处理步骤。查询文本中的词,应转换为文本处理时产生的同样词项。

  • 停用词:可以去除查询中的停用词,也可保留。
  • 词干:可能文档处理时对词干进行了处理(增加查询灵活性),查询时也应对词干进行处理。但一定要采用恰当的词变形来扩展查询,才能获得更好查询效果。词干处理不能仅归为词干,而应基于词干进行扩展!
拼写检查和改写建议

对于在拼写词典中没有的词,就建议用户更正它们。

方法:将没有的词与词典中词进行相似比较,以便提出更正建议。

词相似度的衡量标准:编辑距离。

查询扩展

搜索引擎将用户的初始查询用一个或多个词去扩展,或替换查询中的一些词,并将修改后的查询建议提交给用户,可帮助改善检索效果。

基本思路:

  • 通常是基于对指定文档集中词或词项共现的分析
  • 查询的词干提取,也可看着是一种查询扩展技术(基于词的变形)
  • 采用常规叙词表的自动扩展技术(但效果往往未必好)

关键技术:衡量词项的相关性。基本方法如戴斯系数(Dice) ,互信息(MIM),期望互信息(EMIM),皮尔森检验法(x²)。

还可以基于搜索结果或查询日志扩展。

相关反馈

相关反馈也是一种查询扩展方法。它通过与用户的交互过程,让用户指出哪些是感兴趣的,哪些是不感兴趣的,根据这些信息,通过增加词项或对原始词项重新分配权重,自动地改写查询,并自动生成新的文档排序,识别出在用户初始查询的排序文档中的相关文档,实现对查询结果的改善。

伪相关反馈,也采用同样思想。所不同的是,不是让用户自己去识别相关文档,而是系统将排序靠前的文档假设是相关的。这些文档中频繁出现的词,用来扩展初始查询。扩展质量则由靠前的文档有多少是实际相关的而决定的。

上下文和个性化

个性化搜索:不同用户输入同一查询,返回不同结果;甚至同一用户在不同时间输入同一查询,返回不同结果。

改善搜索质量的有效上下文是:查询日志和搜索会话历史,使用地理上下文信息的本地搜索也对部分查询产生实质性的改善。

二、搜索结果显示

结果显示界面与页面摘要

结果显示页面:大部分搜索引擎的结果页面,仍采用排序的文档摘要列表。文档摘要有实际页面链接,并包括标题、URL、快照链接以及页面摘要等。

页面摘要的生成:是自动文摘的一个应用例子。自动文摘技术大致可分为查询无关文摘和查询相关文摘。搜索结果页面是查询相关文摘。

结果聚类

传统做法一般是将搜索结果按照排序显示给用户,而搜索结果常包括与查询主题相关的不同方面。对于特定用户,可能仅关心其中一类,对排序显示可能失望。

解决途径:对检索结果聚类,将检索结果文档集按照内容相似性聚成一些类(文档组),将这些类别显示给用户,便于用户快速定位到感兴趣的文档类。然后每个文档类再按照文档与查询的相关性排序显示。

第6讲 检索模型与搜索排序

一、检索模型

信息检索模型的组成:

  • 用户的需求表示:用户查询的获取与表示。
  • 文档的表示:文档内容的识别与表示。
  • 匹配机制:用户需求表示与文档表示之间的查询机制,以及它们之间相关性排序的准则和函数表示。
  • 反馈修正:对检索结果进行优化。

信息检索模型四元组: [ D , Q , F , R ( q i , d j ) ] [D, Q, F, R(q_i, d_j)] [D,Q,F,R(qi,dj)]

  • D D D:文档集合
  • Q Q Q:用户查询,是用户任务的表达
  • F F F:文档表示、查询表示和它们之间的关系的模型框架(Frame)
  • R ( q i , d j ) R(q_i, d_j) R(qi,dj):是一个排序函数,它给查询 q i q_i qi和文档 d j d_j dj之间的相关度赋予一个排序值
经典信息检索模型

包括:布尔模型、向量空间模型、经典概率模型。

布尔模型

基本规则:每个索引词在一篇文档中只有两种状态:出现或不出现,对应权值为0或1。

布尔检索又称精确匹配检索

优点:简单易于理解;能处理结构化查询;速度快

缺点:无权重设计;僵化,不支持部分匹配(“与”意味着全部,“或”意味着任何一个);很难对输出排序;很难控制被检索的文档数量

向量空间模型

模型原理:文档D和查询Q均被看成是由标引词构成的向量,检索过程就是计算文档向量与查询向量之间的相似度。可以根据相似度值的不同对检索结果进行排序,可以根据检索结果进一步做相关检索

优点:可对查询向量中关键词赋予权重;可根据相似度大小对查询结果进行排序并控制输出数量;采用“部分匹配”

缺点:在模型中,特征项被假设为相互独立,而实际上一个文档中的特征项之间可能存着一定的联系;不能像布尔模型一样支持布尔结构化查询;较布尔模型要复杂得多

模型构建的主要步骤
  1. 文档向量的构造:对一个文档集而言,可以将每一篇文档转换成特征项来表示。如果将每一个特征项看作是多维空间中的一维,则由这些特征项组成的集合就定义了一个多维向量空间,文档集合中的任一文档都可以表示成为这一多维空间中的一个向量。
  2. 查询向量的构造:对于用户查询,将其转换为特性项表示。
  3. 查询与文档的匹配函数的选择
    • 内积相似度运算(包括余弦相似度运算)
    • 距离相似度运算
    • 基于项匹配个数的相似度运算
    • 基于概率向量的相似度运算
  4. 相似度阈值的确定
文档中词项的权重

一个在n当前文档中频繁出现,但是在剩余的其它文档中很少出现的词项获得较高的权重。

  • t f i k tf_{ik} tfik:词项 k k k在文档 i i i中的频率
  • n k n_k nk:词项 k k k的文档频率,即包含词项 k k k的文档数量
  • i d f k idf_k idfk:词项 k k k的反文档频率 = log ⁡ N n k = \log {\frac{N}{n_k}} =lognkN,其中 N N N是文档集中的文档总数

tf·idf加权方法:

t f i k = f i k tf_{ik} = f_{ik} tfik=fik,其中 f i k f_{ik} fik是词项 k k k在文档中的出现次数。但为减小高频词项的影响,通过对词项次数取对数,会比直接使用原始数值更加有效: t f i k = log ⁡ ( f i k ) + 1 tf_{ik} = \log{(f_{ik})}+1 tfik=log(fik)+1(词项频率加1是为了保证频率为1的词项具有非零权值)

tf·idf:词频和反文档频率的乘积。

d i k = t f i k ⋅ i d f k = ( log ⁡ ( f i k ) + 1 ) ⋅ log ⁡ N n k d_{ik} = tf_{ik} \cdot idf_k = (\log{(f_{ik})}+1) \cdot \log{\frac{N}{n_k}} dik=tfikidfk=(log(fik)+1)lognkN

在归一化后:
d i k = ( log ⁡ ( f i k ) + 1 ) ⋅ log ⁡ N n k ∑ k = 1 t [ ( log ⁡ ( f i k ) + 1.0 ) ⋅ log ⁡ N n k ] 2 d_{ik} = \frac{(\log{(f_{ik})}+1) \cdot \log{\frac{N}{n_k}}}{\sqrt{\sum_{k=1}^{t}{[(\log{(f_{ik})}+1.0) \cdot \log{\frac{N}{n_k}}]^2}}} dik=k=1t[(log(fik)+1.0)lognkN]2 (log(fik)+1)lognkN
归一化原因:在冗长的文本中,词项的频率会比短文本大,为了抵消这种影响,即采用归一化。

查询式中词项权重

几种确定查询式中词项权重的方式

  • 如果词项出现在查询式中,则该词项在查询式中的权重为1,否则为0。
  • 也可以用用户指定查询式中词项的权重。
  • 一个自然语言查询式可以被看成一个文档。
经典概率模型

概率排序原则:如果一个参考检索排序系统对每个查询的反馈都是数据集中所有文档根据和用户查询的相关性概率值降序排序的结果,并且其中的概率值都被尽可能精确地估计出来,那么该系统对于用户的整体效果就是基于这些数据能够获得的最好结果。

优点:文档可以按照它们相关概率递减的顺序来排序。

缺点:开始时需要猜想把文档分为相关和不相关的两个集合,一般来说很难;实际上这种模型没有考虑索引术语在文档中的频率(因为所有的权重都是二值的);假设索引词独立

目前使用比向量模型更广泛。

基本假设
  • 概率模型的相关性独立原则:文档对查询的相关性与文档集合中的其它文档无关。
  • 文档和查询中的特征项与特征项之间是相互独立的。
  • 文档和查询中的特征项权重都是二值的,即要么是0,要么是1。
  • n文档相关性是二值的,即只有相关和不相关两种(一篇文档要么属于理想文档集,要么不属于理想文档集。)

(暂略一部分数学内容)

BM25排序算法

(暂略)

隐性语义索引(LSI)

提出背景:自然语言文本中的词汇具有一词多义(基于精确匹配的检索算法会报告许多用户不要的东西)和一义多词(基于精确匹配的检索算法又会遗漏许多用户想要的东西)的特点。我们希望找到一种办法, 既能反映术语之间内在的相关性, 又具有较高的效率。

隐性语义索引可看做是隐性语义分析(LSA)在信息检索中的应用。LSA是一种通过分析大量的文本集,自动生成关键字-概念(语义)之间映射规则的方法。它假设词语在文本中的使用模式内存在着潜在的语义结构。同义词之间具有基本相同的语义结构,多义词的使用必定具有多种不同的语义结构,而词语之间的这种语义结构体现为它们在文本中的出现频率上也具有一定的联系,通过统计学方法,提取并量化这些潜在的语义结构,进而消除同义词、多义词的影响,提高文本表示的准确性。

二、检索质量评价标准

召回率(recall):衡量搜索引擎找到所有相关文档的能力。

准确率(precision):衡量排除不相关文档的能力。

F值:召回率和准确率的调和平均数

平均准确率(MAP):各次查询的准确率的均值。

三、文本分类

文本分类的应用:垃圾邮件的判定、新闻出版按照栏目分类、词性标注、词义排歧等

文本分类的过程:

  • 获取训练文档集合
  • 建立文档表示模型
  • 特征选择
  • 选择或设计分类模型
  • 性能评测模型
分类的评测

偶然事件表:TP,FP,TN,FN。

对一个分类器的度量:准确率、召回率、fallout(FN / FN+TN)

多类分类问题的评价
宏平均(macro-averaging)

先对每个分类器(每一类)计算上述量度,再对所有分类器求平均。

是关于类别的均值。

微平均(micro-averaging)

先合并所有分类器的偶然事件表中的各元素,得到一个总的偶然事件表,再由此表计算各种量度。

是关于文本的均值。

第7讲 链接分析&网页反作弊

一、链接分析

搜索引擎在查找能满足用户请求的网页时,主要结合以下两方面的因素拟合出评分函数对搜索结果进行排序:

  1. 网页和查询的相关性,即用户发出的查询与网页内容的内容相似性得分
  2. 网页的重要性,即通过链接分析方法计算获得的得分
PageRank算法

属于随机游走模型(一个对直接跳转和远程跳转两种用户浏览行为进行抽象的概念模型)

结合网页的入链数量网页的质量因素两者,获得网页重要性评价标准。

与查询无关的全局算法

计算方法详见笔记第三讲中“链接分析”部分。

链接陷阱与远程跳转

互联网页面之间的链接结构实际上很复杂,对于某些特殊的链接结构,按照上述方法计算PageRank 会导致问题,一个典型的例子就是如下图所示的“链接陷阱”。这种结构类似于天体中的黑洞,在计算PageRank 的时候,该结构将导致系统只会吸收传入的分值,而不能将获得的分值传播出去,随着PageRank 一轮轮地连续运算,链接陷阱内的页面PageRank 得分越来越高,这与PageRank 的设计初衷相违背。

链接陷阱

远程跳转是解决链接陷阱的通用方式,所谓的远程跳转,即在网页向外传递分值的时候,不限于向出链所指网页传递,也可以以一定的概率向任意其他网页跳转。对于链接陷阱内的网页来说,增加了远程跳转措施后,就像为每个页面增加了指向互联网任意其他页面的虚拟边,权值可以通过这种虚拟边向外传递,以此来避免链接陷阱导致的问题。

HITS算法

属于子集传播模型(从诸多链接分析算法中抽象出来的概念模型)

Authority页面

与某个领域或者某个话题相关的高质量网页。比如搜索引擎领域,Google和百度首页即该领域的高质量网页;比如视频领域,优酷和爱奇艺首页即该领域的高质量网页。

Hub页面

指的是包含了很多指向高质量Authority页面链接的网页,比如hao123首页可以认为是一个典型的高质量Hub网页。

基于两个基本假设
  1. 一个好的Authority页面会被很多好的Hub页面指向。
  2. 一个好的Hub页面会指向很多好Authority页面。
算法

接收到了用户查询之后,将查询提交给某个现有的搜索引擎(或者是自己构造的检索系统),并在返回的搜索结果中,提取排名靠前的网页,得到一组与用户查询高度相关的初始网页集合,这个集合被称做根集(Root Set)。在根集的基础上,HITS算法对网页集合进行扩充,扩充原则是:凡是与根集内网页有直接链接指向关系的网页都被扩充进来,无论是有链接指向根集内页面也好,或者是根集页面有链接指向的页面也好,都被扩充进入扩展网页集合。HITS算法在这个扩展网页集合内寻找好的Hub页面与好的Authority页面

存在的问题
  • 计算效率较低:算法与查询相关,必须在接收到用户查询后实时计算,HITS算法本身需要多次迭代才能获得结果。
  • 主题漂移问题:如果在扩展网页集合里包含部分与查询主题无关的页面,而且这些页面之间有较多的互相链接指向,使用HITS算法很可能会给予这些无关网页很高的排名,导致结果发生漂移
  • 易被作弊者操纵结果:比如作弊者可以建立一个网页,页面内容增加很多指向高质量网页或者著名网站的网址,这就是一个很好的Hub页面,之后作弊者在将这个网页链接指向作弊网页。
  • 结构不稳定:如果添加或者改变少数链接,排名会变。
PageRank算法与HITS算法比较
  • HITS算法是与用户输入的查询请求密切相关的,而PageRank与查询请求无关。所以,HITS算法可以单独作为相似性计算评价标准,而PageRank必须结合内容相似性计算才可以用来对网页相关性进行评价。
  • HITS算法因为与用户查询密切相关,所以必须在接收到用户查询后进行实时计算,计算效率较低;而PageRank则可以在爬虫抓取完成后离线计算,在线直接使用计算结果,计算效率较高。
  • HITS算法的计算对象数量较少,只需计算扩展集合内网页之间的链接关系;而PageRank是全局性算法,对所有互联网页面节点进行处理。
  • 从两者的计算效率和处理对象集合大小来比较,PageRank更适合部署在服务器端,而HITS算法更适合部署在客户端。
  • HITS算法存在主题泛化问题,所以更适合处理具体的用户查询;而PageRank算法在处理宽泛的用户查询时更有优势。
  • HITS算法在计算时,对于每个页面需要计算两个分值,而PageRank算法只需计算一个分值即可;在搜索引擎领域,更重视HITS算法计算出的Authority权值,但是在很多应用HITS算法的其他领域,Hub分值也有很重要的作用。
  • 从链接反作弊的角度来说,PageRank从机制上优于HITS算法,而HITS算法更易遭受链接作弊的影响。
  • HITS算法结构不稳定,当对扩展网页集合内链接关系做出很小改变,则对最终排名有很大影响;而PageRank算法相对HITS而言表现稳定,其根本原因在于PageRank计算时的远程跳转。

(其它的一些链接分析算法略)

二、网页反作弊

存在一些恶意的优化行为,通过特殊手段将网页的搜索排名提高到与其网页质量不相称的位置,而搜索引擎为了保证排名的公正性,也需要对作弊行为进行识别和处罚。

常见作弊手段:内容作弊、链接作弊、页面隐藏作弊

内容作弊
常见内容作弊手段
  • 关键词重复:大量将关键词重复设置在页面内容。本质上是通过提高目标关键词的词频来影响排名。
  • 无关查询词作弊:在页面内容中增加很多和页面主题无关的关键词以吸引搜索流量。
  • 图片alt标签文本作弊:alt标签是作为图片描述信息来使用的,一般不会在html页面显示,但是搜索引擎会利用这个信息。
  • 网页标题作弊:将与网页主题无关的目标词重复放置在标题位置来获得好的排名。搜索引擎在计算相似性得分时,会增加标题词汇的得分权重。
  • 网页重要标签作弊:网页不像普通格式的文本,是带有html标签的,标签代表了重要性意义。作弊者通过在这些重要位置插入作弊关键词影响排名。
  • 网页元信息作弊:网页内容描述区和网页内容关键词区是供制作网页的人对网页主题信息进行简短描述。作弊者往往也会通过在其中插入作弊关键词来影响网页排名。
内容农场

通过雇人写作大量低质量内容吸引流量,这些写作有机地将搜索引擎的热门搜索词添加到写作内容中。这样,普通搜索引擎用户在搜索时,会被吸引进入内容农场网站,赚取广告费用。

链接作弊

网站拥有者考虑到搜索引擎排名中利用了链接分析技术,所以通过操纵页面之间的链接关系,或者操纵页面之间的链接锚文字,以此来增加链接排序因子的得分,并影响搜索结果排名的作弊方法。

  • 链接农场:有人将网站做成了一个养殖场,专门用于搜集网站和交换链接提升PageRank,而没有或很少有实质性的对用户有用的内容。
  • Google轰炸:通过大量链接让不相关或者偏离主题的内容在搜索结果中获得很高的排序。
  • 交换友情链接:作弊者通过和其他网站交换链接,相互指向对方的网页页面,以此来增加网页排名。
  • 购买链接:花钱让一些排名较高的网站的链接指向自己的网页,以此来提高网站排名。
  • 购买过期域名:购买刚刚过期的域名,因为有些过期域名本身的PageRank排名是很高的,通过购买域名可以获得高价值的外链。
  • “门页”作弊:“门页”本身不包含正文内容,而是由大量链接构成的,而这些链接往往会指向同一网站内的页面,作弊者通过制造大量的“门页”来提升网站排名。
页面隐藏作弊
  • IP地址隐型作弊
  • HTTP请求隐形作弊
  • 网页重定向
  • 页面内容隐藏
反作弊技术的整体思路
  • 信任传播模型:先建立一个可信任的网页白名单,之后将与白名单有链入或链出的网页加入到可信的白名单之中。
  • 不信任传播模型:先建立一个不可信的网页黑名单,之后将与黑名单有链入或链出的网页加入到不可信的黑名单之中。
  • 异常发现模型:对已知的一些作弊网页进行特征分析,识别出一些作弊特征,并在待判断网页中判断是否满足这些特征,如果满足就判为作弊网页,否则判为非作弊网页;或者识别出一些正常特征,并在待判断网页中判断是否满足这些特征,如果满足就判为非作弊网页,否则判为作弊网页。
识别链接作弊
识别链接农场
  1. 网页出链的统计分布规律,正常网页的出链满足Power-law分布,作弊网页的出链违反该分布
  2. 网页入链的统计分布规律,正常网页的入链也满足Power-law分布,作弊网页则违反该分布。
  3. URL名称统计特征,作弊网页的网址倾向于较长,包含更多的点画线和数字等。
  4. 很多作弊网页的URL地址尽管不同,但是常常会对应同一个IP地址。
  5. 网页特征会随着时间变化,比如入链的增长率、出链的增长率等,正常网页和作弊网页在这些变化模式上是不同的。
识别Google轰炸

Google轰炸利用了指向目标网页的锚文字来操纵搜索结果排名,而锚文字很可能和被指向的页面没有任何语义关系,所以一个直观的判断方式即为判断锚文字是否和被指向页面有语义关系,如果有语义关系存在,则被判断为正常链接,否则可被判断为作弊链接。

识别内容作弊
  • 对于重复出现关键词这种作弊方式,可以判断文本内一定大小的窗口中是否连续出现同一关键词,如果是的话则消除掉重复出现的内容。
  • 对于标题关键词作弊,可以判断标题词汇在文本正文出现的比例和权重,如果达到一定条件则可判断为标题关键词作弊。
  • 也可以采用一些统计手段来进行内容作弊识别,比如统计正常网页中句子长度的规律、停用词的分布规律或者词性分布规律等,通过比较页面内容统计属性是否异常来识别内容作弊的情况。
反隐藏作弊
识别页面隐藏

页面隐藏的本质特征是向搜索引擎爬虫和用户推送不同内容的页面。所以一个直观的识别这种作弊方式的方法是对页面进行两次抓取,第一次是正常的搜索引擎爬虫抓取,第二次抓取则以模拟人工访问网页的方式抓取。如果两次抓取到的内容有较大差异,则会认为是作弊页面。

识别网页重定向

首先搜集一批作弊页面,然后根据这批作弊网页进行扩展,如果有在论坛中和这些作弊URL经常一起出现的网页链接,会逐步将其扩充进可疑页面集合。之后,依次访问这些可疑URL,并记录下访问时是否做了重定向及重定向到哪个页面,逐步判断。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值