@Override public LongIterator iterator() { return LongIterators.asLongIterator(base.iterator()); }
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { List<Result> results = new ArrayList<>(items.size()); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); results.add(Results.create(item, fixedScore)); } return Results.newResultMap(results); }
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { List<Result> results = new ArrayList<>(items.size()); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); results.add(Results.create(item, rankScores.get(item))); } return Results.newResultMap(results); } }
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { List<Result> rs = new ArrayList<>(items.size()); KeyedObjectMap<Result> userResults = userData.get(user); if (userResults != null) { LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); Result r = userResults.get(item); if (r != null) { rs.add(r); } } } return Results.newResultMap(rs); }
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { double userScore = globalMean + userBiases.get(user); List<Result> results = new ArrayList<>(); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); double score = userScore + itemBiases.get(item); results.add(Results.create(item, score)); } return Results.newResultMap(results); }
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { List<Result> results = new ArrayList<>(); double base = model.getIntercept() + model.getUserBias(user); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); results.add(Results.create(item, base + model.getItemBias(item))); } return Results.newResultMap(results); } }
/** * Score items into an accumulator. * @param basket The basket of reference items. * @param items The item scores. * @param accum The accumulator. */ private void scoreItems(@Nonnull Collection<Long> basket, Collection<Long> items, ItemItemScoreAccumulator accum) { LongSet bset = LongUtils.packedSet(basket); Long2DoubleMap basketScores = LongUtils.constantDoubleMap(bset, 1.0); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); scoreItem(basketScores, item, accum); } }
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { RealVector uvec = model.getUserVector(user); if (uvec == null) { return Results.newResultMap(); } List<Result> results = new ArrayList<>(items.size()); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); RealVector ivec = model.getItemVector(item); if (ivec != null) { double score = uvec.dotProduct(ivec); if (isProbPrediction) { score = 1 - Math.exp(-score); } results.add(Results.create(item, score)); } } return Results.newResultMap(results); } }
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { final double gmean = summary.getGlobalMean(); List<Result> results = new ArrayList<>(); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { final long item = iter.nextLong(); double offset = summary.getItemOffset(item); if (!Scalars.isZero(damping)) { int count = summary.getItemRatingCount(item); offset = offset * count / (count + damping); } results.add(Results.create(item, gmean + offset)); } return Results.newResultMap(results); }
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { ResultMap results = primaryScorer.scoreWithDetails(user, items); List<Result> allResults = new ArrayList<>(items.size()); LongList toFetch = new LongArrayList(items.size() - results.size()); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { final long item = iter.nextLong(); Result r = results.get(item); if (r == null) { toFetch.add(item); } else { allResults.add(new FallbackResult(r, true)); } } if (!toFetch.isEmpty()) { for (Result r: baselineScorer.scoreWithDetails(user, toFetch)) { allResults.add(new FallbackResult(r, false)); } } return new BasicResultMap(allResults); }
/** * Score all items into an accumulator. * @param user The user. * @param items The items to score. * @param accum The accumulator. */ private void scoreItems(long user, @Nonnull Collection<Long> items, ItemItemScoreAccumulator accum) { Long2DoubleMap ratings = Long2DoubleSortedArrayMap.create(rvDAO.userRatingVector(user)); logger.trace("user has {} ratings", ratings.size()); InvertibleFunction<Long2DoubleMap, Long2DoubleMap> transform = normalizer.makeTransformation(user, ratings); Long2DoubleMap itemScores = transform.apply(ratings); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { final long item = iter.nextLong(); scoreItem(itemScores, item, accum); } accum.applyReversedTransform(transform); }
LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { final long predicteeItem = iter.nextLong();
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { Long2DoubleMap baselines = biasModel.getItemBiases(LongUtils.packedSet(items)); baselines = Vectors.addScalar(baselines, biasModel.getIntercept() + biasModel.getUserBias(user)); RealVector uvec = getUserPreferenceVector(user); if (uvec == null) { return Results.newResultMap(); } List<Result> results = new ArrayList<>(items.size()); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); RealVector ivec = model.getItemVector(item); if (ivec != null) { double score = computeScore(baselines.get(item), uvec, ivec); results.add(Results.create(item, score)); } } return Results.newResultMap(results); } }
LongIterator iter = LongIterators.asLongIterator(keys); while (iter.hasNext()) { long k = iter.nextLong();
LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { final long predicteeItem = iter.nextLong();
LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { final long item = iter.nextLong();
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { Long2DoubleMap userRatings = rvDAO.userRatingVector(user); if (userRatings.isEmpty()) { Map<Long, Double> scores = baseline.score(user, items); return Results.newResultMap(Iterables.transform(scores.entrySet(), Results.fromEntryFunction())); } else { // score everything, both rated and not, for offsets LongSet allItems = new LongOpenHashSet(userRatings.keySet()); allItems.addAll(items); Map<Long, Double> baseScores = baseline.score(user, allItems); Long2DoubleMap offsets = new Long2DoubleOpenHashMap(); // subtract scores from ratings, yielding offsets Long2DoubleFunction bsf = LongUtils.asLong2DoubleMap(baseScores); for (Long2DoubleMap.Entry e: userRatings.long2DoubleEntrySet()) { double base = bsf.get(e.getLongKey()); offsets.put(e.getLongKey(), e.getDoubleValue() - base); } double meanOffset = Vectors.sum(offsets) / (offsets.size() + damping); // to score: fill with baselines, add user mean offset List<Result> results = new ArrayList<>(items.size()); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); results.add(Results.create(item, bsf.get(item) + meanOffset)); } return Results.newResultMap(results); } }
/** * Creates a new hash set using elements provided by an iterator. * * @param i * an iterator whose elements will fill the set. * @param f * the load factor. */ public LongLinkedOpenHashSet(final Iterator<?> i, final float f) { this(LongIterators.asLongIterator(i), f); } /**
/** * Creates a new hash big set using elements provided by an iterator. * * @param i * an iterator whose elements will fill the new hash big set. * @param f * the load factor. */ public LongOpenHashBigSet(final Iterator<?> i, final float f) { this(LongIterators.asLongIterator(i), f); } /**
/** * Creates a new array list and fills it with a given collection. * * @param c * a collection that will be used to fill the array list. */ public LongArrayList(final Collection<? extends Long> c) { this(c.size()); size = LongIterators.unwrap(LongIterators.asLongIterator(c.iterator()), a); } /**