【问题标题】:display "movie name" instead of "movie id" as recommendation from apache mahout显示“电影名称”而不是“电影 ID”作为 apache mahout 的推荐
【发布时间】:2017-03-26 17:11:40
【问题描述】:

我正在使用 apache mahout 开发一个简单的电影推荐系统,并在此处引用一个短视频 - https://www.youtube.com/watch?v=yD40rVKUwPI。推荐人的代码是

    public class App 
 {
    public static  List<RecommendedItem> getRecommend(int k) throws Exception
   {
            ClassLoader classLoader = App.class.getClassLoader();

            DataModel model = new FileDataModel(new    File(classLoader.getResource("data/dataset.csv").getFile()));
        UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
        UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
        UserBasedRecommender recommender = new     GenericUserBasedRecommender(model, neighborhood, similarity);
        List<RecommendedItem> recommendations = recommender.recommend(k, 3);
        return recommendations;
     }
}

这会以电影 ID 的形式生成推荐。我想要的是显示名称而不是电影 ID。我正在使用的数据集(生成 id)具有 csv 格式的以下列

user_id   movie_id  rating

但由于存在一个包含两个文件的 MovieLens 数据集 - 一个带有字段

   user_id   movie_id  rating

其次是

  movie_id   movie_name

我如何使用上述资源来获取电影名称而不是 id。是否可以使用 DataModel 类或有其他出路。 我想要推荐

movie_name  value

而不是现在

movie_id  value

【问题讨论】:

    标签: mahout mahout-recommender


    【解决方案1】:

    您可能无法单独使用 Mahout。您需要使用 CSV 阅读器加载电影标题 CSV 文件,或将其导入数据库,然后自己将电影 ID 映射回名称。

    【讨论】:

    • 是的,除了 rating.csv 之外,我还有一个 movie_title.csv。我的想法是将这两个文件无论如何合并到单个 csv 中,然后将其用作数据集而不是我当前的数据集(rating.csv)。它会起作用吗?请详细说明一下,我是第一次尝试。 rating.csv 仅包含movie_id,而movie_title.csv 将movie_id 映射到标题。
    • 我对 Mahout 的 API 和数据模型知之甚少,不知道它是否能让您以这种方式对数据进行建模。我对此表示怀疑,但很可能是错误的。很多这些系统都使用评级矩阵,您需要自己查找项目元数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多