数据处理之搜索如何命中?

2020-01-12 20:40:43 来源:网络整理 作者:管理员

原标题:数据处理之搜索如何命中?

本文主要讲解了用户在搜索的时候,是怎么命中的,enjoy~

数据处理之搜索如何命中?

通过本文你可以了解到:

  1. 了解搜索过程的基本原理:如何根据关键字匹配内容,如何返回搜索结果,如何将结果展示给用户;
  2. 在搜索场景下更合理的划定搜索范围(输入内容命中哪些字段),提高用户搜索效率,提高数据搜索基线;
  3. 提高日常工作中搜索的效率,更快更准地搜到自己想要的东西。

用户搜索的过程:用户输入关键词,系统根据用户输入的内容筛选出系统认为用户感兴趣的信息,然后按照系统所设定的规则进行排序。整个过程可拆解为三步:分词、筛选、排序。

在了解分词前先看下搜索的存储原理:在系统词库和索引库之间建立关联,通过用户输入的关键词去匹配词库,然后拉取索引库内容展示给用户。

以在美食网站搜索“北京最大的火锅店”为例,索引库中内容为系统内所有店铺,每个店铺包含的字段有店名、位置、月销量、评论量、评分等等;词库中内容为系统内的词条,只要用户输入的内容能够匹配到词条,就可以快速找到词条对应的索引内容,无法匹配到词条时就没有返回结果。每个系统都有自己的词库,搜索的很多优化都是集中在词库的优化上。

数据处理之搜索如何命中?

一、分词

分词是对用户输入的信息进行解读,是自然语言处理的重要步骤。同机器学习原理一样,分词将非结构化的数据转化为结构化数据,结构化的数据就可以转化为数学问题了,解决数学问题正是计算机之所长。

1.1 分词的原因

搜索系统的词库无论如何优化、完善都是有限的,但用户的输入是没有限制的。那么如何把用户无限制的输入对应到有限的词库并返回结果呢?

这就需要引入一个新的概念——分词。简单说就是:系统在对用户输入的内容无法精确匹配时,会将内容进行切分,使切分后的词能够匹配到系统的词库。仍以上图为例,如果用户输入“北京最大的火锅店”,系统中并没有这个词,精确匹配的情况下没有任何结果,此时会将输入内容进行切分,于是

“北京最大的火锅店”——> “北京”、“最大”、“的”、“火锅店”。

拆解后每个词就匹配到了相应的内容,排序后就会返回结果。并不是所有的词都会返回有价值的结果,比如案例中的“的”,几乎所有的信息里面都会含有这个字,因此在系统分词时会被直接忽略掉。

1.2 分词的种类、区别

分词有两种,中文分词和英文分词,二者有着本质的区别。

区别1:分词方式不同,中文分词更难更复杂

英文有天然的空格作为分隔符,但中文没有,如何将一段中文进行拆分是一个难点,切分时断点不同,造成的结果也不同(即歧义识别),如“我们三人一组”就可以有两种分词方式:“我们三人/一组”和“我们/三人一组”。还有一个难点是新词识别,即识别未在词典中收录的词。

区别2:英文单词有多种形态

英文单词存在着丰富的变形和变换,如复数形式,过去式、正在进行式等,为了应对这些复杂的变换,在处理英文时会进行词形还原和词干提取。

词形还原:does、did、done、doing会通过词形还原转化为do;

词干提取:cities、children、trees会通过词干提取转化为city、child、tree。

区别3:中文分词需要考虑分词粒度的问题

分词粒度不同,返回的结果也不同,如“北京科学技术研究院”就有多种分法:“北京科学技术研究院”、“北京/科学技术/研究院”、“北京/科学/技术/研究院”。粒度越大,表达的意思就越准确,但是返回的结果也就越少,因此在分词是要根据不同的场景和要求选择不同的分词粒度。

1.3 分词的方法

① 基于词典分词

基于词典匹配是最早的分词方法,比较典型的有:正向最大匹配法、逆向最大匹配法、双向最大匹配法。

(1)正向最大匹配法

step1:匹配时从前往后取词,取前m个字(m为词典里最长的词的字数)开始扫描;

step2:若这m个词扫描有结果,则匹配成功,将m个词切分出来,语句中剩下的词继续进行切分;

step3:若这m个词扫描无结果,则取前m-1个字继续扫描,每次减一个字,直到词典命中或剩下1个字;

