搜索技术-英文分词的技术要点

服务器管理 服务器管理 主题:1035 回复:2217

搜索技术-英文分词的技术要点

甜柠檬 发布于 2017-06-24 字数 402 浏览 1088 回复 6

这一个搜索中很容易遇到的问题,用户在输入英文/中英文混合词搜索时,往往会遗漏或者加入空格,导致搜索结果非常差,以电子商务网站为例:

比如用户搜索iphone4s,但数据库里面绝大多数商品录入为iphone 4s。
再比如用户搜索macbook pro,数据库里面的商品大部分为macbookpro。

也许不能简单的归于分词问题,我想知道的是,如何提高上述情况的搜索准确性,包括服务器端的分词生成索引和客户端的搜索命中

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(6

偏爱自由 2017-10-23 6 楼

搜索的分词 越细越好

这块建议看看《数学之美》,主要看你的数学模型了

虐人心 2017-09-26 5 楼

其实你分词关键是词库的建立,iphone和4s你可以分别将这两个词存到词库,等用户输入iphone4s时你就可以分成iphone 4s,再到库里搜索,词库里的关键字你还可以按权重分级,权重越高的越显匹配,已查到用户最想看到的内容。

浮生未歇 2017-08-02 4 楼

这个问题曾经也困扰我们,董琛与热血海贼王的回答和我们初期的思路基本是一致的.

我补充下可能的"细节".

1)对搜索接口进行统计,需要知道热词与搜索的命中率,搜索次数等等一些相关数据用于分析

2)对高频度的搜索,类似iphone4s这样的搜索无法准确命中的时候,就要根据分析结果进行修改索引与分词

3)将此任务作为一个daily的task(频率和规则可以自己控制),这样就可以比较快速的修正结果.

PS. 有些词并不需要分词,所以还是有必要对生成的词库进行调整,比如一些广告或是一些热门词汇.这个在1的分析结果是很容易获取到

希望以上回复会对你有些帮助

甜柠檬 2017-07-28 3 楼

分词技术,除了基本的纯粹的分词,比如英语文学,不管是分成:英语/文学,还是英/语文/学;中间不可避免会有其他干扰字符,所以需要建立一张歧义表,尤其是一些用户人们搜索的关键字,比如:iphose4s= iphone 4s = iphone4s=...
分词技术需要结合分词和歧义索引表以及用户行为习惯;

灵芸 2017-07-07 2 楼

可以参考下lucene,或许对你有帮助。

---被踩了,所以补充下我的理解

这个问题太大了。如何分词有很多的专业资料和文档,都不是立竿见影的。说说我们针对搜索不准确一些具体优化方案

1.收集关键词
将搜索关键词按照被搜索的次数排序。

2.找出优化目标
按照(20/80)谬论(我们测试过,还是有道理的),80%的热门关键词是来源于20%的词汇。

3.倒序归类。
这部分需要部分手工和计算机处理,将相同的关键词归类。最终这20%的词汇可能会变成5%。例如,
iphone 4s,iphone4s,4s,iphone siri,可能都对应iphone 4s这个商品,甚至在iphone5没有出来之前,你可以把iphone 5也映射到这个关键词。

最终的目标是这样。
当用户键入"iphone4s" "iphone 4s",客户端此时请求到服务端,服务端首先在上面的20%里面查找,如果找到,会把这个词汇正确的映射到相应的数据上,如果没有就是剩下80%的数据了,也没有经常过处理,就让他自生自灭吧。

这整个过程其实人是主导,现在分词无论是词典,还是马尔可夫,生物学,还是各种新的算法,都是在追踪人类的表达习惯。而这些也都是搜索巨头在努力方向,针对一些具体的业务,我个人觉的没有必要在这上面花费时间,借助别人的轮子+产品的习惯+取舍,我相信会有一个比较好的效果。

希望对你有帮助。

想挽留 2017-07-02 1 楼

不知道你用的是什么搜索引擎,如果是sphinx话是可以设置Token的,即为一些特定词建立映射关系,将用户常习惯搜索输入的关键词跟你库里标准的关键词(目标关键词)建立关系, 如
iphone4s => iphone 4s
macbook pro => macbookpro
c++ => cplusplus
Microsoft Windows => ms windows
大概原理就是这样,如果服务端不好实现,利用程序做少量处理也是可以的,主要是在建索引的时候处理。