百度搜索研发部:同义词反馈机制
1. 介绍
由于搜索算法本身的局限性,对于用户的语义、意图等理解不够,而基于用户行为的点击调权,作为对传统搜索算法的补充,在搜索中扮演着重要的作用。尽管用户行为已经被证明在搜索中的效果,但是一直只是停留在query-url层面,或者ngram-url层面[1],没有深入反馈到检索算法中的基础策略,比如:同义词、紧密度、省略等,这些策略影响了url与query之间的关系。本文以对同义词的反馈为例,提出一个通用的基于用户行为的基础策略反馈框架。
由于同义词词典与线上应用算法的限制,检索系统中存在部分质量不好、或者本来质量好但是应用时错误降低了权值的同义词。在同义词召回出来结果后,呈现在用户面前,用户的行为数据可以帮助我们识别同义词的好坏。在计算出同义词的好坏后,就可以直接应用于同义词的退场或者调整应用的权值。
2. 反馈框架
在进行反馈机制的挖掘中,主要分为三部分:
1) 日志记录。主要进行基础策略用户行为的记录、以及query-url对进行用户行为数据的统计,解决如何利用用户行为衡量query-url转义问题。这部分还要记录影响具体query-url的策略,比如,这个url是哪个同义词所召回,或者是哪个term被省略。
2) 反馈机制挖掘。根据query-url中统计的基础策略的用户行为数据,进行基础策略的统计。这个地方不同的基础策略的衡量方式可以保持相同,但是基础策略提取的信息不一样。比如同义词是替换对,省略是指省略的term等。
3) 线上反馈应用。将第二步挖掘的词典,应用于具体的query,比如进行上下文的匹配,以及一些应用策略。
以上的框架比较笼统,下面针对同义词的反馈做具体的讨论。
3. 日志记录及统计
这部分首先需要记录具体的策略,比如在这个query下,每条url是由哪个基础策略所影响的,而且需要更加具体。比如同义词需要记录由那些具体的同义词所召回。因为往往一个query有很多同义词,但是真正每条url只是其中1到2个同义词影响的。
衡量query-url是否转义是非常关键的步骤,本文主要篇幅是讨论这个。衡量的方法需要借助用户的行为。在搜索引擎的日志系统中,对query-url有如下的用户行为统计量:(下面的讨论中,url的统计都是和query相关的,不再特殊说明)
展现次数:用户搜索后,搜索引擎返回的url在前k条展现的次数(display)
点击次数:用户点击url次数(click)
满意点击次数:考虑是否满足用户的需求的点击(相对停留时间,是否是最后点击) (satisfy)
因此我们可以用click/disply、satisfy/display来衡量url的好坏。但有如下问题:
1.位置偏置问题:点击次数对位置非常敏感,搜索结果中, url的点击次数随着url的排序位置越靠后,其点击次数越少,而且越后面减少得越快。因此位置在前的url,虽然转义了,但也有很多用户点击;反之,位置在后的url,虽然满足用户需求了,但也很少有用户点击。这样很容易让我们的反馈系统失效。
2.在搜索引擎中,用户对搜索结果的满意大致可以分为两个层次:1) 检索出来的url的标题和摘要是否和用户的query的意图一致。2) url内容的质量是否满足用户的需求,比如是否死链、知道页面没有人回答、作弊页面等。我们的目标是识别出转义的替换词对,这些只和第1个层次的满意相关。我们可以假设用户既然点击了这个url,说明这个url的title摘要是没有转义的,至于网页的质量不是同义词本身的质量所能影响的。
为了解决问题1,可以从这一角度考虑。排在后面的url点击次数少的原因是用户看到的次数少,因此不能用展现来与click做比值,可以利用一些方法来估计用户看到的次数,我们称之为检查次数(check)。这里有一些很简单的方法。比如对于每次用户的搜索,用户最后点击的url位置为p,那么位置在p之前url检查次数是1,在p之后的url的检查次数依次以一个概率衰减。这些概率可以采用一些贝叶斯的方法进行学习。[2]
采用检查次数可以部分解决位置偏置问题,但是学习到的衰减参数是对所有的query-url,但不同的query-url有很大的差别,这也是该方法的不足之处。
4. 反馈挖掘和应用
4.1 反馈挖掘
基于第3章中日志记录的工作,可以采用click次数用来表示url满足query的次数,而check-click表示url不满足query的次数。这样用click/(check-click)这个值来表示url满足query程度。对于具体的同义词反馈任务,可以把多条query-url结果中记录的同样的同义词替换进行统计click和check次数(即统计的key是 原词 替换词 二元组),把最后得到的click/(check-click)作为衡量这个同义词替换的相似度,即同义词的反馈替换相似度:
这个地方还有一大问题是,由于很多同义词是上下文相关的,比如:考虑一对同义词 看->治疗,在某些上下文下,比如:哪里看病比较好,是同义的;而在某些上下文下,比如:哪里看还珠格格连播。因此为了更智能的在不同的上下文进行同义词的反馈,需要在统计的时候考虑上下文,即统计的key为:原词 上下文 替换词 三元组。
但是不能把整个query作为上下文,这样统计会有很大的数据稀疏性,而如果随便把单个词作为上下文,会有很大的准确率问题。比如 哪里 对 看->治疗 以及看->观看 都是支持的。因此为了兼顾上下文数据的稀疏以及准确问题,需要一个上下文选择算法。在自然语言处理中通常采用似然比的方法(llr, likelihood ratio)[3],用来衡量orig与context的搭配强度,从而搭配强度越强,这个context词可以认为是orig词的替换上下文。其计算方法为:
其中a表示orig,context共现次数;b表示orig出现,context不出现的次数;c表示orig不出现,context出现的次数;d表示oirg和context都不出现的次数。N=a+b+c+d表示总共的样本数,那么llr的计算公式为:
4.2 反馈应用
反馈机制应用时,是针对每一个替换进行独立的判断,即已知替换对(orig sub),需要先进行上下文的选取。上下文相关的同义词,本质上来说被替换词是一个多义词,对于大部分query来说,只用一个上下文词就可以限定被替换词的意义。因此从简单的角度考虑,以及多个词的上下文融合所带来的噪音以及融合方式的问题,反馈机制应用时只选择一个在一定上下文窗口内的词语。
最后计算所选择的上下文,利用4.1节中训练的数据,作为替换的反馈相似度,即sim(orig,contex,sub)。利用这个值作为同义词的置信度应用于线上:或退场,或降权,或升权。
5. 总结和展望
在检索系统中,对基础策略做基于用户行为的反馈是一个比较新的方向,对于改进基础数据具有非常重要的意义。本文根据对用户行为的深入调研,探讨了一些方法和指标。
从总体上来说,本框架的相当于做了两个假设:用户行为与相关性的关系正相关,url相关性与基础策略正确性正相关。
第一个假设涉及到基础统计特征的调研思考角度。点击 检查是体现这些关系的特征之一,另外还可以考虑更多的特征,比如:满意点击,点击的url条目。还有飘红对点击的影响,用户的作弊识别等干扰基础特征的统计。这一点不同的基础策略是可以统一的
第二个假设涉及到基础策略以什么形式来表示这些基础的统计特征。这个是和基础的策略紧密相关。比如同义词选择上下文的方法,以及上下文的位置,多个上下文,或者不需要上下文的替换对识别等。另外还需关注基础策略的应用问题,比如同义词不转义,url转义的问题,这对基础策略的识别会产生误导。
从机器学习的角度上,该方法主要从生成模型的角度出发,因此模型的各个步骤解释性很强,但是无法利用更多的特征,可以挖掘更多的特征并采用机器学习的方法来利用这些特征。
6. 参考文献
[1] Huihsin T, Longbin C, Fan Li etc. 2009. Mining Search Engine Clickthrough Log for Matching N-gram Features . Proceedings of the 2009 Conference on EMNLP, 524-533.
[2] Ricardo Baeza-Yates, Carlos Hurtado,etc. Modeling User Search Behavior. In LA-WEB 05
[3] Christopher D. Manning, Hinrich Schutze. Foundations of Statistical Natural Language Processing. The MIT Press. 172-175