step4:重复以上步骤,直至语句全部匹配完成。

数据处理之搜索如何命中?

(2)逆向最大匹配法

匹配时从后往前取词,其他逻辑和正向相同。

数据处理之搜索如何命中?

(3)双向最大匹配法

由于正向最大匹配法和逆向最大匹配法都有其局限性,因此产生了双向最大匹配法。即按照正向和逆向分别进行切分,然后进行对比,选取其中一种分词结果输出。

对比原则:①如果正反向分词结果词数不同,则取分词数量少的那个;② 如果词数相同且结果也相同,返回任意一个,如果词数相同但结果不同,取单字数量较少的那个(单字越少越准确)。

上面提到的几种切分方法是从不同的角度来处理歧义问题,每种方法只能解决有限类别的歧义问题。随着词典的增大,词与词之间的交叉更加严重,歧义带来的负面影响也更加严重。同时,上面提到的切分方法对于新词的切分是完全无能为力的。

② 基于统计分词

基于统计分词有两类,第一类是统计取词法(或无词典分词法),把每个词看做是由字组成的,如果相连的字在不同文本中出现的次数越多,就证明这段相连的字很有可能就是一个词。

举例:比如词a出现的概率为P(a),词b出现的概率为P(b),a+b这个词组出现的概率为P(a+b),如果P(a+b)>P(a)*P(b),则能证明a+b不是一个随机出现的组合,要么是一个新词,要么是个词组或者短语。

但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,成本大。在实际应用中通常结合词典分词的方法使用,既发挥了词典分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。

另一类是基于统计机器学习的方法,在给定大量已经分词的文本的前提下,利用统计机器学习、模型学习词语切分的规律(称为训练),从而实现对未知文本的切分。这种方法的缺点就是需要有大量预先分好词的语料作支撑,而且训练的成本也很高。比较经典的是N元文法模型(N-gram)。

N元模型(N-gram)切词

基于N元模型的切词策略是:一段文本存在多种可能的切分结果(切分路径),将训练好的N-gram模型进行路径计算得到最优切分路径并返回结果。

举例:对“他说的确实在理”进行切词。

在N-gram模型的算法中,每个路径上的边都是一个N-gram的概率,于是得到如下概率路径有向图:

数据处理之搜索如何命中?

可能的切分路径有:他说/的确/实在/理 、他说的/确实/在理、 他说的/确/实在/理、 他/说/的确/实在/理、 他/说的/确/实在/理……

假设随机变量S为一个汉字序列,W是S上所有可能的切分路径(如上图所有从头至尾的不同路径)。对于分词,实际上就是求解使条件概率P(W∣S)最大的切分路径W*,P(W∣S)即为每条路径的衡量标准。

至此,分词任务就转变成了一个数学问题。

③ 基于序列标注分词

基于序列标注分词是把分词过程视为字在字串中的标注问题(例如将字标注为“首字中间字尾字”或者其他标注方式),当这些标注完成的时候切词也就自然完成了。这种策略能够平衡地看待字典词和新词(未收录到词典的词)的识别问题,大大简化了使用门槛,并得到一个相当不错的切词结果。如条件随机场(CRF)、隐马尔科夫模型(HMM)、最大熵算法、神经网络分词模型等。

隐马尔科夫模型(HMM)切词

将文字序列按照词首、词中、词尾、单字词进行标注。

举例:研究生说的确实在理

数据处理之搜索如何命中?

当每个字的标注都得出的时候,切词也就顺理成章得完成了。

二、筛选

将用户输入的信息进行切分后,对引库中的内容进行匹配筛选。判定用户想要的结果是否被筛选出来,一般会从精确率(Precision)、召回率(Recall)和F1(F1-Measure)值三个维度进行衡量,这也是搜索优化中是关键性指标,涉及到人工打分和更高级的优化。

精确率:所有搜到的内容里面,相关的内容的比例。

召回率:所有应该搜到的内容里面,真正被搜出来的比例。

举例:假设此时有7个桔子和3个苹果放在一起,我想筛选出所有的桔子,系统最终筛选出了6个,其中有4个桔子。那么精确率P=4/6,召回率R=4/7。

F1值:精确值和召回率的调和均值, 也就是:

数据处理之搜索如何命中?

Q:为什么会有F1值的存在呢?有精确率和召回率不够吗?

