package hip.mahout; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.taste.impl.model.file.FileDataModel; import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; import org.apache.mahout.cf.taste.impl.recommender.CachingRecommender; import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender; import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity; import org.apache.mahout.cf.taste.model.DataModel; import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood; import org.apache.mahout.cf.taste.recommender.RecommendedItem; import org.apache.mahout.cf.taste.recommender.Recommender; import org.apache.mahout.cf.taste.similarity.UserSimilarity; import java.io.File; import java.io.IOException; import java.util.List; public class MovieUserRecommender { public static void main(String ... args) { try { recommend(args[0], 1, 2, 3); } catch (Throwable e) { e.printStackTrace(); } } private static void recommend(String ratingsFile, int ... userIds) throws TasteException, IOException { DataModel model = new FileDataModel(new File(ratingsFile)); UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood( 100, similarity, model); Recommender recommender = new GenericUserBasedRecommender( model, neighborhood, similarity); Recommender cachingRecommender = new CachingRecommender(recommender); for(int userId: userIds) { System.out.println("UserID " + userId); List<RecommendedItem> recommendations = cachingRecommender.recommend(userId, 2); for(RecommendedItem item: recommendations) { System.out.println(" item " + item.getItemID() + " score " + item.getValue()); } } } }