Example usage for org.apache.mahout.cf.taste.impl.common FastIDSet FastIDSet

List of usage examples for org.apache.mahout.cf.taste.impl.common FastIDSet FastIDSet

Introduction

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

Prototype

public FastIDSet(int size) 

Source Link

Usage

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