Package recommender.impl.meta

Source Code of recommender.impl.meta.WeightedMergingRecommenderTest

package recommender.impl.meta;

import static org.junit.Assert.assertEquals;

import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;

import org.bibsonomy.recommender.simple.FixedRecommender;
import org.junit.Test;

import recommender.core.Recommender;
import recommender.core.util.RecommendationResultComparator;
import recommender.impl.test.util.DummyRecommendationEntity;
import recommender.impl.test.util.DummyRecommendationResult;


/**
* @author rja
*/
public class WeightedMergingRecommenderTest {

  @Test
  public void testGetRecommendedTags() {
    final WeightedMergingRecommender<DummyRecommendationEntity, DummyRecommendationResult> recommender = new WeightedMergingRecommender<DummyRecommendationEntity, DummyRecommendationResult>();

    final List<Recommender<DummyRecommendationEntity, DummyRecommendationResult>> tagRecommenders = new ArrayList<Recommender<DummyRecommendationEntity, DummyRecommendationResult>>(2);
    tagRecommenders.add(new FixedRecommender<DummyRecommendationEntity, DummyRecommendationResult>(this.getTags1()));
    tagRecommenders.add(new FixedRecommender<DummyRecommendationEntity, DummyRecommendationResult>(this.getTags2()));
   
    recommender.setRecommenders(tagRecommenders);

    recommender.setWeights(new double[] { 0.4, 0.6 });


    final SortedSet<DummyRecommendationResult> recommendedTags = recommender.getRecommendation(null);

    assertEquals(recommender.getNumberOfResultsToRecommend(), recommendedTags.size());

    /*
     * for tag 'web': 0.4 * 0.4 + 0.3 * 0.6 = 0.34
     */
    assertEquals(0.34, recommendedTags.first().getScore(), 0.001);
  }


  private SortedSet<DummyRecommendationResult> getTags1() {
    final SortedSet<DummyRecommendationResult> result = new TreeSet<DummyRecommendationResult>(new RecommendationResultComparator<DummyRecommendationResult>());

    result.add(new DummyRecommendationResult("semantic",   0.5, 0.1));
    result.add(new DummyRecommendationResult("web",        0.4, 0.1));
    result.add(new DummyRecommendationResult("folksonomy", 0.4, 0.2));
    result.add(new DummyRecommendationResult("holidy",     0.3, 0.5));
    result.add(new DummyRecommendationResult("tree",       0.1, 0.3));

    return result;
  }

  private SortedSet<DummyRecommendationResult> getTags2() {
    final SortedSet<DummyRecommendationResult> result = new TreeSet<DummyRecommendationResult>(new RecommendationResultComparator<DummyRecommendationResult>());

    result.add(new DummyRecommendationResult("semantic", 0.2, 0.1));
    result.add(new DummyRecommendationResult("web",      0.3, 0.1));
    result.add(new DummyRecommendationResult("car",      0.4, 0.2));
    result.add(new DummyRecommendationResult("holiday"0.2, 0.5));
    result.add(new DummyRecommendationResult("tree",     0.5, 0.3));

    return result;
  }
}
TOP

Related Classes of recommender.impl.meta.WeightedMergingRecommenderTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.