时间失效,8年以上,例如:“怎么知道别人开过我电脑没,09年的消息。
信息失效,网页内容已经过期,如果页面是新闻或者招聘、下载等页面时间敏感较强的页面,时间上要严格一些,保证1-2年内。
时间过旧,根据query时间敏感度和结果的更新频率进行综合判断,一般以超过5年结果进行时间是否过旧划分。
时间内容和展示不一致。
结果非最新进展。
进行query和结果敏感度衡量。
先判断时间失效, 然后判断信息失效,时间过旧,内外时间不一致,事件最新;每条扣1分。
死链单独扣分。
单纯小说query暂时不评,下载需求按照正常评。
时间敏感的query根据其敏感程度判定,如“优惠卷使用超出使用日期”,“新问答电脑故障解决-回答是XP系统的方法”信息失效。
关于视频资源播放和下载问题:有时间显示,有简介,无论能否播放依照时间打分;无时间显示,对应简介,无法播放算信息失效或者低质,还是按照时效性最新算,不扣分。
网页内容时间:就是网页中所描述的内容的时间,比如一个网页描述的是1945年二战快要结束的时候的事情,那么这个网页的内容时间就是1945年,如果介绍的是2018年北京奥运会开幕式,就是2018年8月8日,目前的网页内容时间是从网页内容的所有时间中挑选出一个最能代表内容的时间,是一个基于标注数据的Ranking模型来实现的。
网页发布时间:一般是指网页的生成的时间,一般情况下是指网页的Link创建的时间,对于一些内容页,比如新闻,二手交易等,网页发布时间一般在网页上会明确给出。
网页更新时间:一般是指网页主体内容发生最近一次变化的时间,对于一般的新闻和普通的文章页,一般生成后不会再进行更新,所以最后一次更新时间一般情况下都是网页的发布时间。
网页发现时间:一般是指网页链接被搜索引擎爬虫发现的时间,由于爬虫Flowlink需要一定的时间窗口还有内容孤岛等现象,网页发现时间有可能严重滞后于网页发布时间。
网页首次进入索引时间:因为网页被爬虫发现后,网页并不一定能够及时的被抓取和解析到,可能首次进入索引的时间会严重滞后于网页发现时间。
网页时间:就是最能代表一个网页价值的时间,一般情况下是从这5个时间进行选择,目前我们使用的是一个规则的方法进行时间挑选。
对于新闻等内容页面,如果网页发布时间可以通过模版和规则明确抽取出来,就选择该时间作为网页时间。
当多个时间存在严重不一致的情况下会优先选择置信度高的时间,比如网页发现时间或者网页首次进入索引时间。
标注同学的培训成本很高,需要消耗大量的时间去培训标注的成员,同时进行case解释,这个陆续地持续了大概1个月的时间。
标注的拟合率较低,在项目初期5人的跨档(也就是5个人中有3个以上的人标注的是比邻的档位)拟合率不到50%,即使到了项目的最后阶段,5人的单档拟合率(也就是5个人中3个以上的人标注的是相同的档位)也在60%左右,跨档拟合率在70%~80%之间波动。
Pairwise模型输出的连续值,分辨率更高,更适合上层排序的基础特征。
PointWise模型输出的主要是0,1,2及以上,主要是用来进行索引挑选以及上层排序的伪反馈标记特征,通过统计召回结果时间敏感的网页的分布来反推Query的时间敏感度,这个后面会详细介绍一下。
1)第一版:基于时间敏感词的Attention机制的ABCNN的模型
通过一些时间敏感的Patten做Attention来确定Query是否可以和某些时间敏感的词进行搭配,如果Query和这些时间敏感词的搭配比较合理在搜索语料中也比较常见,那么这个Query是时间敏感的Query的概率自然也会比较高,这些常用的搭配的词主要是:最新,最近,今年,年份,今天等。
2)第二版:基于伪反馈的蒸馏技术
刚才上面提到了其实我们已经有一个网页端的时间敏感度的模型,因为网页本身的信息量大,网页结构特征多,更容易做的准确。当我们有一个比较准确的网页时间敏感度的模型的时候,可以通过召回结果的分布分析,生成大量的伪标注的样本。通过这些伪标注的样本可以训练一个大样本的CNN的模型,效果对比第一版提升也比较明显。
3)第三版:基于主动学习的样本标注的迭代技术
时效性的上层排序的时候需要一个TriggerModel,TriggerModel的作用是用来判断Query是否需要时效性的调整,以及时效性调整的力度。
对于时效性特别不好的结果,如果影响到了满意度,那么则直接降低1档或者2档。
对于时效性不是特别理想的结果,但是不影响满意度,适当降低0.5档,对于时效性特别好的结果适当提升0.5档。
理解query含义,推断用户的需求。
从用户需求出发,判断结果的时效性能多大程度的满足用户。
根据后边提到的标准,给出合理打分。
2——页面结果的时效性满足很好,为最新/价值高结果。
1——页面结果的时效性的满足一般,不为最新/价值结果,但是有一定参考价值。
0——页面结果的时效性满足很差,为很旧的结果,或者已经无参考价值。
不相关——页面内容与query完全不相关。
死链/spam——页面作弊/内容失效/空白页。低质。
无时效性需求——query明显无时效性需求(例, 论语全文)。
无法判断——页面内容不包含时效性因素,无法按照时效性满足打分(例,百科、长视频页面、网站首页)。
第一类:比如一些新闻,因为很多新闻事件,虽然人物、地点等没有变化但是核心的事情已经变化了,这个就会影响基础的满意度,这种在AC标准中有体现。
第二类:另外的一种是信息失效,信息失效在AC标准里面是有明确定义的,属于无价值内容的,这个是可以直接作用于满意度的。一般来说信息失效的概率和时间敏感度和网页离现在的时间成正比,一定量的信息失效的目标可以学习到部分时效性的目标。
第一版的方法:当第一个Label的相同的时候,增加辅助Label的作用,计算辅助Label的Loss,后来在应用中发现这种方法存在一定的问题,就是这种情况下辅助Label只能在Label相同的样本上起作用,Label不同的样本无法产生Loss。
第二版的方法:为了弥补第一种方法的不足,我们通过Label放大的方法,将原来的Label进行缩放,将AC的标准变成 8,6,4,2,0,然后将时效性的目标3,2,1,0,变成(1,0,-1,-2)。通过这种方式,将时效性的Label增加到AC的Label上,形成了新的Label目标,同时将LightGBM的交换Loss的2^Label 变成2*Label(这里参考了神马搜索的做法),这个主要是因为放大了Lable之后,2^Label会使得头部的Loss特别的大,导致和线上真实的交换损失不一致。
第三版的算法:后来我们在观察样本的时候发现,时效性的作用其实和样本本身的Label有一定的关系,当样本本身的Label是1的时候,其实用户不太关心时效性,当Label本身是3的时候时效性起的作用又很小,基本上用户也不太关心。时效性主要起作用的是标注样本的2档这部分,我们通过降低3档和1档的时效性作用,增加2档的时效性作用,来提升时效性特征目标的区分度。
当时间敏感度较低的时候时效性起的作用要弱。
当整体相关性水平都不高的时候,其实排序的核心还是相关性。
时效性标注的样本量要远小于神马搜索的AC样本,学习能力要弱于神马搜索的AC Model。
RankScore = RankScoreAC*Lamda + RackScoreTimeliness*(1-Lambda)
早期的第一版:TriggerModel结合人工规则的方式,TriggerModel会计算时间敏感度强弱的特征(TriggerModel在上面Query信号的地方简单介绍了一下),然后根据TriggerModel反馈到时间敏感度的分档信号上,然后人工指定Lambda的值。
中期的第二版:在第一种方法的基础上,将TriggerModel的阈值和Lamba权重之间的关系,进行平滑,设计了一个简单的调和平均的方法,将Trigger的预测值和Lamda的值进行了关联,使得调整的维度更为平滑。
正在尝试的版本:这个是目前排序里面正在尝试的多目标融合的算法,通过纯Pair的标注样本,将多个多目标模型(每个多目标模型都学习了AC的目标和一个单独的子维度)进行模型融合,通过一些全局的统计特征等来学习不同的多目标模型的权重。
上面的时间限定查询和TimelinessQueryRewrite都会单独的发起一次查询,这个查询如果用通用库的话,按照现在泛时效性Query的触发的标准,那么索引的查询量将增加50%,这对索引来说是极具的性能消耗,但是带来的提升却并不一定有这么的大。
独立索引之后,时效性的数据挑选和生效逻辑可以更加的灵活,摆脱神马搜索索引的各种限制。
新闻和强泛时效性下,需要天级别,小时级别,甚至是分钟级别的数据收录,在神马搜索场景下是无法实现的,需要单独的时效性业务索引来承载这块。
5 天视觉 AI 训练营,由达摩院 AI 视觉专家亲自设计,手把手带你完成 4 个完整项目,快速入门视觉 AI。点击”阅读原文“立即参加吧~