同义词反馈机制

简介:

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

by xuwenzhi











本文转自百度技术51CTO博客,原文链接:http://blog.51cto.com/baidutech/1033668,如需转载请自行联系原作者

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
JSON API 数据格式
LangChain Agent:赋予 LLM 行动力的神秘力量
LangChain Agent 是什么?有什么用?基本原理是什么?那么多 Agent 类型在实际开发中又该如何选择?
1131 8
LangChain Agent:赋予 LLM 行动力的神秘力量
|
关系型数据库 MySQL
【问题处理】—— Mysql : You can‘t specify target table for update in FROM clause
【问题处理】—— Mysql : You can‘t specify target table for update in FROM clause
1362 1
|
9月前
|
存储 缓存 搜索推荐
HTTP500代码怎么解决?常见的5xx网页错误及其原因
本文介绍了如何修复HTTP 500错误及常见的5xx网页错误。500错误表示服务器无法处理请求,可能由文件权限、脚本错误、数据库连接或配置问题引起。作为用户,可尝试重新加载页面、检查URL或清除缓存;作为网站所有者,需检查`.htaccess`文件、服务器日志、插件冲突及PHP版本等。此外,文章还列举了其他5xx错误(如502、503、504等)及其原因,帮助定位和解决服务器端问题,避免影响流量与搜索引擎排名。
5600 4
|
Java Spring
SpringBoot2.7.18拦截器失效不起作用
本文记录了作者在配置Spring Boot项目中的拦截器时遇到的问题。通过复制和修改其他项目的拦截器代码,但发现拦截器始终不生效。最终发现问题出在`WebConfig.java`中配置路径模式的方式上,即在已设置`context-path`的情况下,不应再使用`addPathPatterns(contextPath + "/**")`。文章提供了详细的配置文件和代码示例,帮助读者理解并避免类似问题。
916 0
|
Linux C语言
成功解决 在Linux CentOS 7 中安装gcc
这篇文章介绍了如何在Linux CentOS 7系统中安装gcc (g++) 8工具集。由于CentOS 7默认的gcc版本是4.8,而这个版本与Qt 5.14、Qt 5.15或更高版本不兼容,可能会导致编译时出现系统头文件错误。文章中提到,即使在项目配置中添加了`CONFIG+=c++11`,如果仍然报错,那么很可能是gcc版本的问题。为了解决这个问题,文章提供了使用CentOS的Software Collections (scl)来安装更新版本的gcc的步骤。
成功解决 在Linux CentOS 7 中安装gcc
|
存储 Web App开发 移动开发
js【详解】本地存储 Cookie、sessionStorage、localStorage
js【详解】本地存储 Cookie、sessionStorage、localStorage
583 0
|
Kubernetes Cloud Native Java
灰度发布、蓝绿部署、金丝雀都是啥?
在滚动部署中,应用的新版本逐步替换旧版本。实际的部署发生在一段时间内。在此期间,新旧版本会共存,而不会影响功能和用户体验。这个过程可以更轻易的回滚和旧组件不兼容的任何新组件。
灰度发布、蓝绿部署、金丝雀都是啥?
|
存储 Cloud Native 关系型数据库
《阿里云产品四月刊》—Ganos H3 地理网格能力解析与最佳实践(1)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
616 3
《阿里云产品四月刊》—Ganos H3 地理网格能力解析与最佳实践(1)
|
机器学习/深度学习 人工智能 算法
姿态识别+康复训练矫正+代码+部署(AI 健身教练来分析深蹲等姿态)-1
姿态识别+康复训练矫正+代码+部署(AI 健身教练来分析深蹲等姿态)-1
|
存储 关系型数据库 MySQL
【2024】新建mysql数据库,如何选择字符集和排序规则
【2024】新建mysql数据库,如何选择字符集和排序规则
2108 1

热门文章

最新文章