A:答案是:不够!正常情况下我们是期望精确率和召回率越高越好,但这两者在某些情况下是相互矛盾的。仍以桔子苹果为例,如果系统只筛选出了1个桔子,那么精确率就是100%,召回率是1/7就会很低;如果系统一次筛选出了10个,那么召回率就是100%,精确率就只有70%。

除此之外,还有一个比较容易混淆的概念:准确率(Accuracy),即判断正确的数目与总数目的比值,其中判断正确的数目包含筛选出的符合要求的和未筛选出的不符合要求的。

仍以桔子苹果为例,准确率A=(4+1)/10=50%,即系统正确筛选出的水果(正确识别了4个桔子+正确识别了1个苹果)与总数的比值。

准确率一般不用于搜索召回的衡量,原因是若上例中苹果数量为100万个,桔子7个时,那么不管怎么筛选,准确率都是99.99%+,显然这是不符合要求的。

三、排序

排序影响着搜索的结果质量,越往前的结果越容易获得用户的点击。好的搜索不仅仅是把应该搜索的内容尽可能的搜索出来,同时还要考虑把最容易吸引用户的内容展示在前面,因此这里就涉及到两个因素:文本数据和业务数据。

3.1 文本数据

文本数据即文本的相关性分数乘以权重。关于如何计算文本的相关性,市面上已经有成熟的开源解决方案,如Lucene算法。然后根据文本类型给出相应的权重,比如系统中有标题、描述和正文三种文本,根据重要性分别赋予不同权重:标题权重为10,导语权重为5,正文权重为1。

3.2 业务数据

业务数据即数据的分数乘以权重。关于数据的分数是数据具体的值。然后根据业务类型给出相应的权重,比如系统中有评论量、分享数、阅读量三种数据,根据重要性分别赋予不同权重:评论数权重为10,分享数权重为20,阅读量权重为1。

举例:以基于Lucence的Solr系统为例,得分公式如下:

数据处理之搜索如何命中?

其中Nx为文本分数权重,Mx为文本数据相关性分数,Ky为数据分数权重,Ly为数据分数。

由此可以看出,对文本数据和业务数据赋予的权重直接影响最终的排序结果,如何赋值、赋予何值需要基于对业务的理解和认知,这也是一个搜索系统设计最核心的部分。

作者:墨白,公众号:UED_family

本文由 @墨白 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

显示全文
为您推荐
钱姓起源和来历:活了八百岁的彭祖竟然是钱氏祖先
钱姓起源和来历:活了八百岁的彭祖竟然是钱氏祖先

钱姓排于百家姓中的第二位,虽然起源和来历并不多,但是钱姓人却分布广泛,成为了中国姓氏中的第二大姓。钱姓的主要来源就是彭祖的儿子篯孚,彭祖的真名叫做篯铿,是因为被尧封于大彭而得姓-彭,而他的儿子篯孚因为掌管着钱财,任职钱府上士,所以便为“钱”姓,所以彭钱是一家。...

发布时间:2024-09-20 20:03:27

胡服最早由谁引入中原?赵武灵王为推行骑射改革服饰
胡服最早由谁引入中原?赵武灵王为推行骑射改革服饰

胡服最早是由春秋战国时的赵武灵王-赵雍引入中原的,因为当时赵国的地形和地理位置都非常不好,常年深受战争威胁,加上赵武灵王继位之后,时局不稳,周边国家都想要攻打赵国,所以赵武灵王便下令让全员都推行胡服,并且学习骑射,相较于宽大的汉服更加便于行动。...

发布时间:2024-09-20 19:05:44

赛艇运动起源于哪里?英国船工无聊时竞赛(造就贵族运动)
赛艇运动起源于哪里?英国船工无聊时竞赛(造就贵族运动)

赛艇运动起源于英国的泰晤士河上,当时还是17世纪,英国泰晤士河上的船工在工作之余经常会举办一些赛船,久而久之就形成了一种习俗,在1715年的时候,为了庆祝英王的卫冕,所以第一次正式举办了赛艇比赛,最终在1775年发展为一个正式的运动项目,并且成立了相应的运动俱乐部。...

发布时间:2024-09-20 18:04:28

为什么不能用宸字取名?哪些名字普通人扛不起
为什么不能用宸字取名?哪些名字普通人扛不起

