本文简单总结一下最近对搜索引擎的学习研究。综合了stanford cs276 http://web.stanford.edu/class/cs276/ 和一些query理解http://queryunderstanding.com的内容。
什么是搜索引擎?
用户带着目的(user intents),在搜索引擎输入一段文本(语音或文字)(query),搜索引擎返回相关的网页、文档等资源(search result presentation),希望能满足用户的目的(search evaluation)的一个系统。
和推荐不同,搜索有目的。
搜索基本是单轮交互。
用户意图
用户意图可分为3大类:
1 导航类
用户想去某个网站,但又不想直接输入url,例如 百度。
2 信息类
根据答案类型的划分:
- 直接型:了解关于一个话题某个方面明确的信息,比如“中大的校园环境”
- 间接型:了解某个话题的任意方面的信息,比如“中山大学”
- 建议型:得到一些建议、意见或者某方面的指导,比如“如何填志愿”。
- 定位型:了解在现实生活中哪里可以找到某些产品或服务,比如“志愿填报咨询”。
- 列表型:用户希望找到一批能够满足需求的信息,比如“在广州的985院校”。
3 资源类
这种类型的搜索目的是希望能够从网上获取某种资源,又可以细分为以下几种子类型,
- 下载型:希望从网络某个地方下载想要的产品或者服务,比如“USB驱动下载”。
- 娱乐型:用户出于消遣的目的希望获得一些有关信息,比如“益智小游戏”。
- 交互型:用户希望使用某个软件或服务提供的结果,用户希望找到一个网站,这个网站上可以直接计算房贷利息。
- 获取型:用户希望获取一种资源,这种资源的使用场合不限于电脑,比如“麦当劳优惠券”,用户希望搜到某个产品的折扣券,打印后在现实生活中使用。
如何评估搜索质量?
本质来说,用户使用的是否开心。
那具体来说怎么衡量呢?
- 给用户返回相关的结果。(怎么衡量)
- 用户对搜索结果的点击很高。(错误的标题和摘要也可以导致用户点击)
- 用户使用搜索引擎后花了很多钱
- 用户重复使用率
相关性的衡量方法
query和doc是否相关(二分类或者打分),可以人工标注一个benchmark,但特别耗人力。benchmark的构建过程中,通常来说,doc已有,但query怎么得到?
query需要满足以下条件:
- 与doc有相关性
- 能代表真实用户的需求
因此,从文档中随机抽一些词,并不是一个好的想法。最好能从query的log中抽,如搜索引擎日志。注意:当user need被转成了一个query,我们应当衡量的是doc和user need的相关性,而不是和query的相关性。例如:user need:我家游泳池脏了,需要清洗。query:游泳池 清洗工。应当衡量搜索结果是否满足了需要清洗游泳池的需求。
有了benchmark后,评价指标可以有
一、 不考虑排名的指标。例如precision、recall。
二、 考虑排名的指标。
P@K(precision@topK):用K卡一个阈值后,计算precision。
MAP(mean average precision):计算需要知道一个query的所有相关文档,并且假设用户关心所有相关的文档。在学术研究中使用最多,但不太适合真实的搜素引擎。MAP的计算图示如下: