手机版 欢迎访问人人都是自媒体网站
了解搜索过程的基本原理:如何根据关键字匹配内容,如何返回搜索结果,如何将结果展示给用户;
在搜索场景下更合理的划定搜索范围(输入内容命中哪些字段),提高用户搜索效率,提高数据搜索基线;
提高日常工作中搜索的效率,更快更准地搜到自己想要的东西。
用户搜索的过程:用户输入关键词,系统根据用户输入的内容筛选出系统认为用户感兴趣的信息,然后按照系统所设定的规则进行排序。整个过程可拆解为三步:分词、筛选、排序。
在了解分词前先看下搜索的存储原理:在系统词库和索引库之间建立关联,通过用户输入的关键词去匹配词库,然后拉取索引库内容展示给用户。
以在美食网站搜索“北京最大的火锅店”为例,索引库中内容为系统内所有店铺,每个店铺包含的字段有店名、位置、月销量、评论量、评分等等;词库中内容为系统内的词条,只要用户输入的内容能够匹配到词条,就可以快速找到词条对应的索引内容,无法匹配到词条时就没有返回结果。每个系统都有自己的词库,搜索的很多优化都是集中在词库的优化上。
分词是对用户输入的信息进行解读,是自然语言处理的重要步骤。同机器学习原理一样,分词将非结构化的数据转化为结构化数据,结构化的数据就可以转化为数学问题了,解决数学问题正是计算机之所长。
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)逆向最大匹配法
匹配时从后往前取词,其他逻辑和正向相同。
Copyright © 2018 DEDE97. 织梦97 版权所有 京ICP