Ejemplo n.º 1
0
    def testExploitativeProbabilisticInterleaveInterleave(self):
        r1 = ProbabilisticRankingFunction(1, self.weights_1)
        r2 = ProbabilisticRankingFunction(1, self.weights_2)
        epi = ExploitativeProbabilisticInterleave("--exploration_rate=0.5")
        r1.init_ranking(self.query)
        r2.init_ranking(self.query)
        (l, (r1_ret, r2_ret)) = epi.interleave(r1, r2, self.query, 4)
        self.assertEqual(r1, r1_ret, "r1 is just passed through.")
        self.assertEqual(r2, r2_ret, "r2 is just passed through.")
        self.assertEqual(len(l), 4, "interleave produces a list of length 4.")
        self.assertTrue(0 in l, "document 0 is in l.")
        self.assertTrue(1 in l, "document 0 is in l.")
        self.assertTrue(2 in l, "document 0 is in l.")
        self.assertTrue(3 in l, "document 0 is in l.")

        observed_l = {}
        for _ in range(0, 100):
            (l, (r1_ret, r2_ret)) = epi.interleave(r1, r2, self.query, 4)
            l_str = " ".join([str(docid) for docid in l])
            if not l_str in observed_l:
                observed_l[l_str] = 1
            else:
                observed_l[l_str] += 1
        self.assertIn("0 1 2 3", observed_l, "List was observed: 0 1 2 3.")
        self.assertIn("1 0 3 2", observed_l, "List was observed: 0 1 2 3.")
        self.assertIn("3 1 2 0", observed_l, "List was observed: 0 1 2 3.")
        self.assertIn("2 1 0 3", observed_l, "List was observed: 0 1 2 3.")
Ejemplo n.º 2
0
    def testExploitativeProbabilisticInterleaveInterleave(self):
        r1 = ProbabilisticRankingFunction(1, self.weights_1)
        r2 = ProbabilisticRankingFunction(1, self.weights_2)
        epi = ExploitativeProbabilisticInterleave("--exploration_rate=0.5")
        r1.init_ranking(self.query)
        r2.init_ranking(self.query)
        (l, (r1_ret, r2_ret)) = epi.interleave(r1, r2, self.query, 4)
        self.assertEqual(r1, r1_ret, "r1 is just passed through.")
        self.assertEqual(r2, r2_ret, "r2 is just passed through.")
        self.assertEqual(len(l), 4, "interleave produces a list of length 4.")
        self.assertTrue(0 in l, "document 0 is in l.")
        self.assertTrue(1 in l, "document 0 is in l.")
        self.assertTrue(2 in l, "document 0 is in l.")
        self.assertTrue(3 in l, "document 0 is in l.")

        observed_l = {}
        for _ in range(0, 100):
            (l, (r1_ret, r2_ret)) = epi.interleave(r1, r2, self.query, 4)
            l_str = " ".join([str(docid) for docid in l])
            if not l_str in observed_l:
                observed_l[l_str] = 1
            else:
                observed_l[l_str] += 1
        self.assertIn("0 1 2 3", observed_l, "List was observed: 0 1 2 3.")
        self.assertIn("1 0 3 2", observed_l, "List was observed: 0 1 2 3.")
        self.assertIn("3 1 2 0", observed_l, "List was observed: 0 1 2 3.")
        self.assertIn("2 1 0 3", observed_l, "List was observed: 0 1 2 3.")