微软亚研院 | 智能信息检索综述
最近发现微软关于搜索引擎和信息检索技术的一个课程:《智能信息检索》,虽然这个课程的比较早,技术上比较落后了,但是很多的基础检索、搜索引擎的想法仍然非常经典,不过时。这篇博文记录一些重点内容,详细课程可以去看raw video。
一、 搜索引擎概览——system,algorithms and challenges
搜索引擎主要流程如上图,从下到上主要有:
「Web-Crawler抓取网页」。现有的网页总数超万亿,所以需要决定抓取哪些网页,并多长时间来更新网页(网页会有自己的更新与变动),特别是搜索公司只存快照(为了检索速度快,不可能对比所有网页的最新版本)+多服务器备份(防丢失以及多地服务时更快)。 「page parser找超链接」,并决定抽取网页的什么信息。 「index build倒排索引」。正排文档是指一个文档里面包含什么词。而倒排文档:这些词在哪些文档里面(对应用户用query去搜索时往往用短词)。用倒排的好处是搜索不用完全遍历,可以快速得到结果。值得注意的是,倒排里面应该存尽可能多的信息,这样可以方便对文档本身和query都做足够的数据分析。 「caching存总是搜的query的热门结果」。这种对高频的处理能加快响应速度。 「ranking排序返回给用户」。Ranking最大的问题的如何衡量“相关性”,最简单的有tf-idf,bm25等等。返回的结果只做topk,并不是排序所有的结果。
搜索引擎神话:
人们会被训练。即用户偏向使用容易被检索的query。 搜索无魔力。需要持续优化和发展。 大部分的网页并不会被检索到。 不容易转到另一个搜索系统,除非性能特别突出。 除了检索,搜索里面还设计到数据管理机器学习等等。 炫技不是王者,需要把简单做到极致。 学术和工业存在gap 。 任何领域都可以做搜索。 下一代搜索引擎是什么?还不知道,用户会给出答案。
搜索引擎有效的假设:
用户知道自己要找什么 找的东西可以被关键词表达 有文档存在是可以满足用户需求 文档中是包含检索的关键词 关键词足够好,可以把好坏区分开来 文档通过topk可以被排序出来
二、信息检索中的指标
主要介绍主流的检索指标:
普通常用,Precision & Recall,F1。 排序价值不一样,P@K,PR Curve,AP,MAP。 只需要一个结果就行(导航类),RR,MRR。 把最好的排到最前面就越好,NDCG。 多样性:和话题有关alpha-nDCG,IA。 其他:RBP,ERR,GAP。
三、网页搜索中的机器学习
上图是搜索中常用的技术,从下到上逐渐抽象。
第一层主要是一些基础的技术如分类、聚类、LTR、链接分析、相似度学习等等。 第二层可以利用第一层的基础技术去做一些复杂的事情,如query意图理解,匹配,排序,索引,反欺诈,日志挖掘等等。 第三层是进一步的应用,如各种搜索,问答等等。
主要在第二层技术展开:
「Query Understanding」。主要针对用户的query做三件事情,Query Reformulation:纠错。Query Classification:同义转换。Query Segmentation:切分。 「Document Understanding」。主要是对网页本身的理解,Web Page Information Extraction,可以直接对网页的分块,原数据(标题时间)进行处理,也可以wrapper模版去找一些规则内容,text信息抽取等。或者可以建模话题即Web Page Topic Identification。对网页进行重要度衡量Page Importance Calculation,如pagerank这种计算网页重要度。Web Page Classification,基于语义和基于类型。 「Query-Document Matching」。匹配模型简单如BM25,复杂有马尔科夫随机场,隐空间模型等等。 「Learning to Rank」学习更好的排序,Crawling抓取网页并去重,Presentation如何有效合理的展示信息给用户,Anti-spam检查异常的行为,log mining则是利用离线日志去发展一些共性以帮助优化整个系统。
四、语义信息抽取:overview and basic techniques
语义信息抽取的目的是想把页面上的半结构化的数据变成结构化的,人可以理解的信息。主要可分一下子任务:
命名实体识别 实体层次结构 属性抽取 关系挖掘 事件挖掘
五、网页信息聚合
各种不同表达方式的数据如何聚合。主要分为两步,一是从各个源做数据抽取(具体的做法和上一节的思路类似,比如从网页的layout中提取信息等),第二步就是做数据合并(同一类型放一起等等)。
六、 社会搜索和推荐
关于search一个很重要的概念是share,即不仅仅是为了search,也会需要share这些Information或者受别人的share(如用户share和专家share都算),甚至是大家一起搜索(如一起去旅游等这种社会搜索social search),如上图的query和community的关系。关于social search主要有三个重要点:
Awareness:知道自己是在做什么,在什么样的阶段。 Division of labor:怎么让很多人方便分工,做不一样的事情。 Persistence:怎么展示每个人的信息。
七、信息检索中的排序
信息太多,并且相关的文档也很多,如果得到更好的目标返回是很重要的,以往的技术路线都是通用架构+各种规则和人工经验完成的。而排序学习目标就是设计一个模型来自动从数据中学习一个好的排序。分为三类:
Pointwise:降维成回归or分类。缺点1在于抹掉了文档的区别(如只要相关的即为1不相关即为-1等等),忽略了很多的信息;缺点2无法知道谁更好即位置信息。 Pairwise:定义文档之间的差别,可以解决point的第一个问题。 Listwise:解决文档的位置问题,有两条思路1在所有文档列表上做point或者pair。2学习每个排列的分布靠近真实的分布。缺点在于复杂度高(因为要比所有的排练可能)
未来可以做些什么?
Large scale:每天都可以得到很多数据如点击,怎么处理large Robust:点击数据有噪声 Online,incremental,active:如何实时线上优化 Transfer:如何迁移到各个小section,而不用每次都专门标很多的数据 Structural:相关性不是所有,如diversity,此时的whole-page relevance也很重要
八、情感分析与意见挖掘
情感分析与意见挖掘,可以应用在商业系统,购物推荐,公共管理,网页广告等方面。情感可以用以下公式来定义:
即谁来表达,向谁表达,取向性(正负)。
具体的流程如上图会先标POS,即命名实体识别如CRF去识别出Holder等,然后针对文本常见词去除,然后得到特征分析观点,即最后做取向性分类。可以在document(全文),sentence(句子),expresstion(词)三个粒度上做。
sentiment analysis与topic classification的区别:
Single word:单个词决定就能决定取向,但是话题不行其需要很多词的出现 Invertible:加个否定取向就可变 Contextual:词在不同的情况不一样 Compositional:组合分概念,可正可负 Target dependent:针对对象的不一样,成分也会不一样 Topic dependent:与话题本身的正负有关
九、 网页实体搜索和知识挖掘
如何把网页中的知识抽取和集成起来。
Object-level vertical search。Web object==entity。基于对象的搜索不再搜网页,而是搜某个对象(如人物或者产品),垂搜是对特定领域的处理,更关注这个领域的特点和细节。 Object-level general search。更通用的搜索方式。
十、 视觉检索
图像/视频的多媒体检索。分为两个步骤,先提取视觉特征,然后再检索。提特征分为Global feature-based和Local feature-based,由于课程比较早,现在一般不用视频里面的算法了。检索过程主要需要解决的问题就是如何解决Semantic gap,更多的多媒体文章可以看博主以前的博客:传送门[1] 。
十一、大规模图上的排序
怎么在大规模的图上进行排序,metadata是指图上的节点和边都有信息(如网页自己的各种属性,网页间有各种形态的超链接)。常用的图有社交图,引用图,共现图,电话图,网格图等等,特点在于大规模,很稀疏,信息多,可能还带有外部知识(如某个点要比其他更重要)。所以重要的目标就是如何利用这些信息去排序(节点排序,边排序,图排序)。
仅仅用图的结构如何排序?HITS和PageRank。 利用图的节点和边信息如何排序?Personalized PageRank,Topic-sensitive PageRank。 更多的外部信息(如人的标定某些点更重要)如何排序?LiftHITS等。
十二、搜索相关性
主要讨论的就是relevance,即document和query如何matching,主要可以分为五类(其他三类在前面的课程多少提过,Query reformulation,dependency model,latent space不做展开):
Matching witch Translation Model。由于不同人写的东西可能是属于不同的语言的,所以希望完成从document和query里面进行translation。可从Word-based,phrase-based,syntax-based三层角度去做。但是会有不同于一般机器翻译的三个问题:1training data:用query的话,语料库词会比文档还多(千奇百怪的web发明),可以使用title-document。2document field:会有很多的信息如何用。3Translation model:该用什么样的model。 Matching with Topic Model。topic=a group of words with weights,即word-topic-document,概率图模型比较流行。
十三、从物理世界建构智能——移动计算及普适计算的前沿
数据是由直接和间接人生成的,反映着很多的信息,怎么保护隐式,怎么聚合多来源信息,如何速度快如何实时,如何节能省电,如何去获取这些数据。设备的Size决定了人如何和设备进行交互,主要有三种:
厘米级:手机。 分米级:平板。 米级:电脑
普适计算应该是帮助人去完成一些事情,去扩展人的能力,尽可能让人感受不到。
十四、知识加成下的信息检索
如果没有common sense是很难理解信息的,所以很需要knowledge的帮助。主要有几种常用的:
Wordnet。语言学的意义,普通人很难get。 wikipedia。大家都能edit,比较乱,很多无用信息。 Freebase。人edit的,但是比较偏不够广泛。 Probase。比较普适的。