欢迎进入上海大众搬迁搬家服务有限公司网站!

关于我们 | 联系我们

上海大众搬场数据解决之搜索如何命中?

作者:大众搬运公司 时间:2020-01-12 19:55

了解搜索过程的基来源根基理:如何依照 关键字匹配内容,如何返回搜索结果,如何将结果展示给用户;

在搜索场景下更合理的划定搜索范围(输入内容命中哪些字段),提高用户搜索效率,提高数据搜索基线;

提高日常上班中搜索的效率,更快更准地搜到自己 想要的东西。

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

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

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

一、分词

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

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)逆向最大匹配法

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