List of usage examples for org.apache.mahout.cf.taste.model PreferenceArray getItemID
long getItemID(int i);
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); }