public GenericItemBasedRecommender(IDataModel dataModel, IItemSimilarity similarity) : this(dataModel, similarity, AbstractRecommender.GetDefaultCandidateItemsStrategy(), getDefaultMostSimilarItemsCandidateItemsStrategy()) { }
internal DataModelSimilaritiesIterator(IItemSimilarity otherSimilarity, long[] itemIDs) { this.otherSimilarity = otherSimilarity; this.itemIDs = itemIDs; i = 0; itemID1 = itemIDs[0]; j = 1; }
internal MultiMostSimilarEstimator(long[] toItemIDs, IItemSimilarity similarity, IRescorer <Tuple <long, long> > rescorer, bool excludeItemIfNotSimilarToAll) { this.toItemIDs = toItemIDs; this.similarity = similarity; this.rescorer = rescorer; this.excludeItemIfNotSimilarToAll = excludeItemIfNotSimilarToAll; }
/// Creates this on top of the given {@link ItemSimilarity}. /// The cache size is capped by the given size. public CachingItemSimilarity(IItemSimilarity 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); }
/// <p> /// Like {@link #GenericItemSimilarity(ItemSimilarity, DataModel)} )}, but will only keep the specified /// number of similarities from the given {@link DataModel}. It will keep those with the highest similarity /// -- those that are therefore most important. /// </p> /// /// <p> /// Thanks to tsmorton for suggesting this and providing part of the implementation. /// </p> /// /// @param otherSimilarity /// other {@link ItemSimilarity} to get similarities from /// @param dataModel /// data model to get items from /// @param maxToKeep /// maximum number of similarities to keep /// @throws TasteException /// if an error occurs while accessing the {@link DataModel} items public GenericItemSimilarity(IItemSimilarity otherSimilarity, IDataModel dataModel, int maxToKeep) { long[] itemIDs = GenericUserSimilarity.longIteratorToList(dataModel.GetItemIDs()); var it = new DataModelSimilaritiesIterator(otherSimilarity, itemIDs); var keptSimilarities = TopItems.GetTopItemItemSimilarities(maxToKeep, it); initSimilarityMaps(keptSimilarities.GetEnumerator()); }
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(); }
public AllSimilarItemsCandidateItemsStrategy(IItemSimilarity similarity) { //Preconditions.checkArgument(similarity != null, "similarity is null"); this.similarity = similarity; }
public GenericBooleanPrefItemBasedRecommender(IDataModel dataModel, IItemSimilarity similarity, ICandidateItemsStrategy candidateItemsStrategy, IMostSimilarItemsCandidateItemsStrategy mostSimilarItemsCandidateItemsStrategy) : base(dataModel, similarity, candidateItemsStrategy, mostSimilarItemsCandidateItemsStrategy) { }
public GenericBooleanPrefItemBasedRecommender(IDataModel dataModel, IItemSimilarity similarity) : base(dataModel, similarity) { }
internal SimilarityRetriever(IItemSimilarity similarity) { this.similarity = similarity; }
/// Creates this on top of the given {@link ItemSimilarity}. /// The cache is sized according to properties of the given {@link DataModel}. public CachingItemSimilarity(IItemSimilarity similarity, IDataModel dataModel) : this(similarity, dataModel.GetNumItems()) { ; }
/// <p> /// Builds a list of item-item similarities given an {@link ItemSimilarity} implementation and a /// {@link DataModel}, rather than a list of {@link ItemItemSimilarity}s. /// </p> /// /// <p> /// It's valid to build a {@link GenericItemSimilarity} this way, but perhaps missing some of the point of an /// item-based recommender. Item-based recommenders use the assumption that item-item similarities are /// relatively fixed, and might be known already independent of user preferences. Hence it is useful to /// inject that information, using {@link #GenericItemSimilarity(Iterable)}. /// </p> /// /// @param otherSimilarity /// other {@link ItemSimilarity} to get similarities from /// @param dataModel /// data model to get items from /// @throws TasteException /// if an error occurs while accessing the {@link DataModel} items public GenericItemSimilarity(IItemSimilarity otherSimilarity, IDataModel dataModel) { long[] itemIDs = GenericUserSimilarity.longIteratorToList(dataModel.GetItemIDs()); initSimilarityMaps(new DataModelSimilaritiesIterator(otherSimilarity, itemIDs)); }
public MostSimilarEstimator(long toItemID, IItemSimilarity similarity, IRescorer <Tuple <long, long> > rescorer) { this.toItemID = toItemID; this.similarity = similarity; this.rescorer = rescorer; }