List of usage examples for org.apache.mahout.cf.taste.impl.model GenericUserPreferenceArray GenericUserPreferenceArray
public GenericUserPreferenceArray(List<? extends Preference> prefs)
From source file:alto.plugin.webradio.recommender.MongoDBDataModel.java
License:Apache License
private DataModel removeUserItem(long userID, Iterable<List<String>> items) { FastByIDMap<PreferenceArray> rawData = ((GenericDataModel) delegate).getRawUserData(); for (List<String> item : items) { PreferenceArray prefs = rawData.get(userID); long itemID = Long.parseLong(item.get(0)); if (prefs != null) { boolean exists = false; int length = prefs.length(); for (int i = 0; i < length; i++) { if (prefs.getItemID(i) == itemID) { exists = true;/*from ww w .j a v a 2 s .co m*/ break; } } if (exists) { rawData.remove(userID); if (length > 1) { PreferenceArray newPrefs = new GenericUserPreferenceArray(length - 1); for (int i = 0, j = 0; i < length; i++, j++) { if (prefs.getItemID(i) == itemID) { j--; } else { newPrefs.set(j, prefs.get(i)); } } rawData.put(userID, newPrefs); } log.info("Removing userID: {} itemID: {}", userID, itemID); if (mongoManage) { removeMongoUserItem(Long.toString(userID), Long.toString(itemID)); } } } } return new GenericDataModel(rawData); }
From source file:alto.plugin.webradio.recommender.MongoDBDataModel.java
License:Apache License
private DataModel addUserItem(long userID, Iterable<List<String>> items) { FastByIDMap<PreferenceArray> rawData = ((GenericDataModel) delegate).getRawUserData(); PreferenceArray prefs = rawData.get(userID); for (List<String> item : items) { long itemID = Long.parseLong(item.get(0)); float preferenceValue = Float.parseFloat(item.get(1)); boolean exists = false; if (prefs != null) { for (int i = 0; i < prefs.length(); i++) { if (prefs.getItemID(i) == itemID) { exists = true;//from ww w . j a v a 2 s .c om prefs.setValue(i, preferenceValue); break; } } } if (!exists) { if (prefs == null) { prefs = new GenericUserPreferenceArray(1); } else { PreferenceArray newPrefs = new GenericUserPreferenceArray(prefs.length() + 1); for (int i = 0, j = 1; i < prefs.length(); i++, j++) { newPrefs.set(j, prefs.get(i)); } prefs = newPrefs; } prefs.setUserID(0, userID); prefs.setItemID(0, itemID); prefs.setValue(0, preferenceValue); log.info("Adding userID: {} itemID: {} preferenceValue: {}", userID, itemID, preferenceValue); rawData.put(userID, prefs); if (mongoManage) { addMongoUserItem(Long.toString(userID), Long.toString(itemID), Float.toString(preferenceValue)); } } } return new GenericDataModel(rawData); }
From source file:com.anjuke.romar.mahout.util.Util.java
License:Apache License
public static void applyAdd(FastByIDMap<PreferenceArray> data, Preference addPreference) { long userID = addPreference.getUserID(); long itemID = addPreference.getItemID(); float preferenceValue = addPreference.getValue(); PreferenceArray prefs = data.get(userID); boolean exists = false; if (prefs != null) { for (int i = 0; i < prefs.length(); i++) { if (prefs.getItemID(i) == itemID) { exists = true;// ww w . j ava 2s . c o m prefs.setValue(i, preferenceValue); break; } } } if (!exists) { if (prefs == null) { prefs = new GenericUserPreferenceArray(1); } else { PreferenceArray newPrefs = new GenericUserPreferenceArray(prefs.length() + 1); for (int i = 0, j = 1; i < prefs.length(); i++, j++) { newPrefs.set(j, prefs.get(i)); } prefs = newPrefs; } prefs.setUserID(0, userID); prefs.setItemID(0, itemID); prefs.setValue(0, preferenceValue); data.put(userID, prefs); } }
From source file:com.anjuke.romar.mahout.util.Util.java
License:Apache License
public static void applyRemove(FastByIDMap<PreferenceArray> data, Preference removePreference) { long userID = removePreference.getUserID(); long itemID = removePreference.getItemID(); PreferenceArray prefs = data.get(userID); if (prefs != null) { boolean exists = false; int length = prefs.length(); for (int i = 0; i < length; i++) { if (prefs.getItemID(i) == itemID) { exists = true;//from www. j a va2s. com break; } } if (exists) { if (length == 1) { data.remove(userID); } else { PreferenceArray newPrefs = new GenericUserPreferenceArray(length - 1); for (int i = 0, j = 0; i < length; i++, j++) { if (prefs.getItemID(i) == itemID) { j--; } else { newPrefs.set(j, prefs.get(i)); } } data.put(userID, newPrefs); } } } }
From source file:com.msiiplab.recsys.rwr.GLRecommenderIRStatsEvaluator.java
License:Apache License
protected PreferenceArray getPreferenceArray(List<RecommendedItem> recommendedItems, long userID) { ArrayList<Preference> userPredictionArray = new ArrayList<Preference>(); for (int i = 0; i < recommendedItems.size(); i++) { RecommendedItem item = recommendedItems.get(i); userPredictionArray.add(new GenericPreference(userID, item.getItemID(), item.getValue())); }/* w w w. j ava2 s . c o m*/ PreferenceArray userPredictions = new GenericUserPreferenceArray(userPredictionArray); userPredictions.sortByValueReversed(); return userPredictions; }
From source file:com.paradigma.recommender.db.MongoDBDataModel.java
License:Apache License
private DataModel addUserItem(long userID, Iterable<List<String>> items) { FastByIDMap<PreferenceArray> rawData = ((GenericDataModel) delegate).getRawUserData(); PreferenceArray prefs = rawData.get(userID); for (List<String> item : items) { long itemID = Long.parseLong(item.get(0)); float preferenceValue = Float.parseFloat(item.get(1)); boolean exists = false; if (prefs != null) { for (int i = 0; i < prefs.length(); i++) { if (prefs.getItemID(i) == itemID) { exists = true;//from w ww .j av a 2 s . co m prefs.setValue(i, preferenceValue); break; } } } if (!exists) { if (prefs == null) { prefs = new GenericUserPreferenceArray(1); } else { PreferenceArray newPrefs = new GenericUserPreferenceArray(prefs.length() + 1); for (int i = 0, j = 1; i < prefs.length(); i++, j++) { newPrefs.set(j, prefs.get(i)); } prefs = newPrefs; } prefs.setUserID(0, userID); prefs.setItemID(0, itemID); prefs.setValue(0, preferenceValue); log.info("Adding userID: {} itemID: {} preferenceValue: {}", new Object[] { userID, itemID, preferenceValue }); rawData.put(userID, prefs); if (mongoManage) { addMongoUserItem(Long.toString(userID), Long.toString(itemID), Float.toString(preferenceValue)); } } } return new GenericDataModel(rawData); }
From source file:com.staticvillage.recommender.PreferenceBag.java
License:Apache License
public PreferenceArray getPreferences(long userId) { PreferenceArray prefs = new GenericUserPreferenceArray(map.size()); prefs.setUserID(0, userId);//ww w. j av a 2 s . c om int index = 0; for (Map.Entry<String, Integer> entry : map.entrySet()) { prefs.setItemID(index, Long.valueOf(entry.getKey())); prefs.setValue(index, 1); index++; } return prefs; }
From source file:com.staticvillage.recommender.PreferenceBag.java
License:Apache License
public PreferenceArray getWeightedPreferences(long userId) { PreferenceArray prefs = new GenericUserPreferenceArray(map.size()); prefs.setUserID(0, userId);//from w w w .j a v a2 s . co m int index = 0; for (Map.Entry<String, Integer> entry : map.entrySet()) { prefs.setItemID(index, Long.valueOf(entry.getKey())); prefs.setValue(index, entry.getValue() / max); index++; } return prefs; }
From source file:de.apaxo.bedcon.AnimalFoodRecommender.java
License:Open Source License
public void initDataModel() { FastByIDMap<PreferenceArray> preferenceMap = new FastByIDMap<PreferenceArray>(); for (int i = 0; i < animals.size(); i++) { List<Preference> userPreferences = new ArrayList<Preference>(); long userId = id2thing.toLongID(animals.get(i)); for (int j = 0; j < foods.size(); j++) { if (preferences[i][j] != null) { userPreferences/*from w w w . jav a 2 s.c o m*/ .add(new GenericPreference(userId, id2thing.toLongID(foods.get(j)), preferences[i][j])); } } GenericUserPreferenceArray userArray = new GenericUserPreferenceArray(userPreferences); preferenceMap.put(userId, userArray); } model = new GenericDataModel(preferenceMap); }
From source file:de.apaxo.bedcon.FacebookRecommender.java
License:Open Source License
/** * This function will init the recommender * it will load the CSV file from the resource folder, * parse it and create the necessary data structures * to create a recommender./* w w w . j av a 2 s .c om*/ * The */ @PostConstruct public void initRecommender() { try { // get the file which is part of the WAR as URL url = getClass().getClassLoader().getResource(DATA_FILE_NAME); // create a file out of the resource File data = new File(url.toURI()); // create a map for saving the preferences (likes) for // a certain person Map<Long, List<Preference>> preferecesOfUsers = new HashMap<Long, List<Preference>>(); // use a CSV parser for reading the file // use UTF-8 as character set CSVParser parser = new CSVParser(new InputStreamReader(new FileInputStream(data), "UTF-8")); // parse out the header // we are not using the header String[] header = parser.getLine(); // should output person name log.fine(header[0] + " " + header[1]); String[] line; // go through every line while ((line = parser.getLine()) != null) { String person = line[0]; String likeName = line[1]; // other lines contained but not used // String category = line[2]; // String id = line[3]; // String created_time = line[4]; // create a long from the person name long userLong = thing2long.toLongID(person); // store the mapping for the user thing2long.storeMapping(userLong, person); // create a long from the like name long itemLong = thing2long.toLongID(likeName); // store the mapping for the item thing2long.storeMapping(itemLong, likeName); List<Preference> userPrefList; // if we already have a userPrefList use it // otherwise create a new one. if ((userPrefList = preferecesOfUsers.get(userLong)) == null) { userPrefList = new ArrayList<Preference>(); preferecesOfUsers.put(userLong, userPrefList); } // add the like that we just found to this user userPrefList.add(new GenericPreference(userLong, itemLong, 1)); log.fine("Adding " + person + "(" + userLong + ") to " + likeName + "(" + itemLong + ")"); } // create the corresponding mahout data structure from the map FastByIDMap<PreferenceArray> preferecesOfUsersFastMap = new FastByIDMap<PreferenceArray>(); for (Entry<Long, List<Preference>> entry : preferecesOfUsers.entrySet()) { preferecesOfUsersFastMap.put(entry.getKey(), new GenericUserPreferenceArray(entry.getValue())); } // create a data model dataModel = new GenericDataModel(preferecesOfUsersFastMap); // Instantiate the recommender recommender = new GenericBooleanPrefItemBasedRecommender(dataModel, new LogLikelihoodSimilarity(dataModel)); } catch (URISyntaxException e) { log.log(Level.SEVERE, "Problem with the file URL", e); } catch (FileNotFoundException e) { log.log(Level.SEVERE, DATA_FILE_NAME + " was not found", e); } catch (IOException e) { log.log(Level.SEVERE, "Error during reading line of file", e); } }