策略产品经理二三事:搜索系统介绍

搜索系统是一个非常大的范畴,从搜索范围的角度,可以分为搜索有专门的搜索引擎,也有产品的垂直搜索。从内容形式的角度,可以分为文本搜索、图片搜索、视频搜索等。搜索引擎我们不做介绍,这是非常专业和技术驱动的系统,产品经理能做的事情有限,主要是修修补补。而垂直搜索中,策略产品经理有比较大的发挥空间,甚至有机会从零到一构建。

策略产品经理二三事:搜索系统介绍

公众号的篇幅注定说不了太多,毕竟搜索系统我自己看过一本砖头厚的书。但是为了方便给不了解的读者介绍,本篇先讲一下搜索引擎的基本原理,内容主要节选自我自己写的《产品逻辑之美》,下一篇讲搜索引擎的升级迭代思路,是一些新内容。

一、存储逻辑

对于搜索系统,有一个常见的误解,即搜索系统就是拿用户输入的搜索词进行全站内容的文本精确匹配,找到包含这些文本的内容。实际上,在大规模的数据查询中,这样的方式是无法实现的。

在搜索系统中,搜索引擎用的是词库和倒序索引的方式,存储需要被搜索的文档内容。词库和文档的结构大致如下图所示,词库和文档之间就是用倒序索引关联的。

策略产品经理二三事:搜索系统介绍

1.1 词库

词库存储搜索系统中可能被查询的词,可以被理解为一个大词典,但并不是任何一个句子或者短语都会被词典收录。常见的句子和短语都是由一些基本的词构成的,而这些基本的词都能在词典中找到。为了尽可能满足用户的查询需求,搜索词库就需要尽可能收录在用户查询中可能出现的词,以满足目标用户的需求。如下图所示,右边的这五个文档,都有一些可能被用户搜索的关键词包含在词库里。

不同产品的词库可能是不同的,无法对应到词库中词的搜索行为就无法查询相应的结果。每个搜索系统都会根据目标用户的不同,有对应的一套词库。就像字典一样,《冶金专业词典》和《生物学大辞典》收录的词条是不同的。同样,为了满足不同目标用户的需求,知乎的词库和淘宝的词库也不同,知乎有大量知识概念的词,淘宝可能没有,而淘宝上大量商品类的词,知乎可能也是缺乏的。搜索质量的优化很多都集中在词和词库的优化上。

1.2 倒序索引

前面说到,搜索系统不可能拿用户输入的搜索词去匹配数据库的全部文本。那么有没有一种方法,可以不查找全部文档就找到用户查询的内容呢?其实我们在书店选书的时候,就用的是类似方法。虽然我们不会在书店一本一本看完全部书籍再决定是否购买,但是通过书名、作者、目录、领域分类等关键信息,就能够基本了解一本书是不是我们想买的书。

系统不可能将查询条件和全部文档做文本匹配,但是可以在建立倒序索引的前提下快速查找内容。倒序索引是一个专业词汇,在技术实现上复杂而精妙,在概念上却简单易懂。正序索引是以文档为主体查找关键词,而倒序索引是以关键词为主体查找文档。

策略产品经理二三事:搜索系统介绍

搜索系统在用户查询之前就已经提前提取好了全部文档内容的关键词,并把关键词和内容的关系存储起来。这样就可以把用户查找的内容分解为词库中的词,并通过已经存储的词和文档的对应关系,快速找到对应的内容。在下图所示的例子中,搜索系统简单地存储了四个词和五个文档索引,这些词和文档可以建立对应的倒序索引,下图所示。每当查询某个词的时候,就可以通过倒序索引快速找到对应的文档。

策略产品经理二三事:搜索系统介绍

通过倒序索引,搜索系统存储了系统词库和文档的对应关系,从而可以在词库和文档之间建立关联。只有在这一存储结构的基础上,搜索系统才能做到对文档内容的快速查询。

二、召回逻辑

2.1 分词

搜索的词库是有限的,但用户的输入是没有限制的。要将无限的搜索请求对应到有限的词库,就需要对用户输入的信息进行拆分和解读。

以新闻搜索系统为例。当用户输入的搜索词为“中国的转基因食物”,而词库中其实没有这个词时,如果没有分词功能,那么,即使系统里确实有对应的内容,这个搜索也会立即结束。分词就是在词库无法精确匹配用户内容的情况下,对用户的输入进行进一步的拆分,下图显示了分词结果。

策略产品经理二三事:搜索系统介绍

2.2 分词算法

