Example usage for org.apache.mahout.cf.taste.model PreferenceArray set

List of usage examples for org.apache.mahout.cf.taste.model PreferenceArray set

Introduction

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

Prototype

void set(int i, Preference pref);

Source Link

Document

Sets preference at i from information in the given Preference

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;//  w  w  w.  j  a va 2  s . c  o  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.ja  v a2 s .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);
            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;//from   w w  w  .  j a v  a 2 s.  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 w w  w  .j a  v  a2  s . co m
                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.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 w  w.  ja v  a2  s .  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);
            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:edu.uniandes.yelp.recommender.MongoDBDataModel.java

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;/*ww w .jav  a  2  s .  c  o  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:edu.uniandes.yelp.recommender.MongoDBDataModel.java

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 w w.  j a  va  2 s  .  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);
            //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:norbert.mynemo.core.evaluation.PreferenceMaskerModelBuilder.java

License:Apache License

@Override
public PreferenceArray getPreferencesForItem(long itemID) throws TasteException {

    if (!maskedPreferences.contains(itemID)) {
        return dataModel.getPreferencesForItem(itemID);
    }//from  w w w  .j a  v  a 2  s . c  o m

    PreferenceArray result = fakePreferencesForItem.get(itemID);
    if (result != null) {
        // the array to provides has already been created
        return result;
    }

    // the array to provide must be created
    PreferenceArray realPreferenceArray = dataModel.getPreferencesForItem(itemID);
    PreferenceArray newPreferenceArray = new GenericUserPreferenceArray(realPreferenceArray.length() - 1);

    int indexFake = 0;
    for (int indexReal = 0; indexReal < realPreferenceArray.length(); indexReal++) {
        Preference realPreference = realPreferenceArray.get(indexReal);

        long currentUser = realPreference.getUserID();
        float currentValue = realPreference.getValue();
        if (currentUser != targetUser) {
            Preference newPreference = new GenericPreference(currentUser, itemID, currentValue);
            newPreferenceArray.set(indexFake, newPreference);
            indexFake++;
        }
    }

    // cache the array for later invocations
    fakePreferencesForItem.put(itemID, newPreferenceArray);

    return newPreferenceArray;
}

From source file:org.mandar.analysis.recsys2014.models.NeoMongoDBDataModel.java

License:Apache License

private void buildModel() throws UnknownHostException {
    userIsObject = false;/*from  ww w  . j a v a 2  s . c  om*/
    itemIsObject = false;
    idCounter = 0;
    preferenceIsString = true;
    MongoClient mongoDDBB = new MongoClient(mongoHost, mongoPort);
    DB db = mongoDDBB.getDB(mongoDB);
    mongoTimestamp = new Date(0);
    FastByIDMap<PreferenceArray> userIDPrefMap = new FastByIDMap<PreferenceArray>();
    if (!mongoAuth || db.authenticate(mongoUsername, mongoPassword.toCharArray())) {
        collection = db.getCollection(mongoCollection);
        collectionMap = db.getCollection(mongoMapCollection);
        DBObject indexObj = new BasicDBObject();
        indexObj.put("element_id", 1);
        collectionMap.createIndex(indexObj);
        indexObj = new BasicDBObject();
        indexObj.put("long_value", 1);

        // Now the $group operation
        DBObject groupFields = new BasicDBObject("_id", "$" + mongoUserID);
        groupFields.put("count", new BasicDBObject("$sum", 1));
        DBObject group = new BasicDBObject("$group", groupFields);

        // Finally the $sort operation
        DBObject sort = new BasicDBObject("$sort", new BasicDBObject("count", -1));
        log.debug("Running Aggregation query");
        // run aggregation
        List<DBObject> pipeline = Arrays.asList(group, sort);
        AggregationOutput output = collection.aggregate(pipeline);

        //Map<Long,Long> prefArrSize = new HashMap<Long, Long>();
        Long2IntMap prefArrSize = new Long2IntArrayMap();

        Long2IntMap prefArrCount = new Long2IntArrayMap();
        for (DBObject result : output.results()) {
            prefArrSize.put(Long.parseLong(result.get("_id").toString()),
                    Integer.parseInt(result.get("count").toString()));
            prefArrCount.put(Long.parseLong(result.get("_id").toString()), 0);
            log.debug(result.toString());
        }

        log.debug("Aggregation query, Long2LongMap created");
        collectionMap.createIndex(indexObj);
        collectionMap.remove(new BasicDBObject());
        DBCursor cursor = collection.find();
        int count;

        while (cursor.hasNext()) {
            Map<String, Object> user = (Map<String, Object>) cursor.next().toMap();
            if (!user.containsKey("deleted_at")) {
                long userID = Long.parseLong(fromIdToLong(getID(user.get(mongoUserID), true), true));
                long itemID = Long.parseLong(fromIdToLong(getID(user.get(mongoItemID), false), false));

                float ratingValue = getPreference(user.get(mongoPreference));
                PreferenceArray userPrefs = userIDPrefMap.get(userID);
                //log.info("user {} items rated {}", user.get(mongoUserID), prefArrSize.get(user.get(mongoUserID)));
                if (userPrefs == null) {
                    userPrefs = new GenericUserPreferenceArray(prefArrSize.get(user.get(mongoUserID)));
                    userIDPrefMap.put(userID, userPrefs);
                }
                count = prefArrCount.get(user.get(mongoUserID));
                userPrefs.set(count, new GenericPreference(userID, itemID, ratingValue));
                count++;
                prefArrCount.put(Long.parseLong(user.get(mongoUserID).toString()), count);
                if (user.containsKey("created_at")
                        && mongoTimestamp.compareTo(getDate(user.get("created_at"))) < 0) {
                    mongoTimestamp = getDate(user.get("created_at"));
                }
            }
        }
    }
    delegate = new GenericDataModel(userIDPrefMap);
}

