List of usage examples for org.apache.mahout.cf.taste.recommender Recommender recommend
List<RecommendedItem> recommend(long userID, int howMany) throws TasteException;
From source file:be.ugent.tiwi.sleroux.newsrec.newsreccollaborativefiltering.MahoutTermRecommender.java
public Map<Long, List<RecommendedItem>> makeRecommendations(int n) throws IOException, TasteException { DataModel model = new FileDataModel(new File(mahoutInputFile), ";"); UserSimilarity similarity = new TanimotoCoefficientSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model); Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); LongPrimitiveIterator it = model.getUserIDs(); Map<Long, List<RecommendedItem>> output = new HashMap<>(model.getNumUsers()); while (it.hasNext()) { long user = it.nextLong(); List<RecommendedItem> items = recommender.recommend(user, n); output.put(user, items);//from w w w . jav a2 s.co m } return output; }
From source file:cf.wikipedia.WikipediaTasteUserDemo.java
License:Apache License
public static void main(String[] args) throws IOException, TasteException, SAXException, ParserConfigurationException { String recsFile = args[0];/*from w w w . j av a2 s . c o m*/ String docIdsTitle = args[1]; Integer neighborhoodSize = Integer.parseInt(args[2]); Long userId = Long.parseLong(args[3]); boolean printCommonalities = Boolean.parseBoolean(args[4]); InputSource is = new InputSource(new FileInputStream(docIdsTitle)); SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(false); SAXParser sp = factory.newSAXParser(); WikiContentHandler handler = new WikiContentHandler(); sp.parse(is, handler); //create the data model FileDataModel dataModel = new FileDataModel(new File(recsFile)); System.out.println("Data Model: Users: " + dataModel.getNumUsers() + " Items: " + dataModel.getNumItems()); UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(dataModel); // Optional: userSimilarity.setPreferenceInferrer(new AveragingPreferenceInferrer(dataModel)); //Get a neighborhood of users UserNeighborhood neighborhood = new NearestNUserNeighborhood(neighborhoodSize, userSimilarity, dataModel); //Create the recommender Recommender recommender = new GenericUserBasedRecommender(dataModel, neighborhood, userSimilarity); System.out.println("-----"); System.out.println("User: " + userId); //Print out the users own preferences first TasteUtils.printPreferences(dataModel, userId, handler.map); if (printCommonalities) { long[] users = neighborhood.getUserNeighborhood(userId); for (int i = 0; i < users.length; i++) { long neighbor = users[i]; System.out.println("Neighbor: " + neighbor); TasteUtils.printCommonalities(dataModel, userId, neighbor, handler.map); } System.out.println(""); } //Get the top 5 recommendations List<RecommendedItem> recommendations = recommender.recommend(userId, 5); TasteUtils.printRecs(recommendations, handler.map); }
From source file:com.aguin.stock.recommender.StockRecommender.java
License:Apache License
public static void run(DataModel model, Recommender rec) throws TasteException { if (!(model instanceof MongoDBDataModel)) { throw new ClassCastException("Data Model must be a-Mongo!"); }// w ww . jav a2 s . c o m MongoDBDataModel mgmodel = (MongoDBDataModel) model; System.out.println("Start recommender\n"); LongPrimitiveIterator it = mgmodel.getUserIDs(); while (it.hasNext()) { long userId = it.nextLong(); // get the recommendations for the user List<RecommendedItem> recommendations = rec.recommend(userId, 10); // if empty write something if (recommendations.size() == 0) { System.out.print("User "); System.out.print(mgmodel.fromLongToId(userId)); System.out.println(": no recommendations"); } // print the list of recommendations for each for (RecommendedItem recommendedItem : recommendations) { System.out.print("User "); System.out.print(mgmodel.fromLongToId(userId)); System.out.print(": "); System.out.println(recommendedItem); } } }
From source file:com.corchado.testRecomender.recomendador.java
public static void Recomendar(Scanner entrada, DataModel model, final UserSimilarity similarity) throws IOException, TasteException { // obtener los parametros del usuario int idUsuario; System.out.println("Entre el id de usuario"); idUsuario = entrada.nextInt();/*w w w .ja v a2s. co m*/ System.out.println("Entre la cantidad de recomendaciones"); int cantRecomendaciones; cantRecomendaciones = entrada.nextInt(); //------------------------------------------ //recomendador UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model); Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); //parametros: //usuario al que se recomdienda //cantidad de items a recomendar List<RecommendedItem> recommendations = recommender.recommend(idUsuario, cantRecomendaciones); System.out.println("Items recomendados: "); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); } }
From source file:com.corchado.testRecomender.recomendarUI.java
private void btnRecomendarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRecomendarActionPerformed try {/*from w ww .ja v a 2s .c o m*/ // TODO add your handling code here: int numeroUsuario = Integer.parseInt(SpinnerNumeroUsuario.getValue().toString()); int cantRecomendaciones = Integer.parseInt(SpinnerCantRecomendacion.getValue().toString()); //recomendador UserNeighborhood neighborhood = new NearestNUserNeighborhood(CantVecindad, similarity, model); Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); List<RecommendedItem> recommendations = recommender.recommend(numeroUsuario, cantRecomendaciones); listRecomendaciones.removeAll(); if (recommendations.isEmpty()) { listRecomendaciones.add("no se encontraron recomendaciones"); } else { for (RecommendedItem recommendation : recommendations) { listRecomendaciones.add(recommendation.toString()); } } } catch (TasteException ex) { Logger.getLogger(recomendarUI.class.getName()).log(Level.SEVERE, null, ex); } }
From source file:com.mycompany.xplor_recommendation_engine.Xplor.java
/** * @param args the command line arguments * @throws java.sql.SQLException//from ww w . j ava2 s. com * @throws java.io.IOException */ public static void main(String[] args) throws SQLException, IOException, TasteException { FileConverter fc = FileConverter.getFileConverter(); int[] columnSpecs = new int[2]; columnSpecs[0] = 2; columnSpecs[1] = 2; fc.convertToCSV("xplor_development", "blog_profile_maps", columnSpecs); // Calibrate recommender for csv file DataModel model = new FileDataModel(new File("blog_profile_maps.csv")); UserSimilarity similarity = new TanimotoCoefficientSimilarity(model); UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model); Recommender recommender = new GenericBooleanPrefUserBasedRecommender(model, neighborhood, similarity); Recommender cachingRecommender = new CachingRecommender(recommender); // Establish JDBC connection for (int i = 1; i <= model.getNumUsers(); i++) { List<RecommendedItem> recommendations = cachingRecommender.recommend(i, 10); for (RecommendedItem recommendation : recommendations) { // Store recommendations in recommendations table } } // Store recommendations in database }
From source file:lsdr.user.based.recommender.intro.trivial.RecommenderIntro.java
License:Open Source License
public List<RecommendedItem> recommend(int id, int amount) throws Exception { // TODO as fields, then only id and amount is changed final UserSimilarity similarity = new PearsonCorrelationSimilarity(model); final UserNeighborhood neighborhood = new NearestNUserNeighborhood(AMOUNT_OF_NEIGHBORS, similarity, model); final Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); List<RecommendedItem> recommendations = recommender.recommend(id, amount); return recommendations; }
From source file:lsh.mahout.recommender.LSHDataModelTest.java
License:Apache License
@Test public void testFile() throws Exception { UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, userSimilarity, model); Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, userSimilarity); assertEquals(1, recommender.recommend(1, 3).size()); assertEquals(0, recommender.recommend(10, 3).size()); assertEquals(1, recommender.recommend(100, 3).size()); // Make sure this doesn't throw an exception model.refresh(null);/*from w w w .j ava2 s. c o m*/ }
From source file:net.recommenders.rival.examples.movielens100k.IterativeCrossValidatedMahoutKNNRecommenderEvaluator.java
License:Apache License
/** * Recommends using an UB algorithm.// w w w .ja va 2 s . co m * * @param nFolds number of folds * @param inPath path where training and test models have been stored * @param outPath path where recommendation files will be stored */ public static void recommend(final int nFolds, final String inPath, final String outPath) { for (int i = 0; i < nFolds; i++) { org.apache.mahout.cf.taste.model.DataModel trainModel; org.apache.mahout.cf.taste.model.DataModel testModel; try { trainModel = new FileDataModel(new File(inPath + "train_" + i + ".csv")); testModel = new FileDataModel(new File(inPath + "test_" + i + ".csv")); } catch (IOException e) { e.printStackTrace(); return; } GenericRecommenderBuilder grb = new GenericRecommenderBuilder(); String recommenderClass = "org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender"; String similarityClass = "org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity"; int neighborhoodSize = NEIGH_SIZE; Recommender recommender = null; try { recommender = grb.buildRecommender(trainModel, recommenderClass, similarityClass, neighborhoodSize); } catch (RecommenderException e) { e.printStackTrace(); } String fileName = "recs_" + i + ".csv"; LongPrimitiveIterator users; try { users = testModel.getUserIDs(); boolean createFile = true; while (users.hasNext()) { long u = users.nextLong(); assert recommender != null; List<RecommendedItem> items = recommender.recommend(u, trainModel.getNumItems()); RecommenderIO.writeData(u, items, outPath, fileName, !createFile, null); createFile = false; } } catch (TasteException e) { e.printStackTrace(); } } }
From source file:net.recommenders.rival.examples.movielens100k.RandomSplitMahoutKNNRecommenderEvaluator.java
License:Apache License
/** * Recommends using an UB algorithm.// w w w. ja va2s . c o m * * @param inPath path where training and test models have been stored * @param outPath path where recommendation files will be stored */ public static void recommend(final String inPath, final String outPath) { int i = 0; org.apache.mahout.cf.taste.model.DataModel trainModel = null; org.apache.mahout.cf.taste.model.DataModel testModel = null; try { trainModel = new FileDataModel(new File(inPath + "train_" + i + ".csv")); testModel = new FileDataModel(new File(inPath + "test_" + i + ".csv")); } catch (IOException e) { e.printStackTrace(); return; } GenericRecommenderBuilder grb = new GenericRecommenderBuilder(); String recommenderClass = "org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender"; String similarityClass = "org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity"; int neighborhoodSize = NEIGH_SIZE; Recommender recommender = null; try { recommender = grb.buildRecommender(trainModel, recommenderClass, similarityClass, neighborhoodSize); } catch (RecommenderException e) { e.printStackTrace(); } String fileName = "recs_" + i + ".csv"; LongPrimitiveIterator users = null; try { users = testModel.getUserIDs(); boolean createFile = true; while (users.hasNext()) { long u = users.nextLong(); List<RecommendedItem> items = recommender.recommend(u, trainModel.getNumItems()); RecommenderIO.writeData(u, items, outPath, fileName, !createFile, null); createFile = false; } } catch (TasteException e) { e.printStackTrace(); } }