我正在开发一个简单的电影推荐系统,使用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
我如何使用上面的资源来获取movie_names而不是id。是否可以使用DataModel类或者还有其他方法。 我想要推荐
movie_name value
而不是现在
movie_id value
答案 0 :(得分:0)
你可能不能独自与Mahout一起。您需要使用CSV阅读器加载电影标题CSV文件,或将其导入数据库,然后自己将电影ID映射回名称。