public void testSetMultipleTempPreferences() { PlusAnonymousConcurrentUserDataModel instance = getTestableWithoutDelegateData(10); long anonymousUserID1 = instance.TakeAvailableUser().Value; long anonymousUserID2 = instance.TakeAvailableUser().Value; IPreferenceArray tempPrefs1 = new GenericUserPreferenceArray(1); tempPrefs1.SetUserID(0, anonymousUserID1); tempPrefs1.SetItemID(0, 1); IPreferenceArray tempPrefs2 = new GenericUserPreferenceArray(2); tempPrefs2.SetUserID(0, anonymousUserID2); tempPrefs2.SetItemID(0, 2); tempPrefs2.SetUserID(1, anonymousUserID2); tempPrefs2.SetItemID(1, 3); instance.SetTempPrefs(tempPrefs1, anonymousUserID1); instance.SetTempPrefs(tempPrefs2, anonymousUserID2); Assert.AreEqual(tempPrefs1, instance.GetPreferencesFromUser(anonymousUserID1)); Assert.AreEqual(tempPrefs2, instance.GetPreferencesFromUser(anonymousUserID2)); }
public void testItemID() { IPreferenceArray prefs = new GenericUserPreferenceArray(3); Assert.AreEqual(3, prefs.Length()); prefs.SetItemID(0, 1L); prefs.SetItemID(1, 2L); prefs.SetItemID(2, 3L); Assert.AreEqual(1L, prefs.GetItemID(0)); Assert.AreEqual(2L, prefs.GetItemID(1)); Assert.AreEqual(3L, prefs.GetItemID(2)); }
public ActionResult Recommend(string filmIdsJson) { var filmIds = (new JavaScriptSerializer()).Deserialize<long[]>(filmIdsJson); var pathToDataFile = Path.Combine(System.Web.HttpRuntime.AppDomainAppPath, "data/albums.dat"); if (dataModel == null) { try { dataModel = new FileDataModel(pathToDataFile, false, FileDataModel.DEFAULT_MIN_RELOAD_INTERVAL_MS, false); } catch (Exception e) { var exe = e.ToString(); } } var plusAnonymModel = new PlusAnonymousUserDataModel(dataModel); var prefArr = new GenericUserPreferenceArray(filmIds.Length); prefArr.SetUserID(0, PlusAnonymousUserDataModel.TEMP_USER_ID); for (int i = 0; i < filmIds.Length; i++) { prefArr.SetItemID(i, filmIds[i]); prefArr.SetValue(i, 5); // lets assume max rating } plusAnonymModel.SetTempPrefs(prefArr); var similarity = new LogLikelihoodSimilarity(plusAnonymModel); var neighborhood = new NearestNUserNeighborhood(15, similarity, plusAnonymModel); var recommender = new GenericBooleanPrefUserBasedRecommender(plusAnonymModel, neighborhood, similarity); var recommendedItems = recommender.Recommend(PlusAnonymousUserDataModel.TEMP_USER_ID, 5, null); return Json( recommendedItems.Select(ri => new Dictionary<string, object>() { {"id", ri.GetItemID() }, {"rating", ri.GetValue() }, }).ToArray() ); }
public void testGetUserIDs() { IPreferenceArray prefs = new GenericUserPreferenceArray(1); long sampleUserID = 1; prefs.SetUserID(0, sampleUserID); long sampleItemID = 11; prefs.SetItemID(0, sampleItemID); FastByIDMap <IPreferenceArray> delegatePreferences = new FastByIDMap <IPreferenceArray>(); delegatePreferences.Put(sampleUserID, prefs); PlusAnonymousConcurrentUserDataModel instance = getTestableWithDelegateData(10, delegatePreferences); long anonymousUserID = instance.TakeAvailableUser().Value; IPreferenceArray tempPrefs = new GenericUserPreferenceArray(1); tempPrefs.SetUserID(0, anonymousUserID); tempPrefs.SetItemID(0, 22); instance.SetTempPrefs(tempPrefs, anonymousUserID); var userIDs = instance.GetUserIDs(); userIDs.MoveNext(); Assert.AreEqual(sampleUserID, userIDs.Current); Assert.False(userIDs.MoveNext()); }
public void testGetPreferencesForItem() { IPreferenceArray prefs = new GenericUserPreferenceArray(2); long sampleUserID = 4; prefs.SetUserID(0, sampleUserID); long sampleItemID = 11; prefs.SetItemID(0, sampleItemID); prefs.SetUserID(1, sampleUserID); long sampleItemID2 = 22; prefs.SetItemID(1, sampleItemID2); FastByIDMap <IPreferenceArray> delegatePreferences = new FastByIDMap <IPreferenceArray>(); delegatePreferences.Put(sampleUserID, prefs); PlusAnonymousConcurrentUserDataModel instance = getTestableWithDelegateData(10, delegatePreferences); long anonymousUserID = instance.TakeAvailableUser().Value; IPreferenceArray tempPrefs = new GenericUserPreferenceArray(2); tempPrefs.SetUserID(0, anonymousUserID); tempPrefs.SetItemID(0, sampleItemID); tempPrefs.SetUserID(1, anonymousUserID); long sampleItemID3 = 33; tempPrefs.SetItemID(1, sampleItemID3); instance.SetTempPrefs(tempPrefs, anonymousUserID); Assert.AreEqual(sampleUserID, instance.GetPreferencesForItem(sampleItemID).Get(0).GetUserID()); Assert.AreEqual(2, instance.GetPreferencesForItem(sampleItemID).Length()); Assert.AreEqual(1, instance.GetPreferencesForItem(sampleItemID2).Length()); Assert.AreEqual(1, instance.GetPreferencesForItem(sampleItemID3).Length()); Assert.AreEqual(2, instance.GetNumUsersWithPreferenceFor(sampleItemID)); Assert.AreEqual(1, instance.GetNumUsersWithPreferenceFor(sampleItemID, sampleItemID2)); Assert.AreEqual(1, instance.GetNumUsersWithPreferenceFor(sampleItemID, sampleItemID3)); }
public void testSetAndGetTempPreferences() { PlusAnonymousConcurrentUserDataModel instance = getTestableWithoutDelegateData(10); long anonymousUserID = instance.TakeAvailableUser().Value; IPreferenceArray tempPrefs = new GenericUserPreferenceArray(1); tempPrefs.SetUserID(0, anonymousUserID); tempPrefs.SetItemID(0, 1); instance.SetTempPrefs(tempPrefs, anonymousUserID); Assert.AreEqual(tempPrefs, instance.GetPreferencesFromUser(anonymousUserID)); instance.ReleaseUser(anonymousUserID); }
public void testGetPreferencesForItem() { IPreferenceArray prefs = new GenericUserPreferenceArray(2); long sampleUserID = 4; prefs.SetUserID(0, sampleUserID); long sampleItemID = 11; prefs.SetItemID(0, sampleItemID); prefs.SetUserID(1, sampleUserID); long sampleItemID2 = 22; prefs.SetItemID(1, sampleItemID2); FastByIDMap<IPreferenceArray> delegatePreferences = new FastByIDMap<IPreferenceArray>(); delegatePreferences.Put(sampleUserID, prefs); PlusAnonymousConcurrentUserDataModel instance = getTestableWithDelegateData(10, delegatePreferences); long anonymousUserID = instance.TakeAvailableUser().Value; IPreferenceArray tempPrefs = new GenericUserPreferenceArray(2); tempPrefs.SetUserID(0, anonymousUserID); tempPrefs.SetItemID(0, sampleItemID); tempPrefs.SetUserID(1, anonymousUserID); long sampleItemID3 = 33; tempPrefs.SetItemID(1, sampleItemID3); instance.SetTempPrefs(tempPrefs, anonymousUserID); Assert.AreEqual(sampleUserID, instance.GetPreferencesForItem(sampleItemID).Get(0).GetUserID()); Assert.AreEqual(2, instance.GetPreferencesForItem(sampleItemID).Length()); Assert.AreEqual(1, instance.GetPreferencesForItem(sampleItemID2).Length()); Assert.AreEqual(1, instance.GetPreferencesForItem(sampleItemID3).Length()); Assert.AreEqual(2, instance.GetNumUsersWithPreferenceFor(sampleItemID)); Assert.AreEqual(1, instance.GetNumUsersWithPreferenceFor(sampleItemID, sampleItemID2)); Assert.AreEqual(1, instance.GetNumUsersWithPreferenceFor(sampleItemID, sampleItemID3)); }
public void testGetNumUsersWithDelegateUsersOnly() { IPreferenceArray prefs = new GenericUserPreferenceArray(1); long sampleUserID = 1; prefs.SetUserID(0, sampleUserID); long sampleItemID = 11; prefs.SetItemID(0, sampleItemID); FastByIDMap<IPreferenceArray> delegatePreferences = new FastByIDMap<IPreferenceArray>(); delegatePreferences.Put(sampleUserID, prefs); PlusAnonymousConcurrentUserDataModel instance = getTestableWithDelegateData(10, delegatePreferences); Assert.AreEqual(1, instance.GetNumUsers()); }
public void testGetNumAnonymousUsers() { PlusAnonymousConcurrentUserDataModel instance = getTestableWithoutDelegateData(10); long anonymousUserID1 = instance.TakeAvailableUser().Value; IPreferenceArray tempPrefs1 = new GenericUserPreferenceArray(1); tempPrefs1.SetUserID(0, anonymousUserID1); tempPrefs1.SetItemID(0, 1); instance.SetTempPrefs(tempPrefs1, anonymousUserID1); // Anonymous users should not be included into the universe. Assert.AreEqual(0, instance.GetNumUsers()); }
public void testGetPreferencesForNonAnonymousUser() { IPreferenceArray prefs = new GenericUserPreferenceArray(1); long sampleUserID = 1; prefs.SetUserID(0, sampleUserID); long sampleItemID = 11; prefs.SetItemID(0, sampleItemID); FastByIDMap <IPreferenceArray> delegatePreferences = new FastByIDMap <IPreferenceArray>(); delegatePreferences.Put(sampleUserID, prefs); PlusAnonymousConcurrentUserDataModel instance = getTestableWithDelegateData(10, delegatePreferences); Assert.AreEqual(prefs, instance.GetPreferencesFromUser(sampleUserID)); }
public void testGetPreferenceValue() { PlusAnonymousConcurrentUserDataModel instance = getTestableWithoutDelegateData(10); long anonymousUserID = instance.TakeAvailableUser().Value; IPreferenceArray tempPrefs = new GenericUserPreferenceArray(1); tempPrefs.SetUserID(0, anonymousUserID); long sampleItemID = 1; tempPrefs.SetItemID(0, sampleItemID); tempPrefs.SetValue(0, float.MaxValue); instance.SetTempPrefs(tempPrefs, anonymousUserID); Assert.AreEqual(float.MaxValue, instance.GetPreferenceValue(anonymousUserID, sampleItemID), EPSILON); }
public void testGetUserIDs() { IPreferenceArray prefs = new GenericUserPreferenceArray(1); long sampleUserID = 1; prefs.SetUserID(0, sampleUserID); long sampleItemID = 11; prefs.SetItemID(0, sampleItemID); FastByIDMap<IPreferenceArray> delegatePreferences = new FastByIDMap<IPreferenceArray>(); delegatePreferences.Put(sampleUserID, prefs); PlusAnonymousConcurrentUserDataModel instance = getTestableWithDelegateData(10, delegatePreferences); long anonymousUserID = instance.TakeAvailableUser().Value; IPreferenceArray tempPrefs = new GenericUserPreferenceArray(1); tempPrefs.SetUserID(0, anonymousUserID); tempPrefs.SetItemID(0, 22); instance.SetTempPrefs(tempPrefs, anonymousUserID); var userIDs = instance.GetUserIDs(); userIDs.MoveNext(); Assert.AreEqual(sampleUserID, userIDs.Current); Assert.False(userIDs.MoveNext()); }