3

我正在尝试使用有关节目的信息创建节目推荐器,因此我相信这是基于内容的。我希望一个人选择他们看过的节目,并根据他们的内容推荐类似的节目。

目前我的数据文件看起来像这样

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 吗?如果是这样,我该怎么做?

4

1 回答 1

5

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

当然,您必须定义相似性。如果每个节目只有一个标签,那么您无能为力,只能说它们在具有相同标签时是相似的,否则就不行。您可以使用ItemSimilarity和迭代所有项目(也许预先计算这个)来计算与当前项目最相似的事物。

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

当您将用户项目数据放在心上时,推荐器就会发挥作用。您可以使用这种数据来制作推荐人ItemSimilarity,然后使用它加上用户项目数据(可能是查看次数等)来制作推荐人。但我也认为你必须评估是否可以获得更丰富的标签数据;如果是这样,您当然可以做出更好的相似性指标。

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

于 2012-10-12T16:34:24.910 回答