List of usage examples for org.apache.mahout.cf.taste.impl.similarity CachingItemSimilarity CachingItemSimilarity
public CachingItemSimilarity(ItemSimilarity similarity, int maxCacheSize)
From source file:com.anjuke.romar.mahout.factory.MahoutServiceItemRecommendFactory.java
License:Apache License
@Override public MahoutService createService() { RomarConfig config = RomarConfig.getInstance(); Recommender recommender;// w w w. j a v a2 s . c o m DataModel dataModel = PersistenceDataModelFactory.createDataModel(config); ItemSimilarity similarity; if (config.isUseFileSimilarity()) { File file = new File(config.getSimilarityFile()); if (!file.exists()) { throw new IllegalArgumentException("similairy file not exists"); } if (!file.isFile()) { throw new IllegalArgumentException("similairy file is a directory"); } IteratorBuiler<ItemItemSimilarity> iteratorBuilder; if (config.isBinarySimilarityFile()) { iteratorBuilder = RomarFileSimilarityIterator.dataFileItemIteratorBuilder(); } else { iteratorBuilder = RomarFileSimilarityIterator.lineFileItemIteratorBuilder(); } similarity = new RomarFileItemSimilarity(file, iteratorBuilder); } else { similarity = createSimilarity(config, dataModel); if (config.isUseSimilariyCache()) { similarity = new CachingItemSimilarity(similarity, config.getSimilarityCacheSize()); } } recommender = new GenericItemBasedRecommender(dataModel, similarity); return new RecommenderWrapper(recommender); }
From source file:com.anjuke.romar.mahout.GenericReloadDataModelTest.java
License:Apache License
@Test public void test() throws TasteException { GenericReloadDataModel model = new GenericReloadDataModel(); ItemBasedRecommender recommender = new GenericItemBasedRecommender(model, new CachingItemSimilarity(new TanimotoCoefficientSimilarity(model), 100)); recommender.setPreference(1, 1, 5f); recommender.setPreference(1, 2, 1f); recommender.setPreference(2, 1, 1f); recommender.setPreference(2, 2, 5f); recommender.refresh(null);/*from w w w . jav a 2 s . co m*/ assertEquals(0, recommender.recommend(1, 5).size()); recommender.setPreference(2, 3, 1f); recommender.refresh(null); assertEquals(1, recommender.recommend(1, 5).size()); recommender.setPreference(2, 4, 1f); recommender.refresh(null); assertEquals(2, recommender.recommend(1, 5).size()); assertEquals(2, recommender.recommend(1, 5).size()); }
From source file:com.github.gurelkaynak.recommendationengine.core.RecommenderFactory.java
public ItemBasedRecommender buildItemBasedRecommender(DataModel dataModel) { ItemBasedRecommender recommender;// w ww .jav a 2 s . co m recommender = null; try { ItemSimilarity similarity = new CachingItemSimilarity(new TanimotoCoefficientSimilarity(dataModel), dataModel); recommender = new GenericItemBasedRecommender(dataModel, similarity); } catch (TasteException exception) { System.err.println(exception); } return recommender; }
From source file:norbert.mynemo.core.recommendation.recommender.ItemSimilarityRecommender.java
License:Apache License
@Override public Recommender buildRecommender(DataModel dataModel) throws TasteException { checkArgument(dataModel != null, "Data model type must not be null."); ItemSimilarity similarity = null;//w ww . j ava2s . c o m switch (selectedSimilarity) { case ITEM_SIMILARITY_WITH_CITY_BLOCK_DISTANCE: similarity = new CityBlockSimilarity(dataModel); break; case ITEM_SIMILARITY_WITH_EUCLIDEAN_DISTANCE: similarity = new EuclideanDistanceSimilarity(dataModel, Weighting.UNWEIGHTED); break; case ITEM_SIMILARITY_WITH_LOG_LIKELIHOOD: similarity = new LogLikelihoodSimilarity(dataModel); break; case ITEM_SIMILARITY_WITH_PEARSON_CORRELATION: similarity = new PearsonCorrelationSimilarity(dataModel, Weighting.UNWEIGHTED); break; case ITEM_SIMILARITY_WITH_TANIMOTO_COEFFICIENT: similarity = new TanimotoCoefficientSimilarity(dataModel); break; case ITEM_SIMILARITY_WITH_UNCENTERED_COSINE: similarity = new UncenteredCosineSimilarity(dataModel, Weighting.UNWEIGHTED); break; case ITEM_SIMILARITY_WITH_WEIGHTED_EUCLIDEAN_DISTANCE: similarity = new EuclideanDistanceSimilarity(dataModel, Weighting.WEIGHTED); break; case ITEM_SIMILARITY_WITH_WEIGHTED_PEARSON_CORRELATION: similarity = new PearsonCorrelationSimilarity(dataModel, Weighting.WEIGHTED); break; case ITEM_SIMILARITY_WITH_WEIGHTED_UNCENTERED_COSINE: similarity = new UncenteredCosineSimilarity(dataModel, Weighting.WEIGHTED); break; default: throw new IllegalStateException(); } int cacheSize = Math.min(dataModel.getNumItems() * dataModel.getNumItems(), MAXIMUM_CACHE_SIZE); similarity = new CachingItemSimilarity(similarity, cacheSize); return new GenericItemBasedRecommender(dataModel, similarity); }
From source file:org.zaizi.mahout.config.ClassNameSimilarityConfiguration.java
License:Open Source License
public ItemSimilarity getItemSimilarity(DataModel dataModel) throws TasteException { try {//from ww w. ja v a 2 s .com Class<ItemSimilarity> similarityClass = (Class<ItemSimilarity>) getClass().getClassLoader() .loadClass(getSimilarityClassName()); Constructor<ItemSimilarity> ctor = similarityClass.getDeclaredConstructor(DataModel.class); return new CachingItemSimilarity(ctor.newInstance(dataModel), dataModel); } catch (Exception exc) { if (exc instanceof TasteException) throw (TasteException) exc; else throw new TasteException(exc); } }