List of usage examples for org.apache.mahout.cf.taste.impl.common FastIDSet FastIDSet
public FastIDSet(int size)
From source file:com.webir.popcornsaver.cluster.TreeClusteringRecommender.java
License:Apache License
private void findClusters(List<FastIDSet> newClusters) throws TasteException { if (clusteringByThreshold) { Pair<FastIDSet, FastIDSet> nearestPair = findNearestClusters(newClusters); if (nearestPair != null) { FastIDSet cluster1 = nearestPair.getFirst(); FastIDSet cluster2 = nearestPair.getSecond(); while (clusterSimilarity.getSimilarity(cluster1, cluster2) >= clusteringThreshold) { newClusters.remove(cluster1); newClusters.remove(cluster2); FastIDSet merged = new FastIDSet(cluster1.size() + cluster2.size()); merged.addAll(cluster1); merged.addAll(cluster2); newClusters.add(merged); nearestPair = findNearestClusters(newClusters); if (nearestPair == null) { break; }/*from w ww . ja v a 2 s .co m*/ cluster1 = nearestPair.getFirst(); cluster2 = nearestPair.getSecond(); } } } else { while (newClusters.size() > numClusters) { Pair<FastIDSet, FastIDSet> nearestPair = findNearestClusters(newClusters); if (nearestPair == null) { break; } FastIDSet cluster1 = nearestPair.getFirst(); FastIDSet cluster2 = nearestPair.getSecond(); newClusters.remove(cluster1); newClusters.remove(cluster2); FastIDSet merged = new FastIDSet(cluster1.size() + cluster2.size()); merged.addAll(cluster1); merged.addAll(cluster2); newClusters.add(merged); } } }
From source file:com.yelp.convert.RestaurantData.java
License:Apache License
public RestaurantData(String line) throws TasteException { String[] tokens = SEPARATOR.split(line); // store the restaurant alpha numeric ID restaurantAlphaID = tokens[0];//from w ww .j ava 2s .c om restaurantID = 0; if (restaurantIdMigtr == null) restaurantIdMigtr = new ItemUserMemIDMigrator(); try { // store the restaurant ID which has been converted to long value restaurantID = restaurantIdMigtr.singleInit(tokens[0]); } catch (TasteException e) { e.printStackTrace(); } // store the restaurant name restaurantName = tokens[1]; /* * Loop through the attributes which include parameters such as: * Cuisine, Good for Kids, Alcohol, Waiter Service, Accepts Credit * Cards, Wheelchair Accessible, Wi-Fi, Outdoor Seating, Has TV, Takes * Reservations, Delivery, Take-out, Good For Groups */ if (tokens.length > 2) { String[] attributes = COMMA.split(tokens[2]); attributeSet = new FastIDSet(attributes.length); for (String attrib : attributes) { if (attributeMigtr == null) attributeMigtr = new ItemUserMemIDMigrator(); try { attributeSet.add(attributeMigtr.singleInit(attrib)); } catch (TasteException e) { e.printStackTrace(); } } } else { attributeSet = NO_ATTRIB; } }
From source file:net.ufida.info.mahout.common.MemoryDiffStorage.java
License:Apache License
/** * <p>//w w w. ja va 2s. co m * See {@link SlopeOneRecommender} for the meaning of * {@code stdDevWeighted}. {@code maxEntries} controls the maximum number of * item-item average preference differences that will be tracked internally. After the limit is reached, if * a new item-item pair is observed in the data it will be ignored. This is recommended for large datasets. * The first {@code maxEntries} item-item pairs observed in the data are tracked. Assuming that item * ratings are reasonably distributed among users, this should only ignore item-item pairs that are very * infrequently co-rated by a user. The intuition is that data on these infrequently co-rated item-item * pairs is less reliable and should be the first that is ignored. This parameter can be used to limit the * memory requirements of {@link SlopeOneRecommender}, which otherwise grow as the square of the number of * items that exist in the {@link DataModel}. Memory requirements can reach gigabytes with only about 10000 * items, so this may be necessary on larger datasets. * * @param stdDevWeighted * see {@link SlopeOneRecommender} * @param maxEntries * maximum number of item-item average preference differences to track internally * @throws IllegalArgumentException * if {@code maxEntries} is not positive or {@code dataModel} is null */ public MemoryDiffStorage(DataModel dataModel, Weighting stdDevWeighted, long maxEntries) throws TasteException { Preconditions.checkArgument(dataModel != null, "dataModel is null"); Preconditions.checkArgument(dataModel.getNumItems() >= 1, "dataModel has no items"); Preconditions.checkArgument(maxEntries > 0L, "maxEntries must be positive"); this.dataModel = dataModel; this.stdDevWeighted = stdDevWeighted == Weighting.WEIGHTED; this.maxEntries = maxEntries; this.averageDiffs = new FastByIDMap<FastByIDMap<RunningAverage>>(); this.averageItemPref = new FastByIDMap<RunningAverage>(); this.buildAverageDiffsLock = new ReentrantReadWriteLock(); this.allRecommendableItemIDs = new FastIDSet(dataModel.getNumItems()); //? this.refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() throws TasteException { buildAverageDiffs(); // return null; } }); refreshHelper.addDependency(dataModel); //?? // /* List<Refreshable> list = new ArrayList<Refreshable>(); list.add(dataModel); refreshHelper.refresh(list); */ buildAverageDiffs(); }
From source file:net.ufida.info.mahout.common.MemoryDiffStorage.java
License:Apache License
private void updateAllRecommendableItems() throws TasteException { FastIDSet ids = new FastIDSet(dataModel.getNumItems()); for (Map.Entry<Long, FastByIDMap<RunningAverage>> entry : averageDiffs.entrySet()) { ids.add(entry.getKey());/*w w w . j a v a 2 s. co m*/ LongPrimitiveIterator it = entry.getValue().keySetIterator(); while (it.hasNext()) { ids.add(it.next()); } } allRecommendableItemIDs.clear(); allRecommendableItemIDs.addAll(ids); allRecommendableItemIDs.rehash(); }
From source file:norbert.mynemo.core.evaluation.PreferenceMaskerModelBuilder.java
License:Apache License
@Override public FastIDSet getItemIDsFromUser(long userID) throws TasteException { PreferenceArray prefs = getPreferencesFromUser(userID); int size = prefs.length(); FastIDSet result = new FastIDSet(size); for (int i = 0; i < size; i++) { result.add(prefs.getItemID(i));/*from ww w. ja v a 2 s . co m*/ } return result; }
From source file:org.plista.kornakapi.core.recommender.CachingAllUnknownItemsCandidateItemsStrategy.java
License:Apache License
private FastIDSet loadAllItemIDs(DataModel dataModel) throws TasteException { int numItems = dataModel.getNumItems(); log.info("Loading {} itemIDs into memory", numItems); FastIDSet collectedItemIDs = new FastIDSet(dataModel.getNumItems()); LongPrimitiveIterator allItemIDsIterator = dataModel.getItemIDs(); while (allItemIDsIterator.hasNext()) { collectedItemIDs.add(allItemIDsIterator.next()); }/*from www .j a v a2 s . c om*/ return collectedItemIDs; }
From source file:org.zaizi.mahout.alfresco.datamodel.AlfrescoDataModelImpl.java
License:Open Source License
public FastIDSet getItemIDsFromUser(long userID) throws TasteException { logger.trace("getItemIDsFromUser {" + userID + "}"); SearchParameters searchParams = new SearchParameters(); String username = ZaiziAlfrescoServiceUtil.getUsername(userID); searchParams.setQuery(preferencesFromUserQuery); searchParams.addStore(getStoreRef()); searchParams.setLanguage(SearchService.LANGUAGE_LUCENE); ResultSet results = null;/* w w w . j a v a 2 s . co m*/ List<Long> resultKeys; try { NodeRef documentRef; Rating ratingRef; long itemId; results = executeQuery(searchParams); resultKeys = new ArrayList<Long>(results.length()); for (ResultSetRow row : results) { documentRef = row.getNodeRef(); ratingRef = getRatingValue(documentRef, username); if (ratingRef != null) { itemId = ZaiziAlfrescoServiceUtil.getNodeId(documentRef); resultKeys.add(itemId); } } } finally { if (results != null) { results.close(); } } int i = 0; long[] keySet = new long[resultKeys.size()]; for (Long l : resultKeys) { keySet[i] = l; i++; } if (logger.isTraceEnabled()) { logger.trace("Returining :" + toList(keySet)); } return new FastIDSet(keySet); }
From source file:org.zaizi.mahout.alfresco.datamodel.AlfrescoViewedDocumentDataModelImpl.java
License:Open Source License
public synchronized FastIDSet getItemIDsFromUser(long userID) throws TasteException { PreferenceArray prefs = getPreferencesFromUser(userID); if (prefs == null) return new FastIDSet(0); int size = prefs.length(); FastIDSet result = new FastIDSet(size); for (int i = 0; i < size; i++) { result.add(prefs.getItemID(i));/*from w ww.ja v a 2 s .com*/ } return result; }
From source file:org.zaizi.mahout.alfresco.datamodel.MetaversantDataModelImpl.java
License:Open Source License
public FastIDSet getItemIDsFromUser(long userID) throws TasteException { logger.trace("getItemIDsFromUser { " + userID + "}"); SearchParameters searchParams = new SearchParameters(); final String username = ZaiziAlfrescoServiceUtil.getUsername(userID); searchParams.setQuery(preferencesFromUserQuery + "\"" + username + "\""); searchParams.addStore(getStoreRef()); searchParams.setLanguage(SearchService.LANGUAGE_LUCENE); //logger.trace(searchParams.getQuery()); ResultSet results = null;/* ww w. ja va 2s. c o m*/ long[] resultKeys; try { NodeRef currentNodeRef; long itemId; results = executeQuery(searchParams); resultKeys = new long[results.length()]; int i = 0; for (ResultSetRow row : results) { currentNodeRef = row.getNodeRef(); itemId = ZaiziAlfrescoServiceUtil.getNodeId(getParent(currentNodeRef)); resultKeys[i] = itemId; i++; } } finally { if (results != null) { results.close(); } } if (logger.isTraceEnabled()) { logger.trace("Returning : " + toList(resultKeys)); } return new FastIDSet(resultKeys); }