Mahout基于内容的推荐

时间:2012-10-12 13:53:17

标签: mahout recommendation-engine

我正在尝试使用有关节目的信息创建节目推荐人,所以我相信这是基于内容的。我想让一个人选择他们观看的节目,并根据他们的内容推荐类似的节目。

目前我的数据文件如下所示

Code          Genre
1260064148537,NOGENRE
1260064149243,Drama
1260064149741,Spoof
1260064764631,Classical
12600647412748,HipHopRnB&Dancehall
126006483593,NOGENRE
1260065049943,NOGENRE
12600705429,Sketch
1260070324431,News
126007032486,Sport
...

我已经编写了自己的ItemSimilarity来查找类型中的相似之处,但我不知道如何将DataModel与我的数据一起使用,因为我有一个Long和一个String,然后是如何将它发送给推荐者。我是否必须编写自己的DataModel?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:5)

第一个问题是,您是否有任何其他数据,将用户连接到节目。如果你不这样做,那么你实际上并没有推荐问题。这只是一个类似的问题。您推荐的内容类似于用户现在所看到的内容。

当然你必须定义相似性。如果您拥有的只是每个节目的单个标签,那么您可以做很多事情,除非它们在具有相同标签时相似,否则不会。您可以使用ItemSimilarity并迭代所有项目(可能预先计算此项目)来计算与当前项目最相似的内容。

当然,如果你的相似度只是0或1,这取决于他们是否共享标签,那甚至不是相似性问题。这只是搜索。找到同一类别的东西,你就完成了。

当您有用户项目数据时,推荐人会发挥作用。您可以使用此类数据制作ItemSimilarity,然后使用该数据加上用户项数据(可能是视图计数等)来制作推荐者。但我也认为你必须评估你是否可以获得更丰富的标签数据;如果是这样,你当然可以制定更好的相似性指标。

(由于上述原因,这不是你用于DataModel的输入。但是我应该注意你不能使用字符串标识符,它们必须是数字。可以使用带有一些额外工作的字符串但这不值得。)