protected AbstractItemSimilarity(DataModel dataModel) { Preconditions.checkArgument(dataModel != null, "dataModel is null"); this.dataModel = dataModel; this.refreshHelper = new RefreshHelper(null); refreshHelper.addDependency(this.dataModel); }
/** * Refresh the data model and factorization. */ @Override public void refresh(Collection<Refreshable> alreadyRefreshed) { refreshHelper.refresh(alreadyRefreshed); }
@Override public void refresh(Collection<Refreshable> alreadyRefreshed) { alreadyRefreshed = RefreshHelper.buildRefreshed(alreadyRefreshed); RefreshHelper.maybeRefresh(alreadyRefreshed, 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; }
@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()); }
/** * <p> * Creates a possibly weighted {@link AbstractSimilarity}. * </p> */ AbstractSimilarity(final DataModel dataModel, Weighting weighting, boolean centerData) throws TasteException { super(dataModel); this.weighted = weighting == Weighting.WEIGHTED; this.centerData = centerData; this.cachedNumItems = dataModel.getNumItems(); this.cachedNumUsers = dataModel.getNumUsers(); this.refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() throws TasteException { cachedNumItems = dataModel.getNumItems(); cachedNumUsers = dataModel.getNumUsers(); return null; } }); }
@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()); }
@Override public final void setPreferenceInferrer(PreferenceInferrer inferrer) { Preconditions.checkArgument(inferrer != null, "inferrer is null"); refreshHelper.addDependency(inferrer); refreshHelper.removeDependency(this.inferrer); this.inferrer = inferrer; }
/** * <p> * Creates a possibly weighted {@link AbstractSimilarity}. * </p> */ AbstractSimilarity(final DataModel dataModel, Weighting weighting, boolean centerData) throws TasteException { super(dataModel); this.weighted = weighting == Weighting.WEIGHTED; this.centerData = centerData; this.cachedNumItems = dataModel.getNumItems(); this.cachedNumUsers = dataModel.getNumUsers(); this.refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() throws TasteException { cachedNumItems = dataModel.getNumItems(); cachedNumUsers = dataModel.getNumUsers(); return null; } }); }
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 void refresh(Collection<Refreshable> alreadyRefreshed) { alreadyRefreshed = RefreshHelper.buildRefreshed(alreadyRefreshed); RefreshHelper.maybeRefresh(alreadyRefreshed, dataModel); }
@Override public void refresh(Collection<Refreshable> alreadyRefreshed) { refreshHelper.refresh(alreadyRefreshed); } }
@Override public final void setPreferenceInferrer(PreferenceInferrer inferrer) { Preconditions.checkArgument(inferrer != null, "inferrer is null"); refreshHelper.addDependency(inferrer); refreshHelper.removeDependency(this.inferrer); this.inferrer = inferrer; }
/** * <p> * Creates a possibly weighted {@link AbstractSimilarity}. * </p> */ AbstractSimilarity(final DataModel dataModel, Weighting weighting, boolean centerData) throws TasteException { super(dataModel); this.weighted = weighting == Weighting.WEIGHTED; this.centerData = centerData; this.cachedNumItems = dataModel.getNumItems(); this.cachedNumUsers = dataModel.getNumUsers(); this.refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() throws TasteException { cachedNumItems = dataModel.getNumItems(); cachedNumUsers = dataModel.getNumUsers(); return null; } }); }
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 void refresh(Collection<Refreshable> alreadyRefreshed) { alreadyRefreshed = RefreshHelper.buildRefreshed(alreadyRefreshed); RefreshHelper.maybeRefresh(alreadyRefreshed, dataModel); }
@Override public void refresh(Collection<Refreshable> alreadyRefreshed) { refreshHelper.refresh(alreadyRefreshed); }
@Test public void testNoCallable() { Refreshable helper = new RefreshHelper(null); helper.refresh(null); }
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 void refresh(Collection<Refreshable> alreadyRefreshed) { neighborhoodCache.clear(); Collection<Refreshable> refreshed = RefreshHelper.buildRefreshed(alreadyRefreshed); RefreshHelper.maybeRefresh(refreshed, neighborhood); }