最近在给学员讲解电商搜索的过程中,仅仅从业务逻辑上进行了粗浅的介绍,导致大家依然存在着很多的迷惑点,在这里我就通过这边文章详细的给大家介绍一下,作为电商平台,他的底层搜索逻辑到底是什么样子的!
在这里仅仅介绍电商平台的搜索,它与网页的搜索还是存在着巨大的区别,请各位在阅读的过程中灵活掌握。
今天我们主要从三个方面给大家介绍:
- 电商搜索的需求背景
- 电商搜索与网页搜索的区别
- 电商搜索的原理介绍
一、电商搜索的需求背景
1、巨大的流量入口
在电商的 app 里,流量来自很多不同的渠道,比如说搜索、推荐、活动和直播等等。搜索,是电商 app 非常重要的一个流量入口,可能很多电商 app 来自搜索的流量都会占过半以上。对于需求明确的用户主要还是通过搜索来触达,对于需求不明确的用户主要通过推荐。那么,对于搜索,因为需求比较明确,所以会更容易转化。
2、需求与体验的不一致性
刚才我们提到,搜索在电商产品中占据着举足轻重的地位,但是用户的实际体验却与实际需求大相径庭,虽然一些电商巨头已经把搜索体验做的非常好,对于一些体量较小的客户依然做不好搜索体验,导致大量用户的流失,会给平台带来巨大的经济损失。
二、电商搜索与网页搜索的区别
1、优化目标不一致
网页搜索主要优化网页与搜索的相关性,而商品搜索的主要优化目标是点击率(CTR)、转化率(CVR)、交易额(GMV),两者的优化目标不一致。电商平台更加注重转化,而网页搜索中并不需要考虑。
2、数据结构不一致
网页搜索使用的是全网的非结构化数据,需要额外的加工;而对于商品的搜索,使用的是优质的结构化数据,相比网页里参差不齐的非结构化数据,少了数据整理和处理的工作。
3、数据源不一致
网页搜索使用的是整个互联网的数据,而商品搜索,往往是一家企业内部的数据,而且这些数据存储在它的业务数据库或者数仓里,相对来说数据是比较好处理的。
4、数据规模不一致
网页搜索使用的数据一般是万亿级的规模,有超过万亿的网页,但是商品搜索的话,根据客户规模的大小,商品的 SKU 数或者 SPU 数基本上是几万到几千万这个级别,与网页搜索不在一个量级。
5、召回率不一致
网页搜索对召回率的要求不会太高,但是商品搜索对召回率的要求是很高的,因为不能让一些商品永远没有曝光的机会,所以一定是需要让所有的商品都有曝光的机会,商品搜索对于召回率的要求是很高的。
6、个性化程度不一致
网页搜索一般情况下也能做到个性化,通常像谷歌、百度等搜索公司在个性化上也会做一些工作,但是对个性化的要求并不高;而商品搜索对个性化的要求很高,比如搜索的时候,不同的人消费能力的不同,那么排序的时候,需要考虑把合适价格的产品返回给不同消费能力的人群。
个性化要求的不同是网页搜索和商品搜索的重要区别,这就决定了两者技术实现的不同。
三、电商搜索原理介绍
首先来看看整体的技术方案
看不懂?没关系,我们一个一个来给大家讲解。
技术架构图主要分为三大块,一块是数据,一块是模型,一块是搜索引擎本身,其中数据和模型是为搜索引擎服务的,负责数据接入相关的业务,把客户的数据从把客户的数据接入到系统里面,放入数据中台上去计算物料画像、用户画像等等;接下来,需要用这些数据建一些模型,这些模型会在搜索引擎的各个环节中用到,比如意图、召回、粗排、精排中各个环节都会用到;再往下,就是一些基础的数据存储中间件。我们主要围绕着搜索引擎本身这个流程展开,最右侧就是搜索引擎的流程,接下来我们从上往下来介绍一下整个搜索是如何做的。
1、搜索词预处理
当用户在一个电商 app 上输入搜索词的时候,会先对搜索词进行预处理,这种预处理就包括常见的去停止词、归一化、拼音转文字、同义词替换、分词、补全、改写和纠错等等一系列的处理,然后把用户搜索的不太规范或者不正确的搜索词处理成规范形式和正确形式,并且做一些分词、转换的处理。
2、实体识别
做完预处理之后,得到了用户搜索词分词的结果,拿到这个分词结果,要把分词结果里面每一个词识别成一个实体。
那么什么是实体呢?
在电商里面的实体类型其实有很多,这里列出了三种,有商品实体类型,矿泉水就是一种实体,属于商品实体类型;农夫山泉是品牌这种实体类型;饮用水是一种分类或者叫类目,这些都是实体类型,实体类型下面有具体的实体,实体就是矿泉水,农夫山泉。所以需要知道输入的词到底是一个什么实体!
再举一个例子,比如说输入“奥利奥饼干”,做完预处理之后,得到“奥利奥”和“饼干”两个词,这个时候就需要做实体识别,识别后可以知道“奥利奥”是一种品牌,“饼干”是一种商品,这样就能做后续的处理。
做实体识别有一些前提条件,怎么知道矿泉水是一种商品?农夫山泉是一种品牌呢?这些知识其实是需要外部输入才能知道,这就是领域知识,所以首先要积累一些领域知识。
2.1 领域知识积累
领域知识其实是不太好分析出来的。
举个例子,猪舌和口条其实是一回事,茭瓜和西葫芦是一回事,这些知识,当然可以去分析,那如何分析?其实有很多现成的知识可以抓取过来利用,把它作为领域知识积累下来。这个领域知识有很多形态,最简单就是词库,也可以构建知识图谱,构建知识图谱是构建领域知识最常用的方式。
2.2 词库挖掘
词库如何构建,需要挖掘各种类型的词,比如最常用的同义词和上位词,同义词理解可以用前面举的例子,茭瓜和西葫芦是一回事,获取同义词有很多种方法,使用预训练的词向量方法去找共现关系可以大量的找到同义词 ( 也就是类似 word2vec 的方法 ),但是找出来之后可能不太准确,需要后期处理一下才能使用。从百度百科上可以爬取到很多同义词,以及业务运营数据库和企业现有词库积累都可以找到同义词,有各种各样的方法去构建同义词库。
那么如何挖掘上位词?
举例理解上位词,比如商品类目就是具体商品的上位词,矿泉水的上位词就是饮用水。词库的构建是做搜索必要的工作,但是在构建词库的过程中,不一定是手工的过程,完全可以用其他的自动化方法甚至模型去筛选词库,最后再做一些人工纠正。
2.3 商品知识图谱构建
构建知识图谱的方式有很多种,这里仅仅介绍根据不同实体来构建知识图谱。
比如按照三种实体类型来构建知识图谱,像上图最右侧的示意图,苹果有很多种型号,如果用户搜索苹果,用户有可能想买 iPhone 11、iPhone X 或者还是没出来的 iPhone 12,可以通过先验知识,把知识图谱构建出来,最后排序时可以把这些知识融入进去,比如用户都更加倾向于去买 iPhone X,后面排序的时候 iPhone X 就会更靠前一些。对于类目来说,搜索苹果有可能是一个手机,也有可能是水果,那到底是想买手机还是想吃水果,是有一个概率的,不同用户有不同的倾向性,但是目前我们构建的图谱还不能做到特别个性化,它只是一个宏观的统计,搜苹果时有 80%的用户其实是要买苹果手机的,有 20%的用户要买水果,这样就给了我们一种排序的参考。知识图谱其实是做了一个非个性化全局的知识构建,通过商品库去分析静态概率,最后根据用户点击行为会做一些动态调整,调整完的知识图谱再用在后面的排序上。
3、意图识别
将用户搜索词做了预处理之后,基于分词结果识别搜索词对应的实体类型,可以知道用户搜一个商品的时候,搜的是什么样的实体,是一个品牌,还是一个商品名称,还可以通过图谱去猜测用户的搜索意图,如果他只输一个苹果,能猜出来很大概率上可能要买手机,也可以把其他实体类型也猜出来,猜完了以后,还是有一部分猜不出来,那猜不出来的这部分怎么办呢,就要用意图识别。
那么如何做意图识别?
使用用户导入的物料库自动的去训练意图模型,意图识别就是去做类目预测,甚至去做一些字面没有表达出来的其他实体类型的预测。在初始的物料库里面,商品的各种属性就是一些天然的标注数据,使用这些标注数据去训练一个初始的意图模型,来预测隐含的实体类型,当这个初始模型训练完成之后,再用搜索日志去动态调整这个意图模型。
做完预处理、分词、实体识别、基于知识图谱的预测和意图识别,能做到什么效果呢?能做到搜”手机”,根据这个用户的信息,就可以知道手机是一个商品名字,还可以猜出来具体商品,但是猜的可能不一定那么准,这个用户可能有 80%的概率要买苹果手机,而且他买的这个苹果手机可能是 iPhone 11,还可能猜出来要买的颜色是红色的。这样在用户输入一个词的时候,就能预测出他可能要搜的所有的信息,当然这个预测有时准有时不准,但后面会调整,这样的话,就可以拿着这些信息去做一些召回。
4、粗排
做完前面的工作就开始做召回,从用户搜索的一个词通过一系列流程,通过知识图谱 ( 其实知识图谱放的是一些比较头部的实体,但是长尾的实体词还是需要意图识别的方法来预测 ) 预测出了各种信息,拿着这些信息去构建召回的条件,用这个召回的条件去召回出来完整的结果集合,这个时候召回的工作就完成了。
召回的工作完成之后,接下来就是粗排,可以使用简单的模型来粗排,这个模型里面的特征可以用相关性 ( 搜索和推荐不同,搜索一开始就会有相关性,但推荐就不会有相关性,推荐不会先输入一些搜索词 )、时间、热度、销量、好评数和收藏数等等特征,训练出简单的模型,做一些粗排的排序,进行截断,进入下一个环节,想要更简单的话,可以找出核心的特征,做加权平均也可以。粗排还不能达到个性化的效果,当然也可以把粗排做得更个性化,可以根据不同搜索的用户做个性化的粗排模型。
5、精排
得到粗排结果以后,接下来就是精排,对于搜索来讲,目前来讲主要的优化目标是 CTR,用的主要是 CTR 预估方法,CTR 预估有很多不同的方法,比如传统的特征工程方法、深度学习方法等。
特征工程方法主要是利用不同种类的多种特征,构建机器学习排序模型,上面列了几组特征,有搜索词特征、相关性特征、用户特征、商品特征和行为特征等。
深度学习方法也是常用的 CTR 预估方法,有很多深度学习模型可以用于搜索场景的排序,比如 DeepFM、Wide&Deep 等。
牛批