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

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

Introduction

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

Prototype

long getItemID(int i);

Source Link

Usage

From source file:CandidateItemsStrategyCustom.java

@Override
public FastIDSet getCandidateItems(long l, PreferenceArray preferencesFromUser, DataModel dm, boolean bln)
        throws TasteException {
    List<Long> specificlItemIDs = new ArrayList<>();
    FastIDSet candidateItemIDs = new FastIDSet();

    for (long itemID : specificlItemIDs) {
        candidateItemIDs.add(itemID);/*  ww w  . j a  v  a 2  s . c o  m*/
    }

    for (int j = 0; j < preferencesFromUser.length(); j++) {
        candidateItemIDs.remove(preferencesFromUser.getItemID(j));
    }

    return candidateItemIDs;
}

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;//ww w . j a v a 2s .  c  om
                    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;// w  ww. java 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);
            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.persistence.FilePreferenceSource.java

License:Apache License

@Override
public void compact() {
    // ????/*from  ww w . j  a  va2 s .c o m*/
    final long version = getCurrentVersion() - 1;
    if (version < 0) {
        return;
    }
    File latestSnapshotFile = getLatestSnapshotFile();
    if (latestSnapshotFile != null && getSnapshotFileVersion(latestSnapshotFile) == version) {
        return;
    }

    synchronized (_snapshotWriterLock) {
        PrintWriter snapshotWriter = createWriter(getSnapshotFile(version));
        try {
            final List<File> logFileList = getLogFileListUntilVersion(version);
            List<File> fileToIt = new ArrayList<File>(logFileList);
            if (latestSnapshotFile != null) {
                fileToIt.add(0, latestSnapshotFile);
            }
            PreferenceIterator it = new LogFileIterator(fileToIt);
            FastByIDMap<PreferenceArray> data = new FastByIDMap<PreferenceArray>();
            while (it.hasNext()) {
                Preference pref = it.next();
                if (it.getType() == PreferenceType.ADD) {
                    Util.applyAdd(data, pref);
                } else if (it.getType() == PreferenceType.DELETE) {
                    Util.applyRemove(data, pref);
                }
            }

            for (Entry<Long, PreferenceArray> entry : data.entrySet()) {
                PreferenceArray array = entry.getValue();
                for (int i = 0, length = array.length(); i < length; i++) {
                    long userID = array.getUserID(i);
                    long itemID = array.getItemID(i);
                    float value = array.getValue(i);
                    snapshotWriter.print(userID);
                    snapshotWriter.print(',');
                    snapshotWriter.print(itemID);
                    snapshotWriter.print(',');
                    snapshotWriter.println(value);
                }
            }

            snapshotWriter.flush();
            snapshotWriter.close();
            removeFile();
        } finally {
            snapshotWriter.close();
        }
    }
}

From source file:com.anjuke.romar.mahout.persistence.FilePreferenceSourceTest.java

License:Apache License

@Test
public void testGetPreferenceData() {
    source.setPreference(2, 3, 2);/* w  w w .  j ava  2 s . c  o  m*/
    source.removePreference(2, 3);
    source.setPreference(1, 1, 2);
    source.setPreference(3, 4, 2);
    source.setPreference(3, 5, 3);
    source.commit();
    source.setPreference(5, 4, 1.0f);
    source.compact();
    source.close();
    source = new FilePreferenceSource(path);
    FastByIDMap<PreferenceArray> data = source.getPreferenceUserData();
    PreferenceArray id2 = data.get(2);
    assertNull(id2);
    PreferenceArray id1 = data.get(1);
    assertNotNull(id1);
    assertEquals(1, id1.getItemID(0));
    assertEquals(2.0f, id1.getValue(0), 0f);

    PreferenceArray id3 = data.get(3);
    assertNotNull(id3);
    assertEquals(4, id3.getItemID(0));
    assertEquals(2.0f, id3.getValue(0), 0f);
    assertEquals(5, id3.getItemID(1));
    assertEquals(3.0f, id3.getValue(1), 0f);

    PreferenceArray id5 = data.get(5);
    assertNotNull(id5);
    assertEquals(4, id5.getItemID(0));
    assertEquals(1.0f, id5.getValue(0), 0f);

}

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 ava  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;/*  ww  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;/* w w w . j a  v  a  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);
            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:de.tuberlin.dima.recsys.ssnmm.interactioncut.BiasedItemBasedRecommender.java

License:Apache License

private static Float getPreferenceForItem(PreferenceArray preferencesFromUser, long itemID) {
    int size = preferencesFromUser.length();
    for (int i = 0; i < size; i++) {
        if (preferencesFromUser.getItemID(i) == itemID) {
            return preferencesFromUser.getValue(i);
        }//from   w  w  w. java2s.c  o m
    }
    return null;
}

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;//from  w w w.j  ava  2s  .com
                    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);
}