方式
1、逐词匹配
给你一句话,这时你需要将他们分成两两相对或三三相对的词条,但是你并不知道如何那几个相邻的字能够组成字条。那么索性你直接拿着这句话去翻新欢词典,从头到尾翻一次,发现没有符合的时候,就删除最后一个字,在去翻词典。
2、正向最大匹配法
按照我们的阅读习惯,从左到右进行匹配,而其中的最大的含义就是当出现多个匹配词条时,以字数最多的词条为准。
有个用户搜索:“成都动物园在哪里”。<br><br>这个时候进行第一次词典查询,按在最大的词“成都动物园在哪里”进行查询,发现没有匹配。<br><br>进行第二次查询,这次查询“成都动物园在哪”,同样没发现匹配。<br><br>进行第三次查询,这次是“成都动物园在”,还是发现没有匹配的。<br><br>第四匹配的时候,这次匹配“成都动物园”,结果在词条里面检索到了。<br>
保留结果是“成都动物园”。随后便去除“成都动物园”变成“在哪里”重新开始检索。这样根据我们的词典进行分词,我们可以得到结果:“成都动物园”“在”“哪里”。
3、逆向最大匹配法
逻辑和正向匹配相同,唯一的区别在于它是从右到左,每次减去开头的字。
以“成都动物园在哪里”为例。<br><br>第一次词典查询,按在最大的词“成都动物园在哪里”进行查询,发现没有匹配。<br><br>进行第二次查询,这次查询“都动物园在哪里”,同样没发现匹配。<br><br>进行第三次查询,这次是“动物园在哪里”,还是发现没有匹配的。<br><br>.......<br><br>最后在第七次查询我们得到“哪里”,随后便去除“哪里”对““都动物园在”进行检索。<br>
当同样的逻辑缩减到“在”后,还是没有相对应的词典,那么将“在”也单独剔出,开始检索“成都动物园”。这样第一次检索就成功检索出来,得到结果“哪里”“在”“成都动物园”这样的分词。因为是反向其实结果和正向结果相同。
4、双向匹配
这种匹配法是为了更加准确的分词出现,把正向和反向两种算法都切一遍,然后根据词条颗粒度来进行选择。分词的词条越长越好,非词典词和单字词越少越好的原则,选出这里面最合适的进行匹配。
例如:<br><br>非词典内的词:正向匹配(1)> 反向匹配(0) 选择反向<br><br>词典内的单字:正向匹配(2)= 反向匹配(2) 持平不做选择<br><br>总分词数量:正向匹配(3)< 反向匹配(2)选择反向<br>
词意纠错
词意纠错也是搜索里重要的一环节,在搜索的时候,打错字说错话是很常见场景(语言搜索)。
1、拼音纠错
当输入的汉字存在错误时,系统需要及时联系上下文进行解析,可以将汉字转换成拼音,通过同拼音进行识别,比如“如何吧大象放入病象”,把他们未能分词成功单独留下的汉字转化成拼音“如何“”ba“”大象“”放入“”bing“”xiang”在查询字典进行处理。
2、模型算法
这部分高于繁琐,想了解的可自行搜索:SVM、Maxent等
类目预测
用户使用搜索功能在于得到解答,所以我们需要理解用户搜索内容的含义。
比如用户搜索苹果的时候,她搜索的是吃的苹果还是苹果手机了。一个吃一个用这两个答案是风马牛不相及的,所以预测类目会对用户搜索结果影响很大。
1、人工配置
通过后端埋点日志搜集最近热门的搜索词,对这些搜索词进行指定配置,这样就可以保证当用户搜索苹果的时候出来的是苹果手机,而不是真的苹果。
2、类目相关性
通过对搜索词进行算法计算,从搜索词的重要性、类目数、类目出现次数、搜索词出现次数等进行计算。<br>代表性tf-dc算法。<br>
结果排序
比如搜索苹果手机,出现的结果是10万+条商品信息,那么谁排第一。就需要从权重出发进行权重排序。(商品少也可以按照最新更新时间排序)。
1、词频:对搜索对query进行分词处理,在进行预测类目后对高词频内容优先展示<br>
2、用户标签:符合用户标签喜好的商品进行加权,优先排序<br>
3、时间段:对当前时段营业(客服在线)进行加权<br>
4、销量、好评率:同理这就不说了<br>
5、商品时效:对新更新商品进行加权,可用于互冲旧商品销量、好评的加<br>
6、付费:竞价广告、付费升权等