使用Mahout进行全文个性化搜索

时间:2012-03-12 14:08:07

标签: java search lucene mahout personalization

我有一个文章数据库,将由Lucene编制索引,按用户标记和mahout分类。文章将有一定的分数标记(用户可以同意或不同意标记,mahout发现的标记将被视为与用户相同)。

我想从个人资料和互动历史中找出用户的兴趣(可能对某个标签感兴趣)。

如何存储用户的兴趣?
我如何利用用户的兴趣对搜索结果进行排序或过滤?

我的方法可行吗?可行?可扩展?
我可以使用哪种技术和算法?请提出建议!

2 个答案:

答案 0 :(得分:2)

这听起来很像搜索问题,而不是推荐问题。您主要是根据标签对搜索结果进行排序和过滤。因此我认为Lucene通常是部署的工具,而不是Mahout。 (虽然使用Mahout分类器来学习标签是非常正确的。)

如果您真的想将此视为推荐人问题,我可能会说您的商品是标签。任何时候你与标签交互,比如查看标记为X,Y和Z的页面,那么这表明你对“项目”X,Y和Z更感兴趣。然后这里的推荐问题是建议新标签兴趣。

您可以尝试使用与标记的简单交互计数作为数字“评级”,但我认为这不会在推荐程序上下文中产生很好的结果。使用计数日志更好,但仍然感觉不对。您可以忽略交互计数,只使用用户和标记曾经交互过的事实 - “布尔首选项”。

我知道,与此输入最匹配的推荐算法模型是您在ParallelALSFactorizationJob中看到的交替最小二乘模型。我不知道这是否对您有用,但如果您有时间和倾向,我会调查算法。它的输入更像是一种“互动强度”,而不是一种评级,它就是这样对待的,而这正是你在这里所拥有的。

答案 1 :(得分:1)

很多时候,让用户明确地说出他们感兴趣的标签会更容易。例如,这就是堆栈溢出所做的事情。如果标签是他们感兴趣的标签,您可以将分数提高一些。

如果你想做一些更隐含的事情,Mahout会推荐FAQ