/* * Source code for listing 5.6 * */ package mia.recommender.ch05; import java.io.IOException; import java.util.List; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.taste.impl.model.GenericUserPreferenceArray; import org.apache.mahout.cf.taste.impl.model.PlusAnonymousUserDataModel; import org.apache.mahout.cf.taste.impl.model.file.FileDataModel; import org.apache.mahout.cf.taste.model.DataModel; import org.apache.mahout.cf.taste.model.PreferenceArray; import org.apache.mahout.cf.taste.recommender.RecommendedItem; public class LibimsetiWithAnonymousRecommender extends LibimsetiRecommender { private final PlusAnonymousUserDataModel plusAnonymousModel; public LibimsetiWithAnonymousRecommender() throws TasteException, IOException { this(new FileDataModel(readResourceToTempFile("ratings.dat"))); } public LibimsetiWithAnonymousRecommender(DataModel model) throws TasteException, IOException { super(new PlusAnonymousUserDataModel(model)); plusAnonymousModel = (PlusAnonymousUserDataModel) getDataModel(); } public synchronized List<RecommendedItem> recommend( PreferenceArray anonymousUserPrefs, int howMany) throws TasteException { plusAnonymousModel.setTempPrefs(anonymousUserPrefs); List<RecommendedItem> recommendations = recommend(PlusAnonymousUserDataModel.TEMP_USER_ID, howMany, null); plusAnonymousModel.clearTempPrefs(); return recommendations; } public static void main(String[] args) throws Exception { PreferenceArray anonymousPrefs = new GenericUserPreferenceArray(3); anonymousPrefs.setUserID(0, PlusAnonymousUserDataModel.TEMP_USER_ID); anonymousPrefs.setItemID(0, 123L); anonymousPrefs.setValue(0, 1.0f); anonymousPrefs.setItemID(1, 123L); anonymousPrefs.setValue(1, 3.0f); anonymousPrefs.setItemID(2, 123L); anonymousPrefs.setValue(2, 2.0f); LibimsetiWithAnonymousRecommender recommender = new LibimsetiWithAnonymousRecommender(); List<RecommendedItem> recommendations = recommender.recommend(anonymousPrefs, 10); System.out.println(recommendations); } }