搜索排序算法第一式

       当产品越多,促销活动越多,入口越来越深的时候,需要有一个好的搜索直达用户需求。
       本文分两块,一块是讲一个完整搜索引擎的算法整体架构。一个讲搜索排序的精排过程中都能有哪些花招可以玩。最后附上一些能work的论文。给大家参考。
 
       下面是一个完整搜索算法的架构图:







这里讲的都是算法。一些工程方面的模块,例如物料如何dump进索引没有,数据如何保证实时同步,模型、特征如何实时更新不在本文讨论范围内。
一个query进来后,有两道把关保证搜索的质量:第一个是意图识别,他保证相关搜索不遗漏导流到相关业务线;第二个是召回粗排,他保证跟query词相关的产品不会被漏召回。
 
意图识别:有两个方面,第一个业务可以自行维护一个意图词库,根据品类不一样维护自己的字典,这一块会有分词服务,你维护一个最长的意图词即可;另一个是训练的NLU模型,
相关的学术研究方向是QueryTagging。
 
召回粗排
这一块有一个我觉得AK47的方法,就是graphSAGE 。按Graph Convolutional Networks (GCNs)学派的观点,万事万物兼可graph化,马克思说,人是社会关系的总和,人是图的点,关系是边;item2item同样可以,需要召回的商品都是一个点,他们被一个queryID同时点击过、被浏览过都可以构建边,从而召回时,一旦关系网上的一个商品被触达,根据关系的亲疏,可以召回这些相关商品。
相关代码:https://github.com/williamleif/GraphSAGE
相关论文:
1、Petar Velickovic, Guillem Cucurull, Arantxa Casanova, Adriana Romero, PietroLio, and Yoshua Bengio. 2018. Graph Attention Networks. InInternationalConference on Learning Representations.
2、Ying, R.; He, R.; Chen, K.; Eksombatchai, P.;
Hamilton, W. L.; and Leskovec, J. 2018. Graph convolutional
neural networks for web-scale recommender systems. In KDD,
974–983.
 
精排阶段:
 
召回的商品有些跟query词相关性是很低的,这一块需要learning TO rank来做一个排序,通过对召回的item和query词,构建一个正负例相关数据集。这里有pointwise、pairwise、listwise,工业届一般用pairwise。
标注数据集可以是(query,item,score),score就是分数。
 
重点聊一下带货都可以怎么玩排序。潮一点的方式都有哪些。

搜索的精排和推荐的排序比较类似。区别在于样本的key-label中的key 不一样。搜索的key是[userId,query,itemId],推荐的是[userId,ItemId0[or null],ItemId1[recommed ItemId]。
有两个可以深挖的地方,也是从粗逻辑上讲的通的。
 
Context:我们以往的排序更多的是考虑单个商品的排序逻辑,事实上,一个人的决策过程是比较复杂,两个商品很多时候没有用户也不知哪个更好,因而我们的排序更应该是在一个全家桶里做文章,一次query,前十个商品应该放哪些,而不是哪个应该排第一。
 
序列学习:user在查看点击了一系列商品后,后面的排序应该怎么排应该在前面的交互信息中建模,把人的一系列行为作为一个序列,再决定接下来应该怎么排。
 
强化学习:在前面两个基础上,事实上可以强化学习建模。棋盘是一次query的排序列表W(例如10个商品),棋手A走棋就是用户的一次点击,棋手B走棋就是agent的一次排序,由于人的决策过程链路较深,是可以用蒙特卡洛搜索树做决策的。
 
搜索带货找了几篇能work带来提升转化的paper。简单列下:
1、Behavior Sequence Transformer for E-commerce Recommendation in Alibaba 2019
2、Globally Optimized Mutual Influence Aware Ranking in E-Commerce Search IJCAI2018
3、Exact-K Recommendation via Maximal Clique Optimization KDD2019
 


请使用浏览器的分享功能分享到微信等