List of usage examples for org.apache.mahout.cf.taste.impl.neighborhood NearestNUserNeighborhood NearestNUserNeighborhood
public NearestNUserNeighborhood(int n, UserSimilarity userSimilarity, DataModel dataModel) 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.j ava 2 s .c om*/ } 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 a 2 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.corchado.testRecomender.evaluarPrecionRecallUI.java
private void calcularPrecicionRecall() { try {/* ww w . jav a 2 s. c om*/ RandomUtils.useTestSeed(); RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator(); RecommenderBuilder recommenderBuilder = new RecommenderBuilder() { @Override public Recommender buildRecommender(DataModel model) throws TasteException { UserNeighborhood neighborhood = new NearestNUserNeighborhood(CantVecindad, similarity, model); return new GenericUserBasedRecommender(model, neighborhood, similarity); } }; IRStatistics stats = evaluator.evaluate(recommenderBuilder, null, model, null, 2, GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0); labelPrecicion.setText("Precisin: " + stats.getPrecision()); labelRecal.setText("Recall: " + stats.getRecall()); } catch (TasteException ex) { Logger.getLogger(evaluarPrecionRecallUI.class.getName()).log(Level.SEVERE, null, ex); } }
From source file:com.corchado.testRecomender.evaluarRecomendadorUI.java
private void Evaluar() { try {//w ww .jav a 2 s. c o m RandomUtils.useTestSeed(); RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator(); RecommenderBuilder builder = new RecommenderBuilder() { @Override public Recommender buildRecommender(DataModel model) throws TasteException { // UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(CantVecindad, similarity, model); return new GenericUserBasedRecommender(model, neighborhood, similarity); } }; double score = evaluator.evaluate(builder, null, model, 0.7, 1.0); labelEvaluacion.setText("Evaluacin: " + score); } catch (TasteException ex) { Logger.getLogger(evaluarRecomendadorUI.class.getName()).log(Level.SEVERE, null, ex); } }
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();/*from w w w . j a va2 s . 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.recomendador.java
public static void Probar(final Scanner entrada, DataModel model, final UserSimilarity similarity) throws IOException, TasteException { RandomUtils.useTestSeed();//from w w w . ja v a 2 s. com RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator(); RecommenderBuilder builder = new RecommenderBuilder() { @Override public Recommender buildRecommender(DataModel model) throws TasteException { // UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model); return new GenericUserBasedRecommender(model, neighborhood, similarity); } }; double score = evaluator.evaluate(builder, null, model, 0.7, 1.0); System.out.println("evaluacion: " + score); }
From source file:com.corchado.testRecomender.recomendador.java
public static void evaluarPrecicionRecall(final Scanner entrada, DataModel model, final UserSimilarity similarity) throws IOException, TasteException { RandomUtils.useTestSeed();//w w w . ja v a 2s . c o m RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator(); RecommenderBuilder recommenderBuilder = new RecommenderBuilder() { @Override public Recommender buildRecommender(DataModel model) throws TasteException { UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model); return new GenericUserBasedRecommender(model, neighborhood, similarity); } }; IRStatistics stats = evaluator.evaluate(recommenderBuilder, null, model, null, 2, GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0); System.out.println("Precision: " + stats.getPrecision()); System.out.println("Recal: " + stats.getRecall()); }
From source file:com.corchado.testRecomender.recomendarUI.java
private void btnRecomendarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRecomendarActionPerformed try {//from w w w . ja v a2 s . com // 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.github.gurelkaynak.recommendationengine.core.RecommenderFactory.java
public Recommender buildUserBasedRecommender(DataModel dataModel) { Recommender recommender;//www. ja v a 2 s. c o m recommender = null; try { UserSimilarity similarity = new CachingUserSimilarity( new PearsonCorrelationSimilarity(dataModel, Weighting.WEIGHTED), dataModel); UserNeighborhood neighborhood; switch (this.userNeighborhoodAlgorithm) { case "threshold": neighborhood = new ThresholdUserNeighborhood(this.thresholdValue, similarity, dataModel); break; case "nearestnuser": neighborhood = new NearestNUserNeighborhood(this.nearestNUserValue, similarity, dataModel); break; default: neighborhood = new ThresholdUserNeighborhood(this.thresholdValue, similarity, dataModel); break; } recommender = new GenericUserBasedRecommender(dataModel, neighborhood, similarity); } catch (TasteException exception) { System.err.println(exception); } return recommender; }
From source file:com.staticvillage.recommender.PlaceRecommender.java
License:Apache License
public PlaceRecommender(DataModel model, int neighborhoodSize, Indexer<Place> indexer, GeoPoint geoPoint) throws TasteException { this.model = model; this.indexer = indexer; this.geoPoint = geoPoint; UserSimilarity similarity = new EuclideanDistanceSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(neighborhoodSize, similarity, model); delegate = new GenericUserBasedRecommender(model, neighborhood, similarity); }