阅读新闻

电商搜索系统精讲系列:业务分析及召回模型

发布日期:2021-09-28 11:48   来源:未知   阅读:

  src=前几天编写的那篇《一个产品经理五味杂陈的十年》的文章意外收获了很大反响,说句实在话没想过这个,实属意外,因为写文章的初衷也只是想花点时间对过去十几年的工作做个总结和复盘,加我微信的人也多了很多,微信社群也超员满员,不过没关系,只要大家还在,微信群就一定会有,不要着急,后续我会通过公众号把最新的微信社群二维码推送给大家(不要着急);

  通过在和小伙伴微信聊天的时候,发现了一些问题,比如产品经理容易受制于终端、行业以及业务经验的限制,比如说下面的三种情况:

  怎么突破?这个问题我们暂且不讨论细节,最根本的突破就是要找到适合自己的方法论,关于如何找到自己适合的方法论,我也在整理梳理,后续会推送给大家;

  我们言归正传,回到今天的主题,就是搜索。我们作为产品经理,在之前的文章中也提到过,任何产品原型的设计都是能在日常的生活中找到场景模型,我们需要做的就是将这个场景模型映射到线上,就能解决线上的问题,关键是怎么映射,我们依然采用之前文章编写的思路,来推导电商搜索系统该怎么设计,首先我们先了解下搜索的业务(离开业务的产品都是牛氓产品!!!!)

  好,回答这个问题之前依然再问大家一个问题?那就是你去超市购物,你的第一件事是做什么,毋庸置疑,一定也是去找商品,比如你要去购买白酒,你是不是直接从进入超市的那一刻开始径直走向超市白酒专区去寻找你想购买的白酒,然后呢,你通过不同的白酒品牌、度数、生产地、包装等因素去选择你要的商品,这个就是现实生活中寻找商品的场景模型,我们下文把寻找替换成搜索,显得更专业一点,那就是搜索商品;

  搜索商品的目的当然是为了能够快速在超市海量的商品中筛选出自己想要的商品,一来满足用户的需求,二来通过制定一些搜索的规则提高用户搜索商品的效率,降低用户的搜索成本,这个就是为什么要去做搜索的目的。

  那么在互联网的世界里,既没有超市这个概念也没有实物商品的概念,一切都是数据,无论你是做什么都是通过数据的方式来实现,这个时候怎么把搜索(寻找)商品的场景模型搬迁到互联网的世界里,我们一步一步看;

  有了线下业务的场景,那么第二步就是怎么映射线上场景,首先要去做的就是线上业务场景建模,我们来分析下上文提到的线下搜索商品的过程:

  我们人类有眼睛有鼻子有手有脚,能通过我们的视觉、听觉等各种感官系统去感知外面的世界,但是计算机没有眼睛没有鼻子也没有视觉听觉,还是那句话,计算机只认识数据这个祖宗,所以用户用眼睛去查阅白酒,怎么做线上场景的映射和建模,这个时候就需要做搜索,超市是个巨大的实物类空间载体,空间比较大,用户可以在这个空间里慢慢看慢慢挑,但是在移动互联网高度发达的今天,手机屏幕大小有限,我们是不可能把这些白酒或者用户需要购买的所有商品都一次性的展示在用户面前,这个时候怎么办—–需要借助于搜索这个功能来帮助用户触达自己的目标商品;

  线上业务建模是不是就结束了,当然不是,人类可以用眼睛、用视觉、用听觉以及自己的逻辑判断和思考能力去搜索商品,这个过程本身就是各种复杂的规则在你的大脑里不停的运算和处理,比如我需要个 55 度的白酒,那么这个 55 度的白酒我是送人还是自己喝呢?如果送人我买什么包装的合适呢?55 度的白酒价格我能承受多少呢?我需要购买几瓶白酒呢?我买了十箱白酒回去我怎么运回家呢?如果白酒有破损我该怎么退换呢?

  这些问题的性质是什么,说白了就是不停的问自己不停的让自己的大脑在思考,给出答案,最终让自己决策到底要购买什么白酒买多少;

  那么同样的道理,计算机也需要有一套这种认知系统,计算机虽没有像人类那样拥有聪明智慧的大脑,好就好在它能被我们人类主宰,但是人类需要给他一系列的运算规则才能主宰它,告诉计算机怎么想,怎么决策,怎么查询,怎么筛选,最后把运算结果给到用户,那么就能达到我们人类的目标;

  自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,自然语言处理并不是一般地研究自然语言,而在于研究能有效地实现自然语言通信的计算机系统,特别是其中的软件系统,所以呢也算是计算机科学的一部分,反正这个内容我在大学没学过;

  src=问下自己:为什么在搜索结果的推荐内容里没有食物类的苹果,而全都是手机类的苹果?

  那么计算机凭什么理解了用户的意图?计算机是怎么给出这个搜索结论的?这个里面就要引入另外两个概念—— - 分析器和召回;

  所谓分析器指的是电商平台在接收到用户搜索的关键词之后,计算机需要通过某种策略和方式去理解用户的意图,这种方式和策略的呈现就是分析器,说白了分析器是关键词的大脑,没有分析器,用户搜索就是白搭,因为计算机并不明白你要搜索什么;

  再来看召回:指的是通过分析器既定的规则查询到结果的整个过程统称为召回,比如用户在淘宝 APP 搜索框中输入 2021 年夏季新款连衣裙 几个字,点击搜索,查询到所有连衣裙完整的过程就是召回;

  好,那么在解释上面的截图当中为什么搜索的结果里面只有苹果手机而没有食物类苹果这个问题之前,我们先来剖析分析器:

  适合一些需要精确匹配的场景。如标签、关键词等,不拆分关键词(下文统一定义为不分词,拆分关键词就是分词)的字符串或数值内容

  举例:用户在淘宝 APP 搜索框里搜索 连衣裙 ,查询结果的商品里面必须要有 连衣裙 完整的三个字,才会被召回展示在界面上,如果输入 连衣 、 裙 ,则不会被召回,这里类似于常见的精确查询;

  举例:用户在淘宝 APP 搜索框里搜索 茉莉花茶 ,查询结果的商品里面只要包含 茉莉 、 茉莉花 、 茶 、 花茶 的信息都会被召回;

  计算机针对某个特定的行业的语义理解,来进行词条切割,对切割后的关键词进行查询

  用户在淘宝 APP 搜索框里搜索 篮球 NIKE 运动鞋 ,查询结果的商品里面只要包含 篮球 、NIKE、NIKE 运动 、 运动 、 运动鞋 都会被召回;

  按照单字 / 单词分词,适合非语义的中文搜索场景,如小说作者名称、店铺名

  用户在淘宝 APP 搜索框里搜索 运动鞋 ,查询结果的商品里面只要包含 运动 、 鞋 、 运动鞋 、 运鞋 、 动鞋 都会被召回;

  用户在淘宝 APP 中搜索 篮球鞋 ,查询结果的商品里面只要包含篮球鞋、篮球、鞋、lqx、qx、lx 等都会被召回;

  好了,说到此,常见的电商分析器模型基本就这几种,当然了具体业务还要具体对待,正所谓产品领域没有绝对的对与错,只有适用和不适用,有些公司还有自定义分析器、数值分析器、地理位置分析器、物流专用分析器、医疗专用分析器等等,具体业务具体对待;

  我们来对分析器做个总结,电商平台拿到用户输入的关键词之后,通过一定的规则召回用户的目标商品,这个规则就是分析器规则;

  那么是不是商品被召回只有这一个规则呢?显然不是,我们还要看召回的条件,参与召回的关键词,因为对于搜索引擎系统而言关键词是最基础的但也是最核心的功能,对于用户而言,输入的关键词也是五花八门,比如输错文字、输入拼音、输入简写、输入同义词等等,这些因素都可能会影响到商品的召回率,所以我们需要一个模块能够对用户输入的关键字进行逻辑处理和过滤,既能通过转化非标准的搜索关键词提升搜索效率,也能提升搜索商品的召回率,提升用户的搜索体验,所以接下了我们接着聊(不急):

  src=用户输入关键词 简议床 ,为什么会召回了 简易床 的相关商品??

  我们来反推下,用户在正常的文本输入的时候,完全是存在输错汉字的可能的,就像上面的截图一样,把 易 输错成 议 了,所以,如果按照上述的分析器规则,那么某些符合用户意图的商品就不会被召回,就会出现查询无此商品的结果,不能完全满足用户的需求,所以这个时候怎么办?

  src=所谓 拼写纠错 ,就是在用户输入的关键词不正确的时候,错误的输入可能导致查询结果不符合预期或者根本就不会有查询结果,因此需要对用户的输入进行拼写检查,对查询词中的错误进行纠正,给出正确的查询词。并根据纠错的可信度高低,决定当前查询是否用纠错后的词进行查询;

  那现在又一个问题来了,你输入了 简议床 ,计算机怎么知道有错别字?这个又涉及到另外一个概念—–词典;

  大家小时候都用过新华字典,里面罗列了中华文明的所有汉字,你写的汉字对与错,也都是以新华字典为参照物来比对,同样的道理,以此类推,电商平台也有词典,这个词典里面涵盖了很多的名次、动词、形容词、状态词、还有商品、评价等信息,当然这些信息也都是源自于业务系统,所谓的业务系统就是用户的行为数据、商品数据、评价数据、分享数据等等,计算机通过大数据算法进行词典挖掘,形成动态的词典库,更好的赋能于电商搜索业务,关于词典业务本篇不做过多介绍,www.68888kj.com有兴趣可私下交流;

  好了,正是因为词典库的存在,当用户输入 简议床 的时候,在电商平台自然会分析比对这个 简议床 三个汉字,包括对中文汉字的理解、词典的匹配、拼音的匹配、简拼的匹配,最后决策出这个关键词是否存在可疑的错别字,如果存在则纠正错别字后按照正确的关键词进行搜索,召回商品;

  src=用户输入了 苹果 ,搜索结果里面为什么会召回了 iphone12 Pro Max 的商品?(假设我们的商品信息里面没有苹果两个汉字)

  src=在实际搜索场景中,会经常出现包含同义词的表达。例如,我们希望用户在搜索苹果的同时,也能找出和 iphone 有关的信息;

  在现实生活中,相同语义的表述词汇往往有很多,而用户在输入关键字查询的时候很难通过一条关键词中将它们全部体现,所以识别和提供同义词检索显然可以获得更高的商品召回率。

  同义词功能主要是对查询的关键词进行同义扩展,扩大召回和查询关键词同义的词组。

  举例: 包菜 存在一个同义词是 圆白菜 ,在没有使用同义词功能时,搜索 包菜 时是无法召回商品中仅包含 圆白菜 的商品,如果使用同义词功能,则能召回,就像上文中的截图,如果同义词功能被使用了,那么输入苹果两个汉字就能召回 iphone 的商品;

  src=所谓停止词模型一般应用在查询关键词里包含语气助词、标点符号等特殊搜索场景;

  举例:用户 A 在淘宝 APP 搜素框中输入 你好!今晚一起吃饭好吗?,那么停止词模型则过滤掉感叹号、问好还有个语气助词 吗 ,直接参与召回的关键词变为 你好今晚一起吃饭好吗 ,符合条件的商品则被召回;

  顾名思义,用户在电商平台输入关键词的时候难免会因误操作输入如空格、标点等等特殊词,如果这些词也要参与商品的召回的话,势必会对搜索引擎系统性能和资源的浪费(原因呢,你们自己思考),另外一个也是能将输入的关键词标准化,有利于分析器模型的抽象;

  我刚刚讲了停止词模型一般应用在查询关键词里包含语气助词、标点符号等特殊搜索场景,那么这些语气助词和标点符号从哪来?

  顾名思义,依然是词典库中来,当然了,话又说回来,词典库也不是万能的,也都是靠计算机采集和人工录入,那么当用户输入了一个特别另类的字符的时候,这个时候会参与召回么,答案是当然会,不过召回的结果一定会收到影响,所以计算机大数据系统要具备实时捕捉用户的各种行为数据,分析、加工后采集到词典库,当然也可进行人工干预的手段来避免另类字符参与召回,所以这个时候另外一个功能也就推导出来了——停止词人工干预词典库(包括上文提到的纠错模型、同义词模型都有人工干预的场景);

  当标点符号作为停止词被系统过滤掉之后,不参与商品的召回,那么现在有一个特殊场景,先看下图这个一旦 @网:

  src=如果我们的商品库中有一个商品品牌(一旦 @网),这个商品品牌名称中包含标点符号@,这个时候,当用户在搜索框中输入商品品牌一旦 @网,可能就会导致商品无法被召回,这个时候该怎么处理?

  实体识别,全称命名实体识别(Named Entity Recognition,简称 NER),指对关键词中的具有特定意义的语义实体进行识别。

  实体识别模型根据识别的结果,依据实体类型的权重对关键词进行改写或纠正,使得召回的商品符合查询的意图,目前该模型一般应用在电商领域的搜索业务,其他行业暂时未得到很好的普及;

  src=以上所有内容是针对用户在电商平台输入的关键词进行搜索,召回商品的模型和决策规则模型,当然规则的细节远不止于上面讲的这些,因本篇文章重点分析搜索业务,具体产品的设计放到下篇再续;

  现在规则有了,当用户输入关键词,搜索引擎系统根据决策规则去召回商品,召回的商品返回给前台后,这个时候商品的展示怎么展示、排序怎么排序?