Example usage for org.apache.mahout.cf.taste.impl.similarity CachingItemSimilarity CachingItemSimilarity

List of usage examples for org.apache.mahout.cf.taste.impl.similarity CachingItemSimilarity CachingItemSimilarity

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.impl.similarity CachingItemSimilarity CachingItemSimilarity.

Prototype

public CachingItemSimilarity(ItemSimilarity similarity, int maxCacheSize) 

Source Link

Document

Creates this on top of the given ItemSimilarity .

Usage

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);
    }
}