要把用户输入的文本切分成单独的词,就需要使用分词器。相对英文,中文分词更加困难,英文空格是天然的分隔符,而中文文本中的词却没有分隔符。目前中文分词问题已经有很多成熟的解决方法,同时关于中文分词的算法仍在持续发展。这里简单介绍两个基本的分词方法:机械分词法和统计语言模型。

机械分词法是基于字符串匹配的分词方法,系统把需要分词的句子从左到右扫描一遍,遇到词库里有的词就进行分词,遇到词库里没有的内容就分割成单字词,扫描完成后一个句子的分词就完成了。比如“中国的转基因食物”,因为词库中有“中国”“转基因”“食物”,则可以分解为“中国”“的”“转基因”“食物”。机械分词法基本可以解决大部分中文分词问题,但是仍然有一些遗留问题无法解决,比如“清华大学生”,正确的分词方法是“清华”“大学生”,而机械分词法给出的分词结果则是“清华大学”“生”。

为了解决机械分词法存在的问题,自然语言处理专家给出了基于语料库的统计语言模型的分词方法。对于一个搜索文本,可能有多种分词可能,不同的分词结果都可能出现在语料库中。统计语言模型基于语料库,找到出现概率最大的分词方法并采用。因为“清华”“大学生”比“清华大学”“生”出现概率更高,所以会被选为最终的分词结果。

上面提到的两种分词方法都是基于词库的分词方法,词库可以是行业统一的语料库,也可以是平台内已有的数据,例如电商的品牌、规格等。一般而言,采用通用的统计语言模型,搜索系统都可以取得不错的效果。

2.3 召回

系统通过倒序索引找到内容后,还需要对内容进行筛选。好的搜索引擎需要尽可能减少无关结果,也就是需要判断哪些内容应该召回,哪些内容不应该召回。

用常见的新闻搜索举个例子。一个新闻文档中存储了大量的信息,新闻的标题、导语是强相关的内容,新闻的全文是弱相关的内容,新闻的评论则可能是完全不相关的内容。在新闻搜索中,我们可以对内容做出一些基本判断。如果用户输入文本和标题或导语匹配,则可以完全召回;如果和新闻正文匹配,则可以考虑按一定条件召回,比如相关的词需要出现一定次数或者新闻阅读量达到一定值;如果和评论词匹配,则不召回。

需要强调的是,什么样的内容应该召回,什么样的内容不应该召回,不仅需要经过比较完整的人工评估,也需要进行线上测试。根据人工经验仅能给定初步策略和规则,且要在线上持续迭代。

三、排序逻辑

随着内容在搜索结果展示页的展示位置越来越靠后,用户看到的概率就会越来越低。好的搜索系统不仅把相关的内容展示出来,而且要把相关性高的内容尽可能展示在搜索结果的前面。

排序是一个系统工程,需要考虑多种因素,不同的排序方法对结果影响非常大。基本排序方法只考虑文本权重,也是最初搜索引擎的做法。但是这样的搜索方式在站内搜索中的效果往往比较差,因为站内搜索往往针对的是单一品类,内容的质量不仅取决于文本的相关度,还取决于这个内容的业务表现,比如对于商品而言,商品的用户评价和销量应该对商品在搜索结果的排序中起到决定作用。针对这种情况,还应该考虑基于业务规则的权重,以及用户行为权重。还可以继续深入地考虑个性化搜索,将用户的偏好作为排序的依据。搜索算法目前还在不断地发展,但这些加权方法一直是搜索排序的基础。

3.1 文本权重

文本权重基于TF-IDF(Term Frequency-Inverse Document Frequency),即衡量词与文档的相关性,其中,TF表示词频(Term Frequency),即一个词出现在文档中的频率,IDF表示逆文档频率(Inverse Document Frequency),即一个词出现在其他文档中的频率。

一个词的TF值越大,代表这个词和文档的相关性越高,如果在某条新闻报道中有1000个词,“中国”“转基因”“食物”分别出现了4次、10次、15次,那么对应的TF值分别是0.004,0.010,0.015。

IDF衡量词出现在其他文档中的频率,计算相对复杂一些。如果一个关键词x在D_x个新闻中出现过,全站总共有D个新闻。那么IDF的计算公式为IDF=lg⁡(D/D_x )。举个例子,全站共有1000万条新闻报道,如果“转基因”在10000条新闻报道里出现,则“转基因”的IDF值就是IDF=lg⁡(10,000,000/10,000)=3,如果出现了5000次,那么IDF=lg⁡(10,000,000/5,000)=3.3。

TF-IDF就是TF和IDF的乘积。如果用户输入的查询文本只有一个词,那么这个词的TF-IDF就是文本权重。如果有多个词。那么文本权重就可以表示为:

