百度搜索研发部:同义词反馈机制

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

时间: 2024-08-23 01:33:55

百度搜索研发部:同义词反馈机制的相关文章

5月5日 百度搜索技巧

1.“”——精确匹配 如果输入的查询词很长,百度在经过分析后,给出的搜索结果中的查询词,可能是拆分的.如果您对这种情况不满意,可以尝试让百度不拆分查询词.给查询词加上双引号,就可以达到这种效果.如:“上海大学”,搜索结果中的上海大学四个字就不会是分开的. 2.(-)——消除无关性 逻辑“非”的操作,用于排除无关信息,有利于缩小查询范围.百度支持"-"功能,用于有目的地删除某些无关网页,语法是"A -B".如:要搜寻关于"武侠小说",但不含&quo

人机交互设计之百度搜索软件评价

目前所使用的最多的也觉得最方便的就是百度搜索了,下面是我对这款使用多年的软件的评价. 1.用户界面方面: 界面简洁容易操作,我们的外教老师也会使用百度搜索.上设有糯米,新闻,hao123,地图,贴吧等网站的超链接,这些包含了衣食住行和娱乐等项目,使用户用起来非常方便,还有登录和设置按钮,用户登录之后可以根据自己的喜好进行个性化设置,使用起来更方便和顺手.下设二维码,可以方便下载百度搜索和百度糯米手机APP,另外还有上传照片的功能.总体来说界面简单易操作,适合广大年龄层和文化层的用户使用,我觉得这

百度搜索下拉框提示代码 opensug.js

opensug ·简单方式--方便的将"百度搜索框(带提示功能)"直接加入到您的网页中. 将以下代码加入到您的网页中,即可获得带有"搜索框提示"功能的百度搜索框. HTML代码: <form action="http://www.baidu.com/baidu" target="_blank"> <table bgcolor="#FFFFFF"><tr><td>

jsonp跨越请求百度搜索api,实现下拉列表提示

题目来源: 最近在做百度IFE前端技术学院的题,然后有一题就是模拟百度搜索智能提示.题目是开源的,稍后给出地址. 因为博主没学过后端啊,欲哭无泪,所以不能实现后端模糊搜索,那如果前端ajax纯粹请求一份同样的数据,效果就不好. 机智的博主直接把百度搜索api借来一下. 直接从开发者工具,监控网络,找到请求地址. 百度api: 我把api缩减了一下,删除了大部分暂时用不上的参数. https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=abc

模拟百度搜索框,输入时显示历史记录

今天写了个小demo,利用本地存储的特点,模拟百度搜索框. 主要知识是利用本地存储的特点,模拟百度搜索时的历史记录显示. 主要HTML代码为 <div class="search"> <input type="text"/> <button class="btn">搜索</button> </div> <ul class="hidden"> <li&

百度搜索小脚本

最近在提高自己编程能力,拿一些现实的小脚本练下.该脚本为python语言,主要涉及模块urllib,和正则表达式. 功能:输入要查询的关键字,和查询条数,会返回关键字的百度搜索结果的url和条数,一次最多查50条. import urllib.request import urllib.parse import re while True: x = input("请输入需要搜索的关键字(输入"q!"退出程序):") if x == 'q!': print('bye!

百度搜索这些词:(百度搜索特效,好玩)

特效,是百度搜索关键词个性体验化的一种方式,之前大家可能遇到搜某些关键词的时候,会出现意想不到的彩蛋. 下面是一些常见的带特效的关键词,你别说,小编第一次搜的时候,还真被吓一跳,不信你试试. ps.需 PC 浏览器,手机上还无法实现,如果你没看到特效,不妨换个浏览器试试. 1.打雷 真的会出现打雷的声音,而且特别逼真.此外,“布谷鸟”.“海边”.“大风”也会有同样的声音效果. 2.Duang 整个屏幕都跟真“Duang”起来了… 3.黑洞 我去,屏幕上真会出现一个黑洞,把所有东西都吸进去. 4.

【超实用的代码段】为什么比百度搜索Bigger更高!!

啥,超实用的代码段?百度搜索,你有我有全都有!! 别逗比了,你以为你是右键狂魔,你就能改变世界! 超实用的代码段比百度搜索Bigger更高!! 你可以搜索出大部分代码段,但你知道哪段效率更高.性能更优.路径最短.兼容最强? 你可以搜索出大部分的技术,但你知道哪些是对的?哪些是错的,哪些是旧的,哪些是新的? 你可以搜索出More and More,但你绝不会Bigger and Bigger! 你浪费了太多时间去搜索,去试错,去分辨是非! 超实用的代码段,只想告诉你,好书一本,不学会死. 超实用的

first move advantage_百度搜索

first move advantage_百度搜索 先动优势 first move advantage_百度搜索,布布扣,bubuko.com