@Test public void testEmptyScorer() { ItemScorer scorer = PrecomputedItemScorer.newBuilder().build(); assertThat(scorer.score(42, 1), nullValue()); }
/** * Construct the mock item scorer. This will empty the builder. * @return A mock item scorer that will return the configured scores. */ public PrecomputedItemScorer build() { Long2ObjectMap<KeyedObjectMap<Result>> vectors = new Long2ObjectOpenHashMap<>(userData.size()); for (Long2ObjectMap.Entry<List<Result>> entry: userData.long2ObjectEntrySet()) { vectors.put(entry.getLongKey(), KeyedObjectMap.create(entry.getValue(), Results.keyExtractor())); } userData.clear(); return new PrecomputedItemScorer(vectors); } }
try (InputStreamReader rdr = new InputStreamReader(proc.getInputStream(), Charsets.UTF_8); BufferedReader buf = new BufferedReader(rdr)) { scorer = PrecomputedItemScorer.fromCSV(buf); } catch (IOException e) { throw new ExternalProcessException("cannot open output", e);
@Test public void testMultiScore() { ItemScorer scorer = PrecomputedItemScorer.newBuilder() .addScore(42, 1, 4) .build(); LongSet items = LongUtils.packedSet(1, 3); Map<Long, Double> results = scorer.score(42, items); assertThat(results.containsKey(1L), equalTo(true)); assertThat(results.containsKey(3L), equalTo(false)); assertThat(results.get(1L), closeTo(4, 1.0e-5)); }
/** * Construct the mock item scorer. This will empty the builder. * @return A mock item scorer that will return the configured scores. */ public PrecomputedItemScorer build() { Long2ObjectMap<KeyedObjectMap<Result>> vectors = new Long2ObjectOpenHashMap<>(userData.size()); for (Long2ObjectMap.Entry<List<Result>> entry: userData.long2ObjectEntrySet()) { vectors.put(entry.getLongKey(), KeyedObjectMap.create(entry.getValue(), Results.keyExtractor())); } userData.clear(); return new PrecomputedItemScorer(vectors); } }
@Test public void testAddMultipleScores() { ItemScorer scorer = PrecomputedItemScorer.newBuilder() .addScore(42, 3, 4) .addScore(42, 7, 2) .build(); LongSet items = LongUtils.packedSet(1, 3, 5, 7, 8); Map<Long, Double> results = scorer.score(42, items); assertThat(results.keySet().size(), equalTo(2)); assertThat(results.containsKey(1L), equalTo(false)); assertThat(results.containsKey(3L), equalTo(true)); assertThat(results.containsKey(5L), equalTo(false)); assertThat(results.containsKey(7L), equalTo(true)); assertThat(results.containsKey(8L), equalTo(false)); assertThat(results.get(3L), closeTo(4, 1.0e-5)); assertThat(results.get(7L), closeTo(2, 1.0e-5)); } }
@Before public void setupScorer() { primary = PrecomputedItemScorer.newBuilder() .addScore(42, 39, 3.5) .build(); baseline = PrecomputedItemScorer.newBuilder() .addScore(42, 39, 2.0) .addScore(42, 30, 4.0) .addScore(15, 30, 5.0) .build(); scorer = new FallbackItemScorer(primary, baseline); }
@Test public void testNoScores() { StaticDataSource source = new StaticDataSource(); DataAccessObject dao = source.get(); ItemScorer scorer = PrecomputedItemScorer.newBuilder() .build(); ItemRecommender rec = new TopNItemRecommender(dao, scorer); List<Long> recs = rec.recommend(42); assertThat(recs, hasSize(0)); ResultList details = rec.recommendWithDetails(42, -1, null, null); assertThat(details, hasSize(0)); }
@Test public void testAddScore() { ItemScorer scorer = PrecomputedItemScorer.newBuilder() .addScore(42, 1, 4) .build(); assertThat(scorer.score(42, 1).getScore(), closeTo(4, 1.0e-5)); assertThat(scorer.score(42, 2), nullValue()); assertThat(scorer.score(39, 1), nullValue()); }
@Test public void testGetScoreOnly() { StaticDataSource source = new StaticDataSource(); source.addSource(ImmutableList.of(Entities.create(CommonTypes.ITEM, 3))); DataAccessObject dao = source.get(); ItemScorer scorer = PrecomputedItemScorer.newBuilder() .addScore(42, 3, 3.5) .build(); ItemRecommender rec = new TopNItemRecommender(dao, scorer); List<Long> recs = rec.recommend(42); assertThat(recs, contains(3L)); ResultList details = rec.recommendWithDetails(42, -1, null, null); assertThat(details, hasSize(1)); assertThat(Results.basicCopy(details.get(0)), equalTo(Results.create(3, 3.5))); }
@Test public void testExcludeScore() { StaticDataSource source = new StaticDataSource(); source.addSource(ImmutableList.of(Entities.create(CommonTypes.ITEM, 3))); DataAccessObject dao = source.get(); ItemScorer scorer = PrecomputedItemScorer.newBuilder() .addScore(42, 3, 3.5) .build(); ItemRecommender rec = new TopNItemRecommender(dao, scorer); List<Long> recs = rec.recommend(42, -1, null, LongSets.singleton(3L)); assertThat(recs, hasSize(0)); ResultList details = rec.recommendWithDetails(42, -1, null, LongSets.singleton(3L)); assertThat(details, hasSize(0)); }
@Before public void setUp() throws Exception { ItemScorer scorer = PrecomputedItemScorer.newBuilder() .addScore(40, 1, 4.0) .addScore(40, 2, 5.5) .addScore(40, 3, -1) .build(); PreferenceDomain domain = new PreferenceDomain(1, 5, 1); pred = new SimpleRatingPredictor(scorer, domain); unclamped = new SimpleRatingPredictor(scorer, null); }
@Test public void testFindSomeItems() { StaticDataSource source = new StaticDataSource(); source.addSource(ImmutableList.of(Entities.create(CommonTypes.ITEM, 3), Entities.create(CommonTypes.ITEM, 2), Entities.create(CommonTypes.ITEM, 7))); DataAccessObject dao = source.get(); ItemScorer scorer = PrecomputedItemScorer.newBuilder() .addScore(42, 2, 3.0) .addScore(42, 7, 1.0) .addScore(42, 3, 3.5) .build(); ItemRecommender rec = new TopNItemRecommender(dao, scorer); List<Long> recs = rec.recommend(42, 2, null, null); assertThat(recs, hasSize(2)); assertThat(recs, contains(3L, 2L)); ResultList details = rec.recommendWithDetails(42, 2, null, null); assertThat(details, hasSize(2)); assertThat(details.idList(), contains(3L, 2L)); } }
@Before public void Setup() { mockScorer = PrecomputedItemScorer.newBuilder() .addScore(1, 3, 3.5) .addScore(2, 4, 5) .addScore(2, 6, 3) .addScore(3, 1, 5) .addScore(3, 2, 4.5) .addScore(3, 3, 2.5) .addScore(3, 4, 1) .build(); cachedScorer = new SimpleCachingItemScorer(mockScorer); }
ItemScorer scorer = PrecomputedItemScorer.newBuilder() .addScore(42, 1, 1) .addScore(42, 2, 0.2)
/** * This test is to test the basic performance of OrdRecRatingPredictor, * The rating value is 1, 2, 3. The score for rating 1 is around 2, for rating 2 * is around 5, for rating 8 is around 3. So for the Ordrec predictor, given a specific * score value, and test if it can return a matched rating. */ @Test public void testOrdRecPrediction1() { ItemScorer scorer = PrecomputedItemScorer.newBuilder() .addScore(42, 1, 5) .addScore(42, 2, 2) .addScore(42, 3, 8) .addScore(42, 4, 8.2) .addScore(42, 5, 2.1) .addScore(42, 6, 4.9) .addScore(42, 7, 5) .addScore(42, 8, 8) .addScore(42, 9, 2) .addScore(42, 10, 1.9) .addScore(42, 11, 4.8) .addScore(42, 12, 8.2) .build(); OrdRecRatingPredictor ordrec = new OrdRecRatingPredictor(scorer, dao, qtz); ResultMap preds = ordrec.predictWithDetails(42, LongUtils.packedSet(10, 11, 12)); assertThat(preds.getScore(10), equalTo(1.0)); assertThat(preds.getScore(11), equalTo(2.0)); assertThat(preds.getScore(12), equalTo(3.0)); }
/** * This test is to test the basic performance of OrdRecRatingPredictor, * The rating value is 1, 2, 3. The score for rating 1 is around 1, for rating 2 * is around 2, for rating 3 is around 3. So for the Ordrec predictor, given a specific * score value, and test if it can return a matched rating. */ @Test public void testOrdRecPrediction2() { ItemScorer scorer = PrecomputedItemScorer.newBuilder() .addScore(42, 1, 2) .addScore(42, 2, 1) .addScore(42, 3, 3) .addScore(42, 4, 3) .addScore(42, 5, 1) .addScore(42, 6, 2) .addScore(42, 7, 2) .addScore(42, 8, 3) .addScore(42, 9, 1) .addScore(42, 10, 1.1) .addScore(42, 11, 1.9) .addScore(42, 12, 3.1) .build(); OrdRecRatingPredictor ordrec = new OrdRecRatingPredictor(scorer, dao, qtz); ResultMap preds = ordrec.predictWithDetails(42, LongUtils.packedSet(10, 11, 12)); assertThat(preds.getScore(10), equalTo(1.0)); assertThat(preds.getScore(11), equalTo(2.0)); assertThat(preds.getScore(12), equalTo(3.0)); }
pb.command(command).directory(workingDir); PrecomputedItemScorer.Builder builder = PrecomputedItemScorer.newBuilder();
@Before public void createModel() { baseline = PrecomputedItemScorer.newBuilder() .addScore(1, 42, 3.0) .addScore(1, 39, 2.5) .addScore(1, 25, 4.2) .addScore(5, 42, 3.7) .addScore(5, 39, 2.8) .addScore(3, 42, 2.2) .addScore(3, 39, 3.2) .addScore(17, 42, 2.5) .build(); RealMatrix umat = MatrixUtils.createRealMatrix(3, 2); umat.setRow(0, new double[]{0.1, 0.3}); umat.setRow(1, new double[]{-0.2, 0.2}); umat.setRow(2, new double[]{0.0, 0.15}); HashKeyIndex uidx = new HashKeyIndex(); uidx.internId(1); uidx.internId(5); uidx.internId(3); RealMatrix imat = MatrixUtils.createRealMatrix(2, 2); imat.setRow(0, new double[]{0.52, 0.29}); imat.setRow(1, new double[]{0.3, -1.2}); HashKeyIndex iidx = new HashKeyIndex(); iidx.internId(42); iidx.internId(39); model = new MFModel(umat, imat, uidx, iidx); // scorer = new BiasedMFItemScorer(model, baseline); }