1

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

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

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

我的方法可行吗?可行的?可扩展?
我可以使用什么样的技术和算法?请建议!

4

2 回答 2

2

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

如果你真的想把它想象成一个推荐问题,我可能会说你的项目是标签。任何时候你与一个标签交互,比如查看一个标签为 X、Y 和 Z 的页面,那么这表明你对“项目”X、Y 和 Z 更感兴趣。然后这里的推荐问题是建议新的标签兴趣。

您可以尝试使用与标签交互的简单计数作为数字“评级”,尽管我认为这不会在推荐上下文中产生很好的结果。用count的log比较好,但还是感觉不对。您可以忽略交互计数,只使用用户和标签曾经交互过或没有交互过的事实——“布尔偏好”。

据我所知,与此输入最匹配的推荐算法模型是您在 ParallelALSFactorizationJob 中看到的交替最小二乘模型。我不知道这对您是否有用,但如果您有时间和意愿,这就是我会研究的算法。它的输入更像是“交互强度”而不是评级,它以这种方式对待它,这就是你在这里所拥有的。

于 2012-03-12T16:19:03.243 回答
1

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

如果你想做一些更隐含的事情,Mahout 有一个关于推荐的常见问题解答。

于 2012-03-12T15:48:29.407 回答