Example usage for org.apache.mahout.cf.taste.recommender IDRescorer IDRescorer

List of usage examples for org.apache.mahout.cf.taste.recommender IDRescorer IDRescorer

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.recommender IDRescorer IDRescorer.

Prototype

IDRescorer

Source Link

Usage

From source file:com.rssrecommender.services.MahoutService.java

@PostConstruct
public void init() {
    try {//from   w w w  .jav a 2 s  .c o  m
        dataSource = new MysqlConnectionPoolDataSource();

        dataSource.setServerName("localhost");
        dataSource.setUser("root");
        dataSource.setPassword("1234");
        dataSource.setDatabaseName("rss_rec");
        dataSource.setCachePreparedStatements(true);
        dataSource.setCachePrepStmts(true);
        dataSource.setCacheResultSetMetadata(true);
        dataSource.setAlwaysSendSetIsolation(true);
        dataSource.setElideSetAutoCommits(true);

        model = new MySQLJDBCDataModel(dataSource, "user_likes_article", "user_id", "article_id", "rating",
                null);
        m = new ReloadFromJDBCDataModel(model);
        is = new PearsonCorrelationSimilarity(m);

        //            ItemSimilarity is = new EuclideanDistanceSimilarity(model, Weighting.WEIGHTED);
        //            cis = new CachingItemSimilarity(is, 150);
        r = new GenericItemBasedRecommender(m, is);
        rsr = new IDRescorer() {

            @Override
            public double rescore(long id, double originalScore) {
                Article a = af.find((int) id);
                long diff = Calendar.getInstance().getTimeInMillis() - a.getDate().getTime() + 1;
                double time = 1.0d / (diff / (1000 * 360 * 12)); // half day period since feeds are update regularly
                return originalScore * time;
            }

            @Override
            public boolean isFiltered(long id) {
                //always rescore
                return false;
            }
        };
        //            Optimizer optimizer = new ConjugateGradientOptimizer();
        //            r = new KnnItemBasedRecommender(m, is, optimizer, 5);
        //          
    } catch (TasteException ex) {
        Logger.getLogger(MahoutService.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:net.myrrix.online.example.rescorer.FilterHalfRescorerProvider.java

License:Apache License

@Override
public IDRescorer getRecommendRescorer(final long[] userIDs, MyrrixRecommender recommender, String... args) {
    final boolean odd = args.length > 0 && "odd".equalsIgnoreCase(args[0]);
    return new IDRescorer() {
        @Override//w w w  . j a v a 2  s .c  o  m
        public double rescore(long itemID, double score) {
            for (long userID : userIDs) {
                if (odd == ((userID & 0x01) == 1)) {
                    return Double.NaN;
                }
            }
            return isFiltered(itemID) ? Double.NaN : 10.0 * score;
        }

        @Override
        public boolean isFiltered(long itemID) {
            return odd == ((itemID & 0x01) == 1);
        }
    };
}

From source file:net.myrrix.online.example.rescorer.FilterHalfRescorerProvider.java

License:Apache License

@Override
public IDRescorer getRecommendToAnonymousRescorer(final long[] itemIDs, MyrrixRecommender recommender,
        String... args) {//w  w  w  . j ava 2 s  .co  m
    final boolean odd = args.length > 0 && "odd".equalsIgnoreCase(args[0]);
    return new IDRescorer() {
        @Override
        public double rescore(long itemID, double score) {
            for (long anItemID : itemIDs) {
                if (odd == ((anItemID & 0x01) == 1)) {
                    return Double.NaN;
                }
            }
            return isFiltered(itemID) ? Double.NaN : 10.0 * score;
        }

        @Override
        public boolean isFiltered(long itemID) {
            return odd == ((itemID & 0x01) == 1);
        }
    };
}

From source file:net.myrrix.online.example.rescorer.FilterHalfRescorerProvider.java

License:Apache License

@Override
public IDRescorer getMostPopularItemsRescorer(MyrrixRecommender recommender, String... args) {
    final boolean odd = args.length > 0 && "odd".equalsIgnoreCase(args[0]);
    return new IDRescorer() {
        @Override//from ww  w .jav a 2 s .c  o  m
        public double rescore(long itemID, double score) {
            return isFiltered(itemID) ? Double.NaN : 10.0 * score;
        }

        @Override
        public boolean isFiltered(long itemID) {
            return odd == ((itemID & 0x01) == 1);
        }
    };
}