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

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

Introduction

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

Prototype

double rescore(T thing, double originalScore);

Source Link

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 ww  w.ja  v  a 2 s.co 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 double rescore(LongPair itemIDs, double value) {
    for (Rescorer<LongPair> rescorer : rescorers) {
        value = rescorer.rescore(itemIDs, value);
        if (Double.isNaN(value)) {
            return Double.NaN;
        }/*from   w ww  .  j ava2 s .  c o m*/
    }
    return value;
}