当你在
Google上面或者
百度上面搜索的时候,下面是否有一个叫做“
相关搜索”的东西。对了,这就是所谓的“
查询重定义”。说白了,就是将别人的能搜到结果的查询来建议你。但是可能你也会发现,有很多的相关搜索,几条的建议表达的意思是相近的。比如说,输入苹果,那么建议出来的词条都是最近比较热门的IT方面的苹果,而对于水果苹果却没有提及。这样造成的就是信息需求的缺失,这是因为只是用到了一些日志的“共现”这样的算法。那么,对于用于搜索苹果,他的信息需求,也就是意图,可能是多方面的,查询建议就应该是从多个意图角度来进行建议。今天看到一篇论文,题目是《
Clustering Query Refinements by User Intent》,翻译过来是《
基于用户意图的查询重定义聚类》,作者是
google和
stanford的各个大牛。
摘要
本论文提供的算法能够改善查询建议的选择以及他们的摆放位置,也能够提供用户查询的几个方面的相关信息。本算法是利用了用户的点击结果以及Session共现来对重定义进行聚类的。它的核心就是在“马尔可夫图”上面的多随机漫步过程。结果是通过调研来说明的,表明本算法的查询重定义比传统的重定义更加的相关。
介绍
搜索引擎通常对于搜索结果返回的就是一些排序的列表。对于一个原始的查询,相关查询通常就是从其他和这个查询贡献的查询日志中进行抽取。本论文的目的是能够将这些重定义根据查询的不同信息的需求来进行分类。对于重定义的聚类有很多的好处。
1)因为在结果页面,查询建议的位置还是很少的,所以需要选择一些比较相关的查询来放在这些位置上面。
2)聚类能够改善相关搜索在结果列表中的排序位置。
3)根据用户的查询Session能够提供更相关的查询建议。
4)聚类能够提供用户对于一个查询的不同方面的信息需求或者兴趣。
对于传统的查询重定义的聚类有几种方法:
1)根据查询的结果来进行聚类,比如将共享了更多相似结果文档的查询分为一组,或者共享了更多相似的在结果文档中的查询词。
2)根据不同用户查询Session中的共现,比如将在一个Session中共现的查询分为一组。
本论文将会组合点击的结果文档以及Session分析来对查询重定义进行聚类。将用户的行为建模成一个节点由重定义和点击文档组成的图,所以对图的节点的聚类就对应了不同的用户意图。这个图本身就有一种自然的马尔可夫解释,所以我们可以将重定义表示成吸收状态的向量。这样带来的好处是计算复杂度的大幅度降低。
问题描述
首先需要介绍一些术语。Session是一个查询的序列,它们由同一个用户在很短的时间内提供。
- 重定义:一个查询r被称为q的重定义,如果r在同一个Session中根在q后面。假设R(q)是所有的重定义集合。
- 共现:Q(q)表示q的共现查询序列,如果该序列中的查询和q出现在同一个Session中。
- 文档集:D(q)是查询q的点击文档集合,如果q提交之后返回的文档被点击。
将用户行为建模为一个图:我们的目的是通过查询日志,对于一个给定的查询q,将其重定义根据不同的信息需求进行聚类。构造一个图G(q)=(V,E),V表示交叠,由查询q,R(q)和D(r)这成,这里的r属于R(q)。E包括:(q,r)、(r,d)和(r,r)。这里面的r是重定义,q是查询,d是文档。
聚类节点:我们说q的两个重定义ri和rj具有相同的意图,如果一个用户在同一个Session能够通过这两个重定义到达同样的文档。
这里和传统的聚类方法比较由两个很重要的不同。一个是聚类过程中使用了整个的路径,而不只是返回的文档,这样就是对查询的一个扩展过程。另一个是我们在考虑从ri到rj的路径上面,将整个图限制在了q的重定义上面。第二个比较难于理解,比如说对于查询“sun”,如果没有在mars这个Session里面,将会导致不同的查询页面。
这里我们的一个假设就是:从ri能够到达的文档集合能够代表用户从q到ri的选择过程中的意图。如果ri到rj有一条边,或者说ri和ri拥有相同的文档集合,那么ri和rj的Session可以互相到达。那么聚类的目的就是:
1)最小化来自两个不同类别的边的书目
2)最小化来自两个不同类别的文档的节点的个数
这样的问题最终被影射为了一个最小k割集的问题了。这是一个NP问题,时间不是指数的。
马尔可夫模型
本论文的聚类算法的一个很关键的地方就是:这个转换图本身就有一个很自然的马尔可夫解释,也就是能够描述为不同状态之间的转移概率。马尔可夫模型中的吸收状态就是我们这里的图中的文档集合。因此,我们能够将每个查询重定义表示成一个向量,这个向量的值就是能够到达各个吸收状态的概率。这样的聚类算法在时间复杂度上面有显著的减小。
构建马尔可夫模型
在构造图的过程中,其实就是在构造一个马尔可夫模型。因此,我们可以将图中的节点看成是马尔可夫中的状态,边看成是转移概率即可。
转移概率:围了保证这个图是一个合法的马尔可夫链,我们需要对一个节点的出边的值进行归一化。我们首先定义了一个e,叫做“文档逃逸概率”,也就是对一个r,有e这样的概率会转移到文档集合,所以还有( 1 - e )的概率会转移到另一个ri。所有接下来就可以定义这个转移概率矩阵。对于G,
每个(ri,d),d是D( ri )中的一个,那么P( ri , d ) = e * ( n( d | r ) ) / ( sum n( d | ri ) )。也就是用e乘以从ri到d的点击次数占整个ri到所有d的点击次数的比例。
每个(ri, rj),ri和rj都是q的重定义,并且他们共现,那么P( ri , rj ) = ( 1 - e ) * ( n( ri , rj ) ) / ( sum )。前面的( 1 - e ) 就是一个“反逃逸”的因子,后面也是似然估计,就是ri和rj共现的概率占整个ri共现概率的比例。
对于每个d,转移概率为1。
可以看到这里面还有一些节点的转移概率没有说明,这是因为在后面的算法中用不到。
马尔可夫链属性:吸收态就是从这个状态无法逃逸出去了。瞬时态就是有一个非零的概率不回到他自己。这个没有理解,总之,重定义就是瞬时态,而文档集合就是吸收态。一个马尔可夫是可吸收的,如果从每个状态总能够到达一个吸收态。所有,在一个马尔可夫模型上,走有限多步就能够到达一个吸收态。
根据吸收态分布来聚类:我们可以利用“吸收分布是和开始节点有关”这样的事实来决定哪个文档最能够描述查询。特别的,我们用一个从每个ri的随机漫步来得到一个他们分别的吸收状态向量li,每个元素都是一个文档节点,值是经过有限步之后的概率。这就让我们能够将重定义映射到一个n维的空间中。注意到一个问题就是两个重定义之间的相似度是靠从他们到文档的“概率流”来达到的。这样的结果就是,对于ri和rj之间的边权值大的,那么经过随机漫步之后,权值会分配到各自的到达的文档集合。所有对于边权值越大,那么他们就越相似,也就是再类内。
计算分布
现在描述一下如何计算吸收分布。“访问概率”就是从一个状态ri到吸收状态的n步随机漫步的值。对于转移矩阵P,P^n就表示n步随机漫步之后的矩阵,那么对于节点v的一行,表示的就是从v开始的n步的概率分布。这样,对于一个重定义ri,这样的分布就是用户能够到达的不同的文档,并且是从q开始且包含了ri的。
抽取吸收分布:一个可吸收的马尔可夫模型,在有限步之后,都会进入一个吸收状态,也就是瞬时态结果都为0。这样我们只会关注文档集合的节点,所以抽取也就是抽取文档集合节点的列而已。这里注意到两个参数e和n,e表示用户有多愿意从任何重定义点击这个文档。n表示迭代的次数。
主题漂移
这里还说了一个主题漂移的事情,也就是用户在点击任何的URL之前,就会重新提交一个新的查询。给原来的模型新加入了一个状态f,代表用户的主题漂移的转移状态,所以每一个查询ri都有一个转移到f的。论文中提到了一个计算方法,概念上面还有些模糊,需要再看看。
聚类
终于到了聚类的阶段了。有点象是用了层次聚类的方法,也就是每一步都找到总的节点中最近的两个节点,然后将他们合并,知道最后只剩下少数的类别。所以这里面涉及到了两个方法,一个是两个向量之间的相似度,以及两个类别结之间的相似度。向量相似度算法采用的是cos相似度,类别的相似度采用了全链接。全链接不知道为什么是这个名字,其实很简单,就是两个类别中的节点中,离得最近的两个节点之间的距离。在这里是相似度最小的两个点的距离。在算法中,初始化每一个重定义为一个类别。最后需要限制一些重定义的个数,以及最后的文档的个数,以此来限制向量的维数。
最后的实验以及讨论应该是最精彩的部分,而且写得非常的详细,其中的每一个都考虑到了。以后用到的时候需要好好的看一下。总的来说这篇论文我看了很久才看完,看了很多遍。首先是作者很权威,而且论文的确符合他们的水平。整个论文写得很有条理很详细,但是都是说的一些技术。