人们之所以不愿意或者不敢以“宸”为名,主要是因为在古时候“宸”有着“深邃的房屋”的意思,也就是专指皇帝的居住场所,象征着无上的权力,所以“宸”字自然也就成为了禁忌,不过现代人大多是害怕这个字的气势,普通人的命格扛不住。...

发布时间:2024-09-20 17:00:53

商细蕊原型是谁?原来四位京剧名旦都是灵感来源
商细蕊原型是谁?原来四位京剧名旦都是灵感来源

商细蕊是电视剧《鬓边不是海棠红》中的京剧名旦,很多人都为他和海归商人程凤台的知己故事而动容,但遗憾的是在历史长河中并没有商细蕊真正的原型,只能说他可能是作者根据历史上著名的京剧名旦构建的一个角色,因为他和梅兰芳、程砚秋、尚小云以及徐碧云等四人的经历和性格都有着极为相似之处。...

发布时间:2024-09-20 16:05:01

历史上著名的美女有哪些:杨玉环,君王不早朝(绝世美女)
历史上著名的美女有哪些:杨玉环,君王不早朝(绝世美女)

在中华上下五千年的历史长河中,除了王朝更替的政治生活与文化生活,还有一些美貌的女子点缀着历史的绘卷,那么在悠悠岁月中有哪些著名的美女呢?下面小编就来为大家盘点一下吧!...

发布时间:2024-09-20 15:04:04

历史上妃嫔最少的皇帝:明孝宗朱佑樘,独爱张皇后(童年不幸)
历史上妃嫔最少的皇帝:明孝宗朱佑樘,独爱张皇后(童年不幸)

谈及古代帝王,最让人津津乐道的当属那后宫佳丽三千,不过也不是所有的帝王都有那么充实的后宫,比如历史上有一位皇帝就只有一位妻子,是不是让人有点不敢相信,下面小编就带大家一起了解下吧!...

发布时间:2024-09-20 14:01:05

历史上最长情的皇帝:顺治皇帝,挚爱董鄂妃(为爱出家)
历史上最长情的皇帝:顺治皇帝,挚爱董鄂妃(为爱出家)

自古无情帝王家,说到帝王的爱情多是奢望,很多帝王后宫的妃子换了一个又一个,几乎都是薄情寡义的,但是漫长的历史长河中也有例外,有的皇帝便与众不同,特别的长情,下面小编来为大家介绍一下历史上最长情的皇帝吧!...

发布时间:2024-09-20 13:03:24

武侠剧中的绝世高手有哪些:扫地僧,化险为夷(秒杀高手)
武侠剧中的绝世高手有哪些:扫地僧,化险为夷(秒杀高手)

可以说人的成长伴随着无数的武侠剧,尤其是电视剧中的那些绝世高手更是让人影响深刻,有不少人小时候都幻想过可以武功盖世,一统江湖,那么有人知道武侠剧中有哪些绝世高手吗?下面小编为大家盘点一下吧!...

发布时间:2024-09-20 12:02:19

电视剧中的古装美女:刘亦菲,举止摇曳生姿(天仙下凡)
电视剧中的古装美女:刘亦菲,举止摇曳生姿(天仙下凡)

古装电视剧中有许多的美丽的女子,她们身着美丽的衣裳,一举一动摇曳生姿,美得让人挪不开双眼,可以说是一场视觉盛宴,下面就让小编为大家盘点一下那些古装美女吧!...

发布时间:2024-09-20 11:09:01

清朝古装剧中的美人:刘诗诗,若曦无人超越(顾盼生姿)
清朝古装剧中的美人:刘诗诗,若曦无人超越(顾盼生姿)

近年清朝古装剧收视率暴涨,这些电视剧不仅剧情引人入胜,身着清装的美人也同样吸引了不少目光,有着让人过目不忘的美貌,那么清朝古装剧中有哪些美人呢?下面小编就来为大家盘点一下吧!...

发布时间:2024-09-20 11:02:08

小青龟能长多大:背甲14厘米,体色会变化(濒危物种)
小青龟能长多大:背甲14厘米,体色会变化(濒危物种)

养龟市场上经常可以看到小青龟,这种乌龟乖巧可爱以及性情温顺,所以很多人都会选择小青龟来饲养,不过一直都是见到小青龟都比较小,这不禁令人好奇这种乌龟能长多大?下面小编就带大家一起了解一下小青龟吧!...

发布时间:2024-09-20 10:01:47