@Override public void to(@Nonnull Class<? extends T> impl, boolean chained) { binding.to(impl, chained); }
@Override public void to(@Nonnull Class<? extends T> impl) { binding.to(impl); }
@Override public void to(@Nullable T instance) { T obj = instance; if (coercion != null && obj != null) { Optional<T> result = coercion.apply(instance); assert result != null; if (result.isPresent()) { obj = result.get(); } // otherwise, just try to use the object as-is, let Binding fail } binding.to(obj); }
private LenskitRecommenderEngine makeEngine() throws RecommenderBuildException { LenskitConfiguration config = new LenskitConfiguration(); config.bind(RatingMatrix.class) .to(PackedRatingMatrix.class); config.bind(ItemScorer.class) .to(HPFItemScorer.class); config.bind(HPFModel.class) .toProvider(HPFModelProvider.class); config.set(ConvergenceCheckFrequency.class) .to(2); config.set(StoppingThreshold.class) .to(0.000001); config.set(FeatureCount.class) .to(5); config.set(SplitProportion.class) .to(0.1); // config.set(RandomSeed.class) // .to(System.currentTimeMillis()); config.set(IterationCount.class) .to(1000); config.set(IsProbabilityPrediction.class) .to(false); return LenskitRecommenderEngine.build(config, dao); }
@Test public void testInject() throws RecommenderBuildException { LenskitConfiguration config = new LenskitConfiguration(); config.addComponent(EntityCollectionDAO.create()); config.bind(ItemScorer.class).to(ConstantItemScorer.class); config.set(ConstantItemScorer.Value.class).to(Math.PI); try (LenskitRecommender rec = LenskitRecommenderEngine.build(config).createRecommender()) { ItemScorer scorer = rec.getItemScorer(); assertThat(scorer, notNullValue()); assertThat(scorer, instanceOf(ConstantItemScorer.class)); Map<Long, Double> v = scorer.score(42, LongUtils.packedSet(1, 2, 3, 5, 7)); assertThat(v.keySet(), hasSize(5)); assertThat(v.keySet(), containsInAnyOrder(1L, 2L, 3L, 5L, 7L)); assertThat(v.values(), everyItem(equalTo(Math.PI))); } } }
@Test public void testRecommendWithMinCommonUsers3() { config.set(MinCommonUsers.class).to(3); session = LenskitRecommenderEngine.build(config, data).createRecommender(data); recommender = session.getItemRecommender(); List<Long> recs = recommender.recommend(2); assertThat(recs, hasSize(0)); }
@SuppressWarnings({"deprecation", "unchecked"}) private LenskitRecommenderEngine makeEngine() throws RecommenderBuildException { LenskitConfiguration config = new LenskitConfiguration(); config.bind(RatingMatrix.class) .to(PackedRatingMatrix.class); config.bind(ItemScorer.class) .to(FunkSVDItemScorer.class); config.bind(BiasModel.class).to(UserItemBiasModel.class); config.set(IterationCount.class) .to(10); config.set(FeatureCount.class) .to(20); return LenskitRecommenderEngine.build(config, dao); }
@SuppressWarnings("unchecked") @Override protected void configureAlgorithm(LenskitConfiguration config) { config.bind(ItemScorer.class) .to(FunkSVDItemScorer.class); config.bind(BaselineScorer.class, ItemScorer.class) .to(UserMeanItemScorer.class); config.bind(UserMeanBaseline.class, ItemScorer.class) .to(ItemMeanRatingItemScorer.class); config.within(BaselineScorer.class, ItemScorer.class) .set(MeanDamping.class) .to(10); config.set(FeatureCount.class).to(25); config.set(IterationCount.class).to(125); config.bind(RatingPredictor.class) .to(OrdRecRatingPredictor.class); config.bind(Quantizer.class) .to(PreferenceDomainQuantizer.class); }
@Override public void to(@Nonnull Class<? extends T> impl) { binding.to(impl); }
@Override public void to(@Nonnull Class<? extends T> impl, boolean chained) { binding.to(impl, chained); }
@Test public void testRecommendWithMinCommonUsers() { config.set(MinCommonUsers.class).to(1); session = LenskitRecommenderEngine.build(config, data).createRecommender(data); recommender = session.getItemRecommender(); List<Long> recs = recommender.recommend(1); assertThat(recs, hasSize(0)); recs = recommender.recommend(2); assertThat(recs, contains(9L)); }
@Override public void to(@Nullable T instance) { T obj = instance; if (coercion != null && obj != null) { Optional<T> result = coercion.apply(instance); assert result != null; if (result.isPresent()) { obj = result.get(); } // otherwise, just try to use the object as-is, let Binding fail } binding.to(obj); }
getProperties().setProperty(RecommendationRunner.NEIGHBORHOOD, Math.round(Math.sqrt(nItems)) + ""); config.set(NeighborhoodSize.class).to(Integer.parseInt(getProperties().getProperty(RecommendationRunner.NEIGHBORHOOD))); config.bind(StoppingCondition.class).to(IterationCountStoppingCondition.class); config.bind(BiasModel.class).to(UserItemBiasModel.class); config.set(IterationCount.class).to(DEFAULT_ITERATIONS); if (getProperties().getProperty(RecommendationRunner.FACTORS).equals("-1")) { getProperties().setProperty(RecommendationRunner.FACTORS, Math.round(Math.sqrt(nItems)) + ""); config.set(FeatureCount.class).to(Integer.parseInt(getProperties().getProperty(RecommendationRunner.FACTORS)));