搜索技术-英文分词中词库/歧义表的建立方法
本问题是由我的上一个问题英文分词的技术要点引出的。
在上一个问题中,基本上大部分答案都认为,为了让英文的搜索更加准确,需要建立词库或者歧义表,比如:
iphone4s => iphone 4s
macbook pro => macbookpro
但由此又会引发新的问题,这样的词库/歧义表如何比较好的建立。
目前绝大多数回答都是靠人工方法,统计用户搜索,我认为这样无法很好的解决问题:
首先,一个搜索结果好,还是不好,这是需要人为去判断的,比如在我的项目中
iphone 4s的搜索结果为:34匹配 (http://shishijia.com/search/iphone%204s)
iphone4s的搜索结果为:17匹配 (http://shishijia.com/search/iphone4s)
对于这两个结果,如果不用人工检查一个一个看,不是很容易能确定34匹配的就一定优于17匹配的结果。假如每天有大量的搜索,那么如何能从大量的搜索数据中甄选出好的搜索结果和不好的搜索结果呢?
比如上例中,网站有1W次搜索,我们怎么样能发现iphone4s这个搜索关键词的匹配结果是不够好的,需要建立歧义表呢?
其次,统计用户搜索结果来建立歧义表,对于流量大的电商网站比较容易,但对于初创项目来说很难实现,因为本来初期用户就不多,而用户很可能因为一次不准确的搜索就此离开。如果等统计到足够的用户数据再去慢慢修正搜索结果,对于初创项目来说可能用户已经流失的差不多了。
个人考虑也许可以从现有搜索引擎/电商网站等获取一定的相关词库数据,至少是一些热门商品的数据,希望得到一些建议。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你应该使用一个by word的analyzer:
iphone4s(iphone 4s) to terms: iphone/4s
macbookpro(macbook pro) to terms: mac/book/pro
这样将搜索词粒度降低
在建立索引和parse query的时候同样应用这个analyzer,这样本身搜索出的最优结果会在最上面,同时也解决了未来iphone5,iphone6的问题
如果是一个针对产品库的索引,可以将macbook加入词库,分出更为理想的macbook/pro
当然,这样做是保证通用性,针对性的优化方式还有很多,例如调整analyzer使之可以将iphone4s,iphone-4s,iphone4s纳入同一个term,针对性的优化产品词库,或者你说的"歧义表",这样可以避免搜索iphone4s在后面几页出现iphone3gs的新闻,这样则需要维护一个产品名称库,通常这不是一个网站起步阶段需要做的
一般搜索引擎中都提供 wordforms(词形字典)功能,就可以根据词性表得到统一结果,
字典的建立可以使用 myspell, ispell, pspell, aspell等的字典。