Example usage for org.apache.mahout.cf.taste.impl.model GenericUserPreferenceArray GenericUserPreferenceArray

List of usage examples for org.apache.mahout.cf.taste.impl.model GenericUserPreferenceArray GenericUserPreferenceArray

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.impl.model GenericUserPreferenceArray GenericUserPreferenceArray.

Prototype

public GenericUserPreferenceArray(List<? extends Preference> prefs) 

Source Link

Usage

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