此章节主要描述通常的搜索引擎的搜索结果的组成部分,以及可能涉及的比较关键的问题,问题的解决简单提及,并未深究。
1.结果页和snippet
Google搜索flower的结果,其中最上面有底色的是广告。
搜索结果由一系列的文档摘要组成,每条摘要包括title,url,cache,snippet(概述文档内容),匹配的关键字往往会高亮(加粗或者其他颜色),而这其中snippet对用户判断搜索结果是否相关至关重要,下面就来看一下相关的知识。
snippet generation
snippet是文本摘要提取的一个分支。区别在于snippet产生不仅要包括和query无关的摘要,而且还要包括和query相关的摘要。
文本摘要技术始于1950s(Luhn),他的方法是基于重要度因子(significance factor,即为SF)对文档中的所有句子进行排序,选择top的几个句子作为摘要。而句子的SF取决于word的SF。而重要的word是指中等频率的word。
计算句子的SF方法如下
- 找到重要的word
- 找到重要的text span,text span由重要的word,和其他word组成,而其中两个重要的word中间的非重要的word数目不能超过k(通常为4),然后计算text span的重要度,为m2/n,m为重要的word的个数,n为text span的长度
- 句子中重要度最大的text span的重要度即为句子的重要度因子
snippet的生成可以看成是Luhn的方法在寻找重要的word和如何选择句子的阶段做一些变体。如选择重要word,计算word的频度的时候,可能会针对文档中句子的个数做一些平滑。而如何选择句子往往会考虑到句子在文档中的位置信息,是否是标题,是否是第一行,句子中的query term的个数等等。在网页中,有时候考虑metadata,这些数据中包括description,而其他的如wiki,则有对应的简单的入口可以作为摘要。
最重要的一点是,query中的所有term尽可能出现在snippet中,以表明query和文档的关系。
2.搜索和广告
广告是搜索引擎的收入来源,搜索结果中展示广告称为sponsored search。
sponsored search并不是简单的文本搜索,需要考虑到更多经济学和博弈论相关的知识。
先从retrieval的角度来看,问题的关键是做短文本之间的匹配,query和广告都很短,假如做匹配或者相似度计算,内容显得单薄,因此文本扩展的技术非常重要,文本扩展通常使用的技术包括两种:
- query reformation,利用session log来扩展出query reformation的list来代表query
- 使用搜索结果扩展,将广告的文本或者query的文本的搜索结果来代表query或者广告
关于排序,广告的排序往往会考虑广告的质量和bid,而质量往往和相关性和点击率相关,即大概是rank by(ctr * relative * bid)
3.结果聚类
记得上学的时候我做过相关的工作,不过是基于语义网的对象识别,相对来说可能容易一些。而对于通用搜索引擎,据我所知,目前貌似主界面没有采用聚类的方式展示的,不过最近google的knowledge graph展示了比聚类更好的对象识别技术。
结果聚类的时候两个问题至关重要
- 首先是效率,因为聚类往往是实时的,算法的效率要高,即使有cache,大多数的query还是需要在线计算
- 结果的可理解性,目前有两种主流方式
- 类别实现没有,从算法聚类的结果总抽取word来代表聚类,有点是简单,缺点是可理解性差
- 事先定义类别,然后将聚类结果和类别进行match,优缺点同上述方法想法