/** * Create a new rating object with no timestamp. * * @param uid The user ID. * @param iid The item ID. * @param rating The rating value. Cannot be NaN. * @return The new rating object. * @see #create(long, long, double, long) * @deprecated Use {@link EntityFactory#rating(long, long, double)} */ @Deprecated public static Rating create(long uid, long iid, double rating) { return create(uid, iid, rating, -1); }
public TestUserBuilder addTestRating(long iid, double score) { addTestEntity(Rating.create(userId, iid, score)); return this; }
private static Rating rating(long uid, long iid, double value, long ts) { return Rating.create(uid, iid, value, ts); }
private static Preference entry(long uid, long iid, double value) { return Rating.create(uid, iid, value); }
private void addRating(List<Rating> ratings, long uid, long iid, double value) { ratings.add(Rating.create(uid, iid, value)); }
@Before public void setup() throws RecommenderBuildException { List<Rating> rs = new ArrayList<>(); rs.add(Rating.create(1, 5, 2)); rs.add(Rating.create(1, 7, 4)); rs.add(Rating.create(8, 4, 5)); rs.add(Rating.create(8, 5, 4)); StaticDataSource source = StaticDataSource.fromList(rs); dao = source.get(); }
@SuppressWarnings("deprecation") @Before public void createPredictor() throws RecommenderBuildException { rs.add(Rating.create(14, 1, 5)); rs.add(Rating.create(14, 2, 4)); rs.add(Rating.create(14, 3, 3)); rs.add(Rating.create(14, 4, 2)); rs.add(Rating.create(14, 5, 0.2)); rs.add(Rating.create(15, 5, 1)); rs.add(Rating.create(15, 6, 2)); rs.add(Rating.create(15, 7, 3)); rs.add(Rating.create(15, 8, 4)); rs.add(Rating.create(15, 9, 5)); StaticDataSource src = new StaticDataSource(); src.addSource(rs); dao = src.get(); }
@Test public void testTimestamp() { List<Rating> events = new ArrayList<>(); events.add(Rating.create(42, 1, 3.5, 100)); events.add(Rating.create(42, 2, 4.0, 105)); events.add(Rating.create(42, 3, 2.5, 98)); List<Rating> copy = new ArrayList<>(events); SortOrder.TIMESTAMP.apply(copy, new Random()); assertThat(copy, hasSize(3)); assertThat(copy, contains(Rating.create(42, 3, 2.5, 98), Rating.create(42, 1, 3.5, 100), Rating.create(42, 2, 4.0, 105))); } }
@Test public void testRandom() { List<Rating> events = new ArrayList<>(); events.add(Rating.create(42, 1, 3.5, 100)); events.add(Rating.create(42, 2, 4.0, 105)); events.add(Rating.create(42, 3, 2.5, 98)); List<Rating> copy = new ArrayList<>(events); SortOrder.RANDOM.apply(copy, new Random()); assertThat(copy, hasSize(3)); for (Rating e: events) { assertThat(copy, hasItem(e)); } }
@Before public void setUp() { List<Rating> ratings = ImmutableList.of(Rating.create(42, 1, 3.2), Rating.create(39, 1, 2.4), Rating.create(42, 2, 2.5)); StaticDataSource source = StaticDataSource.fromList(ratings); dao = source.get(); statistics = InteractionStatistics.create(dao); recommender = new PopularityRankItemScorer(statistics); }
@Before public void setUp() { List<Rating> ratings = ImmutableList.of(Rating.create(42, 1, 3.2), Rating.create(39, 1, 2.4), Rating.create(42, 2, 2.5)); StaticDataSource source = StaticDataSource.fromList(ratings); dao = source.get(); statistics = InteractionStatistics.create(dao); recommender = new PopularItemRecommender(statistics, dao); }
@Test public void testBuild1() { List<Rating> rs = new ArrayList<>(); rs.add(Rating.create(1, 5, 2)); rs.add(Rating.create(2, 5, 4)); rs.add(Rating.create(1, 3, 5)); rs.add(Rating.create(2, 3, 4)); SlopeOneModel model1 = getModel(rs); assertEquals(2, model1.getCoratings(5, 3)); assertEquals(2, model1.getCoratings(3, 5)); assertEquals(-1.5, model1.getDeviation(5, 3), EPSILON); assertEquals(1.5, model1.getDeviation(3, 5), EPSILON); }
@Test public void testGetValueOfRating() { Rating rating = Rating.create(1, 2, 3.0, 3); assertThat(rating.getValue(), equalTo(3.0)); }
@SuppressWarnings("deprecation") @Before public void setup() throws RecommenderBuildException { List<Rating> rs = new ArrayList<>(); rs.add(Rating.create(1, 5, 2)); rs.add(Rating.create(1, 7, 4)); rs.add(Rating.create(8, 4, 5)); rs.add(Rating.create(8, 5, 4)); StaticDataSource source = StaticDataSource.fromList(rs); LenskitConfiguration config = new LenskitConfiguration(); config.bind(DataAccessObject.class).toProvider(source); config.bind(ItemScorer.class).to(ItemItemScorer.class); config.bind(ItemBasedItemScorer.class).to(ItemItemItemBasedItemScorer.class); // this is the default // factory.setComponent(UserVectorNormalizer.class, VectorNormalizer.class, // IdentityVectorNormalizer.class); engine = LenskitRecommenderEngine.build(config); }
@SuppressWarnings("deprecation") @Before public void setup() throws RecommenderBuildException { List<Rating> rs = new ArrayList<>(); rs.add(Rating.create(1, 5, 2)); rs.add(Rating.create(1, 7, 4)); rs.add(Rating.create(8, 4, 5)); rs.add(Rating.create(8, 5, 4)); StaticDataSource source = StaticDataSource.fromList(rs); DataAccessObject dao = source.get(); LenskitConfiguration config = new LenskitConfiguration(); config.bind(DataAccessObject.class).to(dao); config.bind(ItemScorer.class).to(UserUserItemScorer.class); config.bind(NeighborFinder.class).to(LiveNeighborFinder.class); engine = LenskitRecommenderEngine.build(config); }
@Test public void testURVRatingsInOrder() { List<Rating> ratings = new ArrayList<>(); ratings.add(Rating.create(1, 2, 3.0, 3)); ratings.add(Rating.create(1, 3, 4.5, 7)); ratings.add(Rating.create(1, 5, 2.3, 10)); Long2DoubleMap urv = Ratings.userRatingVector(ratings); assertThat(urv.isEmpty(), equalTo(false)); assertThat(urv.size(), equalTo(3)); assertThat(urv.get(2), closeTo(3.0, 1.0e-6)); assertThat(urv.get(3), closeTo(4.5, 1.0e-6)); assertThat(urv.get(5), closeTo(2.3, 1.0e-6)); assertThat(urv.containsKey(1), equalTo(false)); }
@Test public void testURVRatingsOutOfOrder() { List<Rating> ratings = new ArrayList<>(); ratings.add(Rating.create(1, 2, 3.0, 3)); ratings.add(Rating.create(1, 5, 2.3, 7)); ratings.add(Rating.create(1, 3, 4.5, 10)); Long2DoubleMap urv = Ratings.userRatingVector(ratings); assertThat(urv.isEmpty(), equalTo(false)); assertThat(urv.size(), equalTo(3)); assertThat(urv.get(2), closeTo(3.0, 1.0e-6)); assertThat(urv.get(3), closeTo(4.5, 1.0e-6)); assertThat(urv.get(5), closeTo(2.3, 1.0e-6)); assertThat(urv.containsKey(1), equalTo(false)); }
@Test public void testIRVRatings() { List<Rating> ratings = new ArrayList<>(); ratings.add(Rating.create(1, 2, 3.0, 1)); ratings.add(Rating.create(2, 2, 2.3, 3)); ratings.add(Rating.create(3, 2, 4.5, 10)); Long2DoubleMap urv = Ratings.itemRatingVector(ratings); assertThat(urv.isEmpty(), equalTo(false)); assertThat(urv.size(), equalTo(3)); assertThat(urv.get(1), closeTo(3.0, 1.0e-6)); assertThat(urv.get(3), closeTo(4.5, 1.0e-6)); assertThat(urv.get(2), closeTo(2.3, 1.0e-6)); assertThat(urv.containsKey(5), equalTo(false)); }