Exemple #1
0
 public GenericUserBasedRecommender(IDataModel dataModel,
                                    IUserNeighborhood neighborhood,
                                    IUserSimilarity similarity) : base(dataModel)
 {
     //Preconditions.checkArgument(neighborhood != null, "neighborhood is null");
     this.neighborhood  = neighborhood;
     this.similarity    = similarity;
     this.refreshHelper = new RefreshHelper(() => {
         capper = buildCapper();
     });
     refreshHelper.AddDependency(dataModel);
     refreshHelper.AddDependency(similarity);
     refreshHelper.AddDependency(neighborhood);
     capper = buildCapper();
 }
 public void SetPreferenceInferrer(IPreferenceInferrer inferrer)
 {
     //Preconditions.checkArgument(inferrer != null, "inferrer is null");
     refreshHelper.AddDependency(inferrer);
     refreshHelper.RemoveDependency(this.inferrer);
     this.inferrer = inferrer;
 }
 protected AbstractItemSimilarity(IDataModel dataModel)
 {
     //Preconditions.checkArgument(dataModel != null, "dataModel is null");
     this.dataModel     = dataModel;
     this.refreshHelper = new RefreshHelper(null);
     refreshHelper.AddDependency(this.dataModel);
 }
 protected AbstractFactorizer(IDataModel dataModel)
 {
     this.dataModel = dataModel;
     buildMappings();
     refreshHelper = new RefreshHelper(() => {
         buildMappings();
     });
     refreshHelper.AddDependency(dataModel);
 }
 public ItemAverageRecommender(IDataModel dataModel) : base(dataModel)
 {
     this.itemAverages  = new FastByIDMap <IRunningAverage>();
     this.refreshHelper = new RefreshHelper(() => {
         buildAverageDiffs();
     });
     refreshHelper.AddDependency(dataModel);
     buildAverageDiffs();
 }
 /// Creates this on top of the given {@link UserSimilarity}.
 /// The cache size is capped by the given size.
 public CachingUserSimilarity(IUserSimilarity similarity, int maxCacheSize)
 {
     //Preconditions.checkArgument(similarity != null, "similarity is null");
     this.similarity      = similarity;
     this.similarityCache = new Cache <Tuple <long, long>, Double>(new SimilarityRetriever(similarity), maxCacheSize);
     this.refreshHelper   = new RefreshHelper(() => {
         similarityCache.Clear();
     });
     refreshHelper.AddDependency(similarity);
 }
Exemple #7
0
 public GenericItemBasedRecommender(IDataModel dataModel,
                                    IItemSimilarity similarity,
                                    ICandidateItemsStrategy candidateItemsStrategy,
                                    IMostSimilarItemsCandidateItemsStrategy mostSimilarItemsCandidateItemsStrategy) :
     base(dataModel, candidateItemsStrategy)
 {
     //Preconditions.checkArgument(similarity != null, "similarity is null");
     this.similarity = similarity;
     //Preconditions.checkArgument(mostSimilarItemsCandidateItemsStrategy != null,
     //    "mostSimilarItemsCandidateItemsStrategy is null");
     this.mostSimilarItemsCandidateItemsStrategy = mostSimilarItemsCandidateItemsStrategy;
     this.refreshHelper = new RefreshHelper(() => {
         capper = buildCapper();
     });
     refreshHelper.AddDependency(dataModel);
     refreshHelper.AddDependency(similarity);
     refreshHelper.AddDependency(candidateItemsStrategy);
     refreshHelper.AddDependency(mostSimilarItemsCandidateItemsStrategy);
     capper = buildCapper();
 }
Exemple #8
0
 public ItemUserAverageRecommender(IDataModel dataModel) : base(dataModel)
 {
     this.itemAverages            = new FastByIDMap <IRunningAverage>();
     this.userAverages            = new FastByIDMap <IRunningAverage>();
     this.overallAveragePrefValue = new FullRunningAverage();
     //this.buildAveragesLock = new ReentrantReadWriteLock();
     this.refreshHelper = new RefreshHelper(() => {
         buildAverageDiffs();
     });
     refreshHelper.AddDependency(dataModel);
     buildAverageDiffs();
 }
        /// Create an SVDRecommender using a persistent store to cache factorizations. A factorization is loaded from the
        /// store if present, otherwise a new factorization is computed and saved in the store.
        ///
        /// The {@link #refresh(java.util.Collection) refresh} method recomputes the factorization and overwrites the store.
        ///
        /// @param dataModel
        /// @param factorizer
        /// @param candidateItemsStrategy
        /// @param persistenceStrategy
        ///
        /// @throws TasteException
        public SVDRecommender(IDataModel dataModel, IFactorizer factorizer, ICandidateItemsStrategy candidateItemsStrategy,
                              IPersistenceStrategy persistenceStrategy) : base(dataModel, candidateItemsStrategy)
        {
            this.factorizer          = factorizer;          //Preconditions.checkNotNull(factorizer);
            this.persistenceStrategy = persistenceStrategy; // Preconditions.checkNotNull(persistenceStrategy);
            try {
                factorization = persistenceStrategy.Load();
            } catch (IOException e) {
                throw new TasteException("Error loading factorization", e);
            }

            if (factorization == null)
            {
                train();
            }

            refreshHelper = new RefreshHelper(() => {
                train();
            });
            refreshHelper.AddDependency(GetDataModel());
            refreshHelper.AddDependency(factorizer);
            refreshHelper.AddDependency(candidateItemsStrategy);
        }
Exemple #10
0
        public CachingRecommender(IRecommender recommender)
        {
            //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(this);
            recommendationCache      = new Cache <long, Recommendations>(recommendationsRetriever, numUsers);
            estimatedPrefCache       = new Cache <Tuple <long, long>, float>(new EstimatedPrefRetriever(this), numUsers);
            refreshHelper            = new RefreshHelper(() => {
                clear();
            });
            refreshHelper.AddDependency(recommender);
        }