/*
* 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);
}
}