策略产品经理二三事:搜索系统介绍

3.2 业务权重

除了文本权重,影响搜索系统中的排序结果的还有业务权重。一条新闻报道越及时,权重就应该越大;一条新闻报道的来源越权威,权重也应该越大;评论越多的新闻,权重应该越大。对于电商而言,用户评分、商品销量、商品是否应季都是可以影响搜索排序的业务指标。很多时候,业务权重比文本权重更重要。

对于业务权重,要进行归一化处理。比如衡量一条新闻报道的影响力,需要综合考虑阅读量、回复量、收藏量这三个因素,直接将它们相加显然不可行,因为阅读量可能是回复量的几十倍,而回复量也可能是收藏量的好几倍。要让不同因素在同一个变化范围内,就得进行归一化处理。

最简单的归一化处理方法就是直接除以数据中的最大值,让所有结果都在0~1之间,并保留原有性质。计算公式为。

策略产品经理二三事:搜索系统介绍

比如四篇文章的阅读量分别是10000、9000、800和500,归一化处理后为1、0.9、0.08和0.05。

这一方法显然有问题,受极值的影响比较大。仍然以阅读量为例,如果出现了一篇非常好的文章,五篇文章的阅读量分别是1000000、10000、9000、800和500,归一化处理后为1、0.01、0.009、0.0008和0.0005。显然,后面的几个结果区分度很小。取对数除以最大值是一种比较好的归一化方法,一方面保留了数量级的差异,另一方面防止了极值产生的波动。计算公式为

策略产品经理二三事:搜索系统介绍

五篇文章可以归一化为1、0.80、0.79、0.58和0.54。而这个数值作为一个加权因子参与计算就会更合理。

3.3 用户行为权重

一个好的系统是怎样的?比如人体体温之所以能达到动态平衡,就是因为有反馈机制,根据环境温度的变化而调节体温。搜索系统也一样,规则之下产生的排序结果未必是最好的,需要依赖用户行为数据进行调整。

对于一个搜索词下的不同内容,用户点击率高的内容应该在后续的排序中获得更高的权重,即搜索系统的反馈机制,这会使搜索系统变得越来越好用。

用户行为可能会有很多种,不仅局限于用户的浏览和点击,也可能是点击之后的行为数据,比如:阅读时长、收藏数、回复数、点击之后的购买、加入购物车量。总之,在这样的反馈机制中,用户正面反馈越多的搜索结果权重会越高,从而让搜索系统持续改善。

3.4 个性化因子

不同用户搜索同一个搜索词,可以展示不同的内容,前提是在搜索排序中包含了个性化因子。

个性化因子分为两种:基本用户信息和用户偏好信息。基本用户信息包括地理位置、手机型号、网络环境、版本等;用户偏好信息包括用户的兴趣爱好、消费能力等。但是在数据规模和用户规模比较小的产品中,并不建议贸然加入个性化因子。

3.5 汇总排序

只有综合衡量各个排序因子,最终的排序依据才能公正。线性模型融合可以把上述四种排序依据综合考虑进来,某个内容在某个搜索词下得分的计算方法如下:

策略产品经理二三事:搜索系统介绍

其中 N_x 代表文本类型的权重,M_x代表搜索词和此内容对应类型的文本之间的相关度。在商品搜索中,品牌、品类、短标题、商品描述就是文本类型。搜索词在不同文本类型中的权重不同,比如给品牌和品类最高的权重,短标题次之,商品描述的权重最小。K_y代表业务类型的权重,L_y为具体业务项的数值。比如销量、用户评分、用户搜索量等就是业务类型,可根据实际业务情况来定义。

除了基于规则的汇总方法,基于机器学习的算法也可以作为汇总排序的方法。将各种排序因子作为模型的特征,将用户行为数据作为模型训练的目标。相对于排序因子融合的方法,找到符合业务需求的排序因子更重要。

四、小结

搜索算法还在持续升级,目前的算法在框架基本一致的基础上,已经大量应用了机器学习的算法。但对于策略产品经理而言,这部分工作很难接入。不过好在搜索都有比较成熟的开源方案,对于垂直搜索而言,主要的迭代方向是给搜索引擎加上业务逻辑,最终体验在排序公式中,则是增加因子或者调整权重。

下一期会结合我自己的一些项目经验,介绍一下搜索策略的迭代思路。

本文由 新媒体之家 作者: 产品逻辑之美 发表,其版权均为原作者所有,文章内容系作者个人观点,不代表 新媒体之家 对观点赞同或支持,未经许可,请勿转载,题图来自Unsplash,基于CC0协议。
0

发表评论