From source file:org.zaizi.mahout.alfresco.datamodel.AlfrescoViewedDocumentDataModelImpl.java

License:Open Source License

public synchronized void setPreference(long userID, long itemID, float value) throws TasteException {
    Preference newPref = new GenericPreference(userID, itemID, normalizeScore((int) value));

    // PreferenceFromUsers
    PreferenceArray prefs = preferenceFromUsers.get(userID);
    if (prefs == null) {
        PreferenceArray newPrefArray = new GenericUserPreferenceArray(1);
        newPrefArray.set(0, newPref);
        preferenceFromUsers.put(userID, newPrefArray);
    } else {/* w w w.  jav  a  2s.  co  m*/
        boolean finded = false;
        int i = 0;
        while (i < prefs.length() && !finded)
            if (prefs.getItemID(i) == itemID)
                finded = true;
            else
                i++;

        if (finded) {
            prefs.set(i, newPref);
        } else {
            PreferenceArray newPrefArray = new GenericUserPreferenceArray(prefs.length() + 1);
            for (i = 0; i < prefs.length(); i++)
                newPrefArray.set(i, prefs.get(i));
            newPrefArray.set(i, newPref);
            preferenceFromUsers.put(userID, newPrefArray);
        }
    }

    // Preference From Items
    prefs = preferenceForItems.get(itemID);
    if (prefs == null) {
        PreferenceArray newPrefArray = new GenericItemPreferenceArray(1);
        newPrefArray.set(0, newPref);
        preferenceForItems.put(itemID, newPrefArray);
    } else {
        boolean finded = false;
        int i = 0;
        while (i < prefs.length() && !finded)
            if (prefs.getItemID(i) == itemID)
                finded = true;
            else
                i++;

        if (finded) {
            prefs.set(i, newPref);
        } else {
            PreferenceArray newPrefArray = new GenericItemPreferenceArray(prefs.length() + 1);
            for (i = 0; i < prefs.length(); i++)
                newPrefArray.set(i, prefs.get(i));
            newPrefArray.set(i, newPref);
            preferenceForItems.put(itemID, newPrefArray);
        }
    }
}