private Map<Integer, Double> getAverageUserRatingMap(final Integer tenantId, final Integer itemTypeId) { final List<RatingVO<Integer, Integer>> averageRatings = latestActionDao .getAverageRatingsForUser(tenantId, itemTypeId); final Map<Integer, Double> result = new HashMap<Integer, Double>(averageRatings.size()); for (final RatingVO<Integer, Integer> averageRating : averageRatings) result.put(averageRating.getUser(), averageRating.getRatingValue()); return result; }
@Override protected double getAverage1(final RatedTogether<Integer, Integer> ratedTogether, final Map<Integer, RatingVO<Integer, Integer>> averageRatings) { return averageRatings.get(ratedTogether.getRating1().getUser()).getRatingValue(); }
@Override protected double getAverage2(final RatedTogether<Integer, Integer> ratedTogether, final Map<Integer, RatingVO<Integer, Integer>> averageRatings) { return averageRatings.get(ratedTogether.getRating1().getUser()).getRatingValue(); }
@Override protected double getAverage2(final RatedTogether<Integer, Integer> ratedTogether, final Map<Integer, RatingVO<Integer, Integer>> averageRatings) { return averageRatings.get(ratedTogether.getRating2().getItem().getItem()).getRatingValue(); }
public List<RatingVO<Integer, Integer>> getAverageRatingsForUser(final Integer tenantId, final Integer itemTypeId) { Map<Integer, Double> sum = new HashMap<Integer, Double>(); Map<Integer, Integer> count = new HashMap<Integer, Integer>(); for (RatingVO<Integer, Integer> rating : ratings) { if (!tenantId.equals(rating.getItem().getTenant())) continue; if (!itemTypeId.equals(rating.getItem().getType())) continue; Integer key = rating.getUser(); if (!sum.containsKey(key)) { sum.put(key, 0.0); count.put(key, 0); } sum.put(key, sum.get(key) + rating.getRatingValue()); count.put(key, count.get(key) + 1); } List<RatingVO<Integer, Integer>> result = new ArrayList<RatingVO<Integer, Integer>>( sum.size()); for (Integer key : sum.keySet()) { RatingVO<Integer, Integer> rating = new RatingVO<Integer, Integer>(null, sum.get(key) / count.get(key), count.get(key), null, key, null); result.add(rating); } return result; }
@Override protected double getAverage1(final RatedTogether<Integer, Integer> ratedTogether, final Map<Integer, RatingVO<Integer, Integer>> averageRatings) { return averageRatings.get(ratedTogether.getRating1().getItem().getItem()).getRatingValue(); }
public List<RatingVO<Integer, Integer>> getAverageRatingsForItem(final Integer tenantId, final Integer itemTypeId) { Map<Integer, Double> sum = new HashMap<Integer, Double>(); Map<Integer, Integer> count = new HashMap<Integer, Integer>(); for (RatingVO<Integer, Integer> rating : ratings) { if (!tenantId.equals(rating.getItem().getTenant())) continue; if (!itemTypeId.equals(rating.getItem().getType())) continue; Integer key = rating.getItem().getItem(); if (!sum.containsKey(key)) { sum.put(key, 0.0); count.put(key, 0); } sum.put(key, sum.get(key) + rating.getRatingValue()); count.put(key, count.get(key) + 1); } List<RatingVO<Integer, Integer>> result = new ArrayList<RatingVO<Integer, Integer>>( sum.size()); for (Integer key : sum.keySet()) { RatingVO<Integer, Integer> rating = new RatingVO<Integer, Integer>( new ItemVO<Integer, Integer>(tenantId, key, itemTypeId), sum.get(key) / count.get(key), count.get(key), null, null, null); result.add(rating); } return result; }
final double ratingActive = rating.getRating1().getRatingValue(); final double ratingOther = rating.getRating2().getRatingValue();
private double plainRecommendations(final RatingVO<Integer, Integer> rating, final List<Deviation> deviations) { double numerator = 0.0; long denominator = 0L; int itemId = rating.getItem().getItem(); for (Deviation deviation : deviations) { if (deviation.getItem2Id() == itemId) continue; numerator += deviation.getDeviation() * rating.getRatingValue(); denominator++; } return numerator / denominator; } }
double userRating = ratingOfUser.getRatingValue();
final RatingVO<Integer, Integer> rating2 = rated.getRating2(); final double rating1diff = rating1.getRatingValue() - averageItem1; final double rating2diff = rating2.getRatingValue() - averageItem2; final double rating1diffSquared = Math.pow(rating1diff, 2); final double rating2diffSquared = Math.pow(rating2diff, 2);
rating1 = new RatingVO<Integer, Integer>(rating1.getItem(), rating1.getRatingValue(), rating1.getCount(), null, rating1.getUser(), null); rating2 = new RatingVO<Integer, Integer>(rating2.getItem(), rating2.getRatingValue(), rating2.getCount(), null, rating2.getUser(), null);
diff = swapped ? rating1.getRatingValue() + rating2.getRatingValue() : rating1.getRatingValue() - rating2.getRatingValue();
if (ratingsOther.size() == 1) ratingOther = ratingsOther.get(0).getRatingValue(); else
private double weightedRecommendations(final RatingVO<Integer, Integer> rating, final List<Deviation> deviations) { double numerator = 0.0; long denominator = 0L; int itemId = rating.getItem().getItem(); for (Deviation deviation : deviations) { if (deviation.getItem2Id() == itemId) continue; numerator += (deviation.getDeviation() * rating.getRatingValue()) * deviation.getDenominator(); denominator += deviation.getDenominator(); } return numerator / denominator; }
@Override public RatingVO<Integer, String> convertRatingVO(Integer tenantId, RatingVO<Integer, Integer> rating) { if (rating == null) { return null; } return new RatingVO<Integer, String>( convertItemVO(tenantId, rating.getItem()), rating.getRatingValue(), rating.getCount(), rating.getLastActionTime(), rating.getUser(), rating.getSessionId()); }
@Override public RatingVO<Integer, Integer> convertTypedRatingVO(Integer tenantId, RatingVO<Integer, String> typedRating) { if (typedRating == null) { return null; } return new RatingVO<Integer, Integer>( convertTypedItemVO(tenantId, typedRating.getItem()), typedRating.getRatingValue(), typedRating.getCount(), typedRating.getLastActionTime(), typedRating.getUser(), typedRating.getSessionId()); }