AbstractUserNeighborhood(UserSimilarity userSimilarity, DataModel dataModel, double samplingRate) { Preconditions.checkArgument(userSimilarity != null, "userSimilarity is null"); Preconditions.checkArgument(dataModel != null, "dataModel is null"); Preconditions.checkArgument(samplingRate > 0.0 && samplingRate <= 1.0, "samplingRate must be in (0,1]"); this.userSimilarity = userSimilarity; this.dataModel = dataModel; this.samplingRate = samplingRate; this.refreshHelper = new RefreshHelper(null); this.refreshHelper.addDependency(this.dataModel); this.refreshHelper.addDependency(this.userSimilarity); }
AbstractUserNeighborhood(UserSimilarity userSimilarity, DataModel dataModel, double samplingRate) { Preconditions.checkArgument(userSimilarity != null, "userSimilarity is null"); Preconditions.checkArgument(dataModel != null, "dataModel is null"); Preconditions.checkArgument(samplingRate > 0.0 && samplingRate <= 1.0, "samplingRate must be in (0,1]"); this.userSimilarity = userSimilarity; this.dataModel = dataModel; this.samplingRate = samplingRate; this.refreshHelper = new RefreshHelper(null); this.refreshHelper.addDependency(this.dataModel); this.refreshHelper.addDependency(this.userSimilarity); }
AbstractUserNeighborhood(UserSimilarity userSimilarity, DataModel dataModel, double samplingRate) { Preconditions.checkArgument(userSimilarity != null, "userSimilarity is null"); Preconditions.checkArgument(dataModel != null, "dataModel is null"); Preconditions.checkArgument(samplingRate > 0.0 && samplingRate <= 1.0, "samplingRate must be in (0,1]"); this.userSimilarity = userSimilarity; this.dataModel = dataModel; this.samplingRate = samplingRate; this.refreshHelper = new RefreshHelper(null); this.refreshHelper.addDependency(this.dataModel); this.refreshHelper.addDependency(this.userSimilarity); }
@Override public final void setPreferenceInferrer(PreferenceInferrer inferrer) { Preconditions.checkArgument(inferrer != null, "inferrer is null"); refreshHelper.addDependency(inferrer); refreshHelper.removeDependency(this.inferrer); this.inferrer = inferrer; }
protected AbstractItemSimilarity(DataModel dataModel) { Preconditions.checkArgument(dataModel != null, "dataModel is null"); this.dataModel = dataModel; this.refreshHelper = new RefreshHelper(null); refreshHelper.addDependency(this.dataModel); }
protected AbstractItemSimilarity(DataModel dataModel) { Preconditions.checkArgument(dataModel != null, "dataModel is null"); this.dataModel = dataModel; this.refreshHelper = new RefreshHelper(null); refreshHelper.addDependency(this.dataModel); }
@Override public final void setPreferenceInferrer(PreferenceInferrer inferrer) { Preconditions.checkArgument(inferrer != null, "inferrer is null"); refreshHelper.addDependency(inferrer); refreshHelper.removeDependency(this.inferrer); this.inferrer = inferrer; }
protected AbstractItemSimilarity(DataModel dataModel) { Preconditions.checkArgument(dataModel != null, "dataModel is null"); this.dataModel = dataModel; this.refreshHelper = new RefreshHelper(null); refreshHelper.addDependency(this.dataModel); }
@Override public final void setPreferenceInferrer(PreferenceInferrer inferrer) { Preconditions.checkArgument(inferrer != null, "inferrer is null"); refreshHelper.addDependency(inferrer); refreshHelper.removeDependency(this.inferrer); this.inferrer = inferrer; }
protected AbstractFactorizer(DataModel dataModel) throws TasteException { this.dataModel = dataModel; buildMappings(); refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() throws TasteException { buildMappings(); return null; } }); refreshHelper.addDependency(dataModel); }
protected AbstractFactorizer(DataModel dataModel) throws TasteException { this.dataModel = dataModel; buildMappings(); refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() throws TasteException { buildMappings(); return null; } }); refreshHelper.addDependency(dataModel); }
protected AbstractFactorizer(DataModel dataModel) throws TasteException { this.dataModel = dataModel; buildMappings(); refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() throws TasteException { buildMappings(); return null; } }); refreshHelper.addDependency(dataModel); }
public ItemAverageRecommender(DataModel dataModel) throws TasteException { super(dataModel); this.itemAverages = new FastByIDMap<RunningAverage>(); this.buildAveragesLock = new ReentrantReadWriteLock(); this.refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() throws TasteException { buildAverageDiffs(); return null; } }); refreshHelper.addDependency(dataModel); buildAverageDiffs(); }
public ItemAverageRecommender(DataModel dataModel) throws TasteException { super(dataModel); this.itemAverages = new FastByIDMap<RunningAverage>(); this.buildAveragesLock = new ReentrantReadWriteLock(); this.refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() throws TasteException { buildAverageDiffs(); return null; } }); refreshHelper.addDependency(dataModel); buildAverageDiffs(); }
public ItemAverageRecommender(DataModel dataModel) throws TasteException { super(dataModel); this.itemAverages = new FastByIDMap<>(); this.buildAveragesLock = new ReentrantReadWriteLock(); this.refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() throws TasteException { buildAverageDiffs(); return null; } }); refreshHelper.addDependency(dataModel); buildAverageDiffs(); }
/** * Creates this on top of the given {@link UserSimilarity}. * The cache size is capped by the given size. */ public CachingUserSimilarity(UserSimilarity similarity, int maxCacheSize) { Preconditions.checkArgument(similarity != null, "similarity is null"); this.similarity = similarity; this.similarityCache = new Cache<LongPair,Double>(new SimilarityRetriever(similarity), maxCacheSize); this.refreshHelper = new RefreshHelper(new Callable<Void>() { @Override public Void call() { similarityCache.clear(); return null; } }); refreshHelper.addDependency(similarity); }
public ItemUserAverageRecommender(DataModel dataModel) throws TasteException { super(dataModel); this.itemAverages = new FastByIDMap<>(); this.userAverages = new FastByIDMap<>(); this.overallAveragePrefValue = new FullRunningAverage(); this.buildAveragesLock = new ReentrantReadWriteLock(); this.refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() throws TasteException { buildAverageDiffs(); return null; } }); refreshHelper.addDependency(dataModel); buildAverageDiffs(); }
public CachingRecommender(Recommender recommender) throws TasteException { Preconditions.checkArgument(recommender != null, "recommender is null"); this.recommender = recommender; maxHowMany = new int[]{1}; // Use "num users" as an upper limit on cache size. Rough guess. int numUsers = recommender.getDataModel().getNumUsers(); recommendationsRetriever = new RecommendationRetriever(); recommendationCache = new Cache<Long, Recommendations>(recommendationsRetriever, numUsers); estimatedPrefCache = new Cache<LongPair, Float>(new EstimatedPrefRetriever(), numUsers); refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() { clear(); return null; } }); refreshHelper.addDependency(recommender); }
@Test public void testAlreadyRefreshed() { RefreshHelper helper = new RefreshHelper(null); MockRefreshable mock1 = new MockRefreshable(); MockRefreshable mock2 = new MockRefreshable(); helper.addDependency(mock1); helper.addDependency(mock2); Collection<Refreshable> alreadyRefreshed = Sets.newHashSetWithExpectedSize(1); alreadyRefreshed.add(mock1); helper.refresh(alreadyRefreshed); assertEquals(0, mock1.getCallCount()); assertEquals(1, mock2.getCallCount()); }
@Test public void testDependencies() { RefreshHelper helper = new RefreshHelper(null); MockRefreshable mock1 = new MockRefreshable(); MockRefreshable mock2 = new MockRefreshable(); helper.addDependency(mock1); helper.addDependency(mock2); helper.refresh(null); assertEquals(1, mock1.getCallCount()); assertEquals(1, mock2.getCallCount()); }