前沿重器[12] | 美团搜索引导技术启示
【前沿重器】
栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。
往期回顾
搜索引导应该说是一个在NLP和推荐边缘疯狂试探的一个技术模块了。
搜索引导其实是一个重要性不亚于搜索本身的关键任务,他承担了引导用户更好地通过搜索完成自己的知识查询需求,同时,我们也可以通过学习了解这个产品,来完成以一个算法工程师的视角理解产品的训练,通过这个训练,能让自己更好的理解问题,解决问题。
搜索引导是什么
可能大家都不会很在意,但实质上其实已经帮我们很多,这就是搜索引导,我们先来看看搜索引导有什么产品形态。
首先是搜索前引导,这个一般在搜索引擎刚进来的时候给到用户的搜索建议,在一般的APP其实都会有,例如淘宝之类的,在搜索之前就已经会给出很多的搜索建议,大部分情况就是两种,一种就是热门,另一种就是历史搜索,好像变化不会很大,但是是否有一些更丰富的操作?可以继续看,这一步我们先知道产品形态。
然后是搜索中引导,这个应该是大家看的最多的,就是大家每输入一个字的时候,下面就会出很多结果建议,去猜测你想搜什么,有的比较厉害的甚至还带有纠错功能,当推荐的内容有用户喜欢的时候,就可以直达。
最后就是搜索后引导,一般是一些和query类似或者相关的query作为推荐,从平台层面就是延长用户的使用时间,而从用户层面就是可以拓展使用,可以打包获取更多的知识。
在了解一个问题是什么后,对于算法而言还有一个非常关键的点就是指标,除了工程所关注的推荐稳定性的核心指标,算法则要保证推荐的内容质量,是否真的是用户需要的,这个推荐一般最需要关注的,就是下面3个点:
点击率。这个应该是最直接可以想到的,只有预测到用户需要的,用户的才会去点。 转化率。点击只是用户开始检索的第一步,但是我们的这个推荐的query到底有没有为用户找到他需要的内容,这个也是需要评估的,因此除了点击率这一层,我们还需要关注下一层,这时候就要考虑转化率。 搜索引导的流量占比。如果搜索的质量足够好,用户其实会非常愿意用,对于一些比较规范常见的场景,用户甚至可以直接依赖搜索引导找到自己的需求(例如语音助手场景每天晚上定闹钟、每天吃饭时间点固定的外卖),而用户依赖程度的体现,就可以用搜索引导的流量占比来体现。
那么,我们的优化就可以以他们为目标,提升质量。
另外,从这些指标来看,搜索引导的端到端体现其实更像是一个推荐任务,NLP更像是一个对物料画像的理解和维护而已,端到端还是依赖推荐系统来对引导内容进行优化。
搜索前引导
搜索前引导应该是这3个引导方式中最接近推荐系统的一个模块了,因为——没有任何先验信息,我们直接推就好了,于是就成了一个非常朴素的推荐系统,看看大家能想到啥:
新热。 协同过滤。 用户、人群画像CB推荐。 更加模糊、泛化的表征和推荐。
但是,我们需要知道的一个点是,和一般的推荐系统不同,我们不仅可以依靠用户的点击日志来推荐,还可以按照用户的搜索日志来推荐,毕竟用户的搜索习惯也体现了用户的偏好。
搜索中引导
搜索中引导应该是最像搜索的一个模块,因为我们推荐的内容几乎就得是基于用户已经输入的内容,且很可能是文本层面相似。
我们来说一下给答案的基本逻辑吧:
用户输入后,按道理我们应该给用户的是一些和用户输入相似的内容,最直接的方式是文本匹配。 文字的输入是从前到后的,所以前缀匹配应该优于中间和后面的匹配的。 热度排序同样应该被重视,在相似度啥的都挺接近的基础上,较为热门的应该更可能是用户喜欢的。 多样性。用户总不想出来的搜索引导10条全都很类似的吧,所以一些非常接近的,不应该存在。 是否再来点个性化?
然后,得考虑一个很重要的问题——性能:
大家试想一下大家每输入一两个字,就要刷新一遍推荐结果,这个性能要求无疑是非常高的。 对于短的query,很可能会召回大量的内容,这时候要筛选和排序的耗时会非常高,有的时候我们甚至会对短句进行cache来保证这个性能。
搜索后引导
在用户搜索完以后给用户推荐一些内容,以引导用户继续搜索,那么,一般要覆盖着几个场景:
当前搜索结果未满足,给用户推荐相似的以尽可能满足用户。 用户完成搜索,通过相关内容拓展用户知识。 用户完成搜索,推荐一些问了相关问题的用户还喜欢的内容。
可以看到,其实这里有一个混合、复杂的逻辑,有搜索结果的拓展,也有个性化或者相关的推荐,这里就需要复杂的推荐技术来支持了。
效果提升和优化
借助一些比较基础、直观的策略,其实很容易就能追上人工运营、随机的baseline,毕竟在深入挖掘了场景特色和需求之后这些策略应该非常明显(算法要把自己当做半个产品,有一些算法策略其实还是很产品思维的,理解产品剖析产品就能找到合适的策略)。在此基础上美团给出了一些他们的升级迭代方案,我做了一些总结和提炼小小的汇总一下:
遇到瓶颈时,应该回到数据分析上来,尤其是各种日志,通过用户分析来发现用户的需求。例如看用户搜索了A之后会接着搜索什么,去分析各种占比,这些占比能为我们搜索后引导的query推荐带来启示。 完整的技术迭代规划。从baseline到优化方案的逐步迭代,而非一步到位。例如多源的综合排序,美团是从固定插槽起步的,这样有利于控制风险,而在后续才逐步切换为模型排序,实现更灵活的、非人工的自动排序,在后续就是一些负反馈机制等的实验上线,越是高级的开发者越要对这个有明确的把握。 个性化的剥离和表征。端到端的事情做多了,很容易忽略中间的关键特征,例如电商推荐场景就很容易会被点击率之类的带走,搜索引导虽然可以借鉴这个思路,但是在整个过程中有一个非常重要的关键点就是用户在搜索过程中是存在瞬时意图的,我们可以通过多种特征甚至是query本身去猜测,这个特征的提出非常有利于搜索引导效果的提升,而这种意图识别又有别于正规搜索的意图识别,他可以使带明确个性化的,同样是”斗罗大陆“,有的用户可以把漫画排前面有的则小说在前面还有的可以把动漫排前面。
自己的小结
这一章其实没有讲很多技术细节的东西,毕竟一个完整的产品,而且是非常成熟的产品,一篇文章聊完真的就太看不起这批兢兢业业的开发者了,但是收获却是非常高的,总结下:
以搜索引导为引子,了解对产品思维的要求很高,只有理解产品,懂产品才能设计到好的方案,尤其是推荐系统这种产品型的技术领域,这和NLP、CV这种任务型技术领域不一样,NLP和CV注重于人物本身,而和产品不强耦合。 哪怕是推荐系统,我们关注的也不应只是点击率本身: 关注这个点击率背后的用户思路,什么原因导致的用户点击或者不点。 用户到底需要什么我们有没有给到用户需要的东西。 怎么去知道用户是需要什么的——不能说回归数据了,而应该时刻把握技术,甚至坚持每天都去分析。 对用户的拆解,今天在搜索引导中提的瞬时意图,推荐系统喜欢谈的长短期兴趣等,有的时候我们甚至愿意花时间构造一个完善可靠的模型来预测用户的特征,就例如这里的瞬时意图,作者是明确说了这点的。 技术规划和迭代的思路。技术肯定不是一蹴而就,一步登天的,因为可用性、用户体验、推理性能、产品定位变更、社会发展等众多因素,技术是通过一个个版本迭代来实现发展的,前期我们要求可用性,使用简单快速的方式来上线,而后在各种分析后,逐步把质量进一步做高做好,提升用户体验,在现有技术遇到瓶颈的时候我们甚至要设计新的方案来解决一些可能目前还没其他人遇到的问题。