List of usage examples for org.apache.mahout.cf.taste.recommender Rescorer rescore
double rescore(T thing, double originalScore);
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; }