我在使用Solr进行排名时遇到了问题,现在卡住了。
在一个电子商务网站上,当我搜索“ipad”时,得到的结果是:
- 适用于iPad 2的iPad保护套
- iPad保护套
- iPad连接套件
- iPad 32GB WiFi版
这是一个问题,因为我们希望主要产品(或产品本身)排在前面,而tf/idf却因为描述如“适用于iPad、iPad2、iPad3、iPad Retina、iPad Mini等的iPad保护套”而将配件排在前面。
此外,使用类别我们无法确定它是配件还是产品。
我想知道使用自动分类是否会有所帮助。其他能改善这种排名的解决方案(如Named Entity Recognition
)也将受到欢迎。
回答:
你能提供标记数据吗?
如果你有超过5万件商品,使用基于产品名称训练的二元语言模型的Naive Bayes
分类器几乎可以以99%的准确率识别出所有配件。我猜你可以用Mahout来训练这样的朴素贝叶斯分类器,不过产品名称的二元组合数量相当有限,所以现在即使在智能手机上也能轻松快速地进行训练。
这是一个典型的机械土耳其任务,标记一些商品的费用应该不会太高。然而,如果你坚持使用某种半监督算法,我发现Iterative similarity aggregation
非常有用。
主要思路是,你提供一些标记如“case”/“power adapter”,它会迭代地寻找新的标记,这些标记因为出现在相同上下文中而成为垃圾邮件的指示器。
这里是论文,但我也在博客上写了一篇博文,用通俗的语言总结了这个意图。这篇论文还提到了Sean提出的“让用户找到正确物品”的相同范式,所以两者可以结合使用。
哦,如果你需要关于使用Lucene&SOLR进行机器学习的建议,我可以推荐我的朋友Tommaso Teofili在今年ApacheCon Europe上的演讲。你可以在slideshare上找到幻灯片。还有一个YouTube视频,搜索一下就能找到;)