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 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 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() );
        }
Example #4
0
        public void testUserID()
        {
            IPreferenceArray prefs = new GenericUserPreferenceArray(3);

            Assert.AreEqual(3, prefs.Length());
            prefs.SetUserID(0, 1L);
            Assert.AreEqual(1L, prefs.GetUserID(0));
            Assert.AreEqual(1L, prefs.GetUserID(1));
            Assert.AreEqual(1L, prefs.GetUserID(2));
        }
        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 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 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 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 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 testUserID()
 {
     IPreferenceArray prefs = new GenericUserPreferenceArray(3);
     Assert.AreEqual(3, prefs.Length());
     prefs.SetUserID(0, 1L);
     Assert.AreEqual(1L, prefs.GetUserID(0));
     Assert.AreEqual(1L, prefs.GetUserID(1));
     Assert.AreEqual(1L, prefs.GetUserID(2));
 }
        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);
        }