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

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协议

显示全文
为您推荐
羊肉炖多久才烂
羊肉炖多久才烂

【导读】 羊肉炖多久才烂,下面是小编为你收集整理的,希望对你有帮助!炖2小时左右。对于牙口不好,想要吃较为软烂一点的羊肉,则需要延长炖羊肉的时间,通常煮羊肉1小时即熟透,但要到软烂的地步则需要2小时以上或用高压锅煮1小时才行。另外为了便于羊肉容易软烂,建议放一些山楂一......

发布时间:2023-09-26 08:01:16

长生不老已实现隐瞒 长生不老真的研究成功吗
长生不老已实现隐瞒 长生不老真的研究成功吗

长生不老是很多人都希望的,都想永远的活在这个世界上,古代的君王都一直想着炼丹吃了长生不老,只不过没有达成。现在的医学也在寻找着长生不老,人是否能突破年龄的限制完成长生不老也是很多人的夙愿。...

发布时间:2023-09-26 08:00:13

曼谷和清迈哪个更好玩(曼谷和清迈哪个适合居住)
曼谷和清迈哪个更好玩(曼谷和清迈哪个适合居住)

【导读】 曼谷和清迈哪个更好玩(曼谷和清迈哪个适合居住),下面是小编为你收集整理的,希望对你有帮助!清迈被称为“泰北玫瑰”,是泰国第二大城市。近年来,每年有1000多万游客和商务人士来到清迈,每年有数十万外国人因医疗、教育、养老等原因在清迈买房居住。那么清迈到底有什么魅力可以吸引大量的人呢?1、历史......

发布时间:2023-09-26 07:01:11

长达十万字人类与外星人对话是真的吗 主要内容是什么
长达十万字人类与外星人对话是真的吗 主要内容是什么

对于外星人的研究人类从非常早就开始了,在1940年美国开展的航天计划,对于外星人的探索就有了第一步,而在宇宙之中到底是否有外星人的生存,这个每个人不能够确定的说。曾今有一篇十万字人类与外星人的对话,根据目前的状况只能证明这段长对话是假的。...

发布时间:2023-09-26 07:00:08

奶酪怎么吃
奶酪怎么吃

【导读】 奶酪怎么吃,下面是小编为你收集整理的,希望对你有帮助!新鲜奶酪:这种奶酪是不经过成熟处理的,直接用机器去除多余水分,即可食用。质感柔软湿润,有浓郁的奶香味和酸味。存储时间短,需要尽快食用。可和全麦面包等一同食用。白霉奶酪:在新鲜奶酪的基础上,种植上可食用......

发布时间:2023-09-26 06:01:15

章鱼智商相当于人几岁 章鱼智商为什么这么高
章鱼智商相当于人几岁 章鱼智商为什么这么高

据说,章鱼是拥有高智商的生物,相当于一个十岁儿童的智商。章鱼所拥有的五亿个神经元细胞当中,其中就发现了和人类很相似的神经细胞,而且还拥有两个记忆系统。虽然章鱼拥有着极其复杂的神经系统,但这并不能作为评判章鱼智商高低的方法。...

发布时间:2023-09-26 06:00:12

8月份当季的水果有哪些
8月份当季的水果有哪些

【导读】 8月份当季的水果有哪些,下面是小编为你收集整理的,希望对你有帮助!8月份当季的水果有杨桃、西瓜、无花果、石榴、龙眼等。1、杨桃:杨桃是酢浆草科阳桃属植物,乔木,高可达12米,分枝甚多;树皮暗灰色,内皮淡黄色。奇数羽状复叶,互生,全缘,卵形或椭圆形。花小,微香,数朵至......

发布时间:2023-09-26 05:01:18

为什么说章鱼的基因不属于地球 章鱼基因有什么特别的
为什么说章鱼的基因不属于地球 章鱼基因有什么特别的

章鱼的基因不属于地球,章鱼本身的基因编码很多,大概有33000个。章鱼的基因与人类相比要复杂很多,在很多生物身上看不到的基因组,会出现在章鱼的身上。其实在大海里面有很多生物都非常神秘。随着科技的发展,一些专业人员一直都在潜心的研究,相信能够探索到更多生物的秘密。...

发布时间:2023-09-26 05:00:14

假鲨齿龙:中国大型恐龙(长7米/以捕猎其它恐龙为食)
假鲨齿龙:中国大型恐龙(长7米/以捕猎其它恐龙为食)

【导读】 假鲨齿龙:中国大型恐龙(长7米/以捕猎其它恐龙为食),下面是小编为你收集整理的,希望对你有帮助!说到强大的恐龙,大家都会想到霸王龙,其实在恐龙统治地球的几亿年里,诞生的强大恐龙数不胜数,霸王龙只是其中之一罢了。今天小编将为大家介绍的是假鲨齿龙,它出土于中国,跟霸王龙一样,都是强大的食肉恐龙,以捕......

发布时间:2023-09-26 04:53:01

2000步是多少公里
2000步是多少公里

【导读】 2000步是多少公里,下面是小编为你收集整理的,希望对你有帮助!1.2公里。成人一步约60厘米,即0.6米,0.6*2000=1200米,1200米=1.2公里,所以成人2000步大约是1.2公里。......

发布时间:2023-09-26 04:01:16

章鱼的痛觉是人的几倍 章鱼自身有痛觉吗(十几倍)
章鱼的痛觉是人的几倍 章鱼自身有痛觉吗(十几倍)

章鱼的痛觉是人的十倍之多,其实章鱼也是有痛感的。如果将一只活的章鱼放入热水中,那么章鱼会拼命的挣扎,这就说明它有痛的感觉。其实在自然界的生物大多都会有痛觉,甚至还会比人类的痛觉要敏感很多。...

发布时间:2023-09-26 04:00:13

动物繁殖的方式:胎生卵生和卵胎生(三种繁殖方式)
动物繁殖的方式:胎生卵生和卵胎生(三种繁殖方式)

【导读】 动物繁殖的方式:胎生卵生和卵胎生(三种繁殖方式),下面是小编为你收集整理的,希望对你有帮助!动物繁殖的方式我们总体上可以分为三种,一种是胎生,一种是卵生,夹在中间的就是卵胎生,卵生通常是指一些在母体里面生长的个体,例如一些鸟类,鸡鸭等,它们的幼崽都是在体内或者是体外孵化成个体的。而胎生则是指......

发布时间:2023-09-26 03:01:16