Example usage for org.apache.mahout.cf.taste.recommender Rescorer isFiltered

List of usage examples for org.apache.mahout.cf.taste.recommender Rescorer isFiltered

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.recommender Rescorer isFiltered.

Prototype

boolean isFiltered(T thing);

Source Link

Document

Returns true to exclude the given thing.

Usage

From source file:net.myrrix.online.MostSimilarItemIterator.java

License:Apache License

@Override
public RecommendedItem next() {
    FastByIDMap.MapEntry<float[]> entry = Yiterator.next();
    long itemID = entry.getKey();

    if (userTagIDs.contains(itemID)) {
        return null;
    }//from   w w w  .  ja  v  a  2s .c  o m

    for (long l : toItemIDs) {
        if (l == itemID) {
            return null;
        }
    }

    Rescorer<LongPair> rescorer1 = this.rescorer;
    float[] candidateFeatures = entry.getValue();
    double candidateFeaturesNorm = SimpleVectorMath.norm(candidateFeatures);
    double total = 0.0;

    int length = itemFeatures.length;
    for (int i = 0; i < length; i++) {
        long toItemID = toItemIDs[i];
        LongPair cachedPair = null;
        if (rescorer1 != null) {
            cachedPair = new LongPair(itemID, toItemID);
            if (rescorer1.isFiltered(cachedPair)) {
                return null;
            }
        }
        double similarity = SimpleVectorMath.dot(candidateFeatures, itemFeatures[i])
                / (candidateFeaturesNorm * itemFeatureNorms[i]);
        if (!LangUtils.isFinite(similarity)) {
            return null;
        }
        if (rescorer1 != null) {
            similarity = rescorer1.rescore(cachedPair, similarity);
            if (!LangUtils.isFinite(similarity)) {
                return null;
            }
        }
        total += similarity;
    }

    float result = (float) (total / length);
    Preconditions.checkState(LangUtils.isFinite(result), "Bad similarity value");
    delegate.set(itemID, result);
    return delegate;
}

From source file:net.myrrix.online.MultiLongPairRescorer.java

License:Apache License

@Override
public boolean isFiltered(LongPair itemIDs) {
    for (Rescorer<LongPair> rescorer : rescorers) {
        if (rescorer.isFiltered(itemIDs)) {
            return true;
        }//from  w  ww .  j  a va  2  s .  co  m
    }
    return false;
}

From source file:net.myrrix.online.MultiRescorerProviderTest.java

License:Apache License

@Test
public void testMultiMostSimilarItemsRescorer() {
    RescorerProvider multi = new MultiRescorerProvider(new SimpleModRescorerProvider(2),
            new SimpleModRescorerProvider(3));
    Rescorer<LongPair> provider = multi.getMostSimilarItemsRescorer((MyrrixRecommender) null);
    assertNotNull(provider);/*from   ww w . j  a v a  2  s .  c  o m*/
    assertTrue(provider instanceof MultiLongPairRescorer);
    assertTrue(provider.isFiltered(new LongPair(2, 3)));
    assertTrue(provider.isFiltered(new LongPair(2, 6)));
    assertFalse(provider.isFiltered(new LongPair(6, 12)));
}