public void TestHowMany() { List<User> users = new List<User>(3); users.Add(GetUser("test1", 0.1, 0.2)); users.Add(GetUser("test2", 0.2, 0.3, 0.3, 0.6)); users.Add(GetUser("test3", 0.4, 0.4, 0.5, 0.9)); users.Add(GetUser("test4", 0.1, 0.4, 0.5, 0.8, 0.9, 1.0)); users.Add(GetUser("test5", 0.2, 0.3, 0.6, 0.7, 0.1, 0.2)); DataModel dataModel = new GenericDataModel(users); IList<GenericItemCorrelation.ItemItemCorrelation> correlations = new List<GenericItemCorrelation.ItemItemCorrelation>(6); for (int i = 0; i < 6; i++) { for (int j = i + 1; j < 6; j++) { correlations.Add( new GenericItemCorrelation.ItemItemCorrelation(new GenericItem<String>(i.ToString()), new GenericItem<String>(j.ToString()), 1.0 / (1.0 + (double)i + (double)j))); } } ItemCorrelation correlation = new GenericItemCorrelation(correlations); Recommender recommender = new GenericItemBasedRecommender(dataModel, correlation); IList<RecommendedItem> fewRecommended = recommender.Recommend("test1", 2); IList<RecommendedItem> moreRecommended = recommender.Recommend("test1", 4); for (int i = 0; i < fewRecommended.Count; i++) { Assert.AreEqual(fewRecommended[i].Item, moreRecommended[i].Item); } }
public void TestRescorer() { List<User> users = new List<User>(3); users.Add(GetUser("test1", 0.1, 0.2)); users.Add(GetUser("test2", 0.2, 0.3, 0.3, 0.6)); users.Add(GetUser("test3", 0.4, 0.4, 0.5, 0.9)); DataModel dataModel = new GenericDataModel(users); Item item1 = new GenericItem<String>("0"); Item item2 = new GenericItem<String>("1"); Item item3 = new GenericItem<String>("2"); Item item4 = new GenericItem<String>("3"); ICollection<GenericItemCorrelation.ItemItemCorrelation> correlations = new List<GenericItemCorrelation.ItemItemCorrelation>(6); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 1.0)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.5)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item4, 0.2)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item3, 0.7)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item4, 0.5)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item3, item4, 0.9)); ItemCorrelation correlation = new GenericItemCorrelation(correlations); Recommender recommender = new GenericItemBasedRecommender(dataModel, correlation); IList<RecommendedItem> originalRecommended = recommender.Recommend("test1", 2); IList<RecommendedItem> rescoredRecommended = recommender.Recommend("test1", 2, new ReversingRescorer<Item>()); Assert.IsNotNull(originalRecommended); Assert.IsNotNull(rescoredRecommended); Assert.AreEqual(2, originalRecommended.Count); Assert.AreEqual(2, rescoredRecommended.Count); Assert.AreEqual(originalRecommended[0].Item, rescoredRecommended[1].Item); Assert.AreEqual(originalRecommended[1].Item, rescoredRecommended[0].Item); }
private static ItemBasedRecommender buildRecommender2() { List<User> users = new List<User>(4); users.Add(GetUser("test1", 0.1, 0.3, 0.9, 0.8)); users.Add(GetUser("test2", 0.2, 0.3, 0.3, 0.4)); users.Add(GetUser("test3", 0.4, 0.3, 0.5, 0.1, 0.1)); users.Add(GetUser("test4", 0.7, 0.3, 0.8, 0.5, 0.6)); DataModel dataModel = new GenericDataModel(users); ICollection<GenericItemCorrelation.ItemItemCorrelation> correlations = new List<GenericItemCorrelation.ItemItemCorrelation>(10); Item item1 = new GenericItem<String>("0"); Item item2 = new GenericItem<String>("1"); Item item3 = new GenericItem<String>("2"); Item item4 = new GenericItem<String>("3"); Item item5 = new GenericItem<String>("4"); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 1.0)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.8)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item4, -0.6)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item5, 1.0)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item3, 0.9)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item4, 0.0)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item2, 1.0)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item3, item4, -0.1)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item3, item5, 0.1)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item4, item5, -0.5)); ItemCorrelation correlation = new GenericItemCorrelation(correlations); return new GenericItemBasedRecommender(dataModel, correlation); }
private static ItemBasedRecommender buildRecommender() { DataModel dataModel = new GenericDataModel(GetMockUsers()); ICollection<GenericItemCorrelation.ItemItemCorrelation> correlations = new List<GenericItemCorrelation.ItemItemCorrelation>(2); Item item1 = new GenericItem<String>("0"); Item item2 = new GenericItem<String>("1"); Item item3 = new GenericItem<String>("2"); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 1.0)); correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.5)); ItemCorrelation correlation = new GenericItemCorrelation(correlations); return new GenericItemBasedRecommender(dataModel, correlation); }