Example #1
0
 def test_scores(self):
     ids = [5299, 1843, 2464, 7661, 5369]
     scores = AddonRecommendation.scores(ids)
     q = AddonRecommendation.objects.filter(addon__in=ids)
     for addon, recs in itertools.groupby(q, lambda x: x.addon_id):
         for rec in recs:
             eq_(scores[addon][rec.other_addon_id], rec.score)
Example #2
0
 def test_scores(self):
     ids = [5299, 1843, 2464, 7661, 5369]
     scores = AddonRecommendation.scores(ids)
     q = AddonRecommendation.objects.filter(addon__in=ids)
     for addon, recs in itertools.groupby(q, lambda x: x.addon_id):
         for rec in recs:
             eq_(scores[addon][rec.other_addon_id], rec.score)
Example #3
0
 def build_recs(cls, addon_ids):
     """Get the top ranking add-ons according to recommendation scores."""
     scores = AddonRecommendation.scores(addon_ids)
     d = collections.defaultdict(int)
     for others in scores.values():
         for addon, score in others.items():
             d[addon] += score
     addons = sorted(d.items(), key=lambda x: x[1], reverse=True)
     return [addon for addon, score in addons if addon not in addon_ids]
Example #4
0
 def build_recs(cls, addon_ids):
     """Get the top ranking add-ons according to recommendation scores."""
     scores = AddonRecommendation.scores(addon_ids)
     d = collections.defaultdict(int)
     for others in scores.values():
         for addon, score in others.items():
             d[addon] += score
     addons = sorted(d.items(), key=lambda x: x[1], reverse=True)
     return [addon for addon, score in addons if addon not in addon_ids]
Example #5
0
 def build_recs(cls, addon_ids):
     """Get the top ranking add-ons according to recommendation scores."""
     scores = AddonRecommendation.scores(addon_ids)
     d = collections.defaultdict(int)
     for others in scores.values():
         for addon, score in others.items():
             d[addon] += score
     addons = [(score, addon) for addon, score in d.items()]
     return [addon for _, addon in sorted(addons)]
Example #6
0
 def expected_recs(self):
     scores, ranked = [], {}
     # Get all the add-on => rank pairs.
     for x in AddonRecommendation.scores(self.ids).values():
         scores.extend(x.items())
     # Sum up any dupes.
     groups = itertools.groupby(sorted(scores), key=lambda x: x[0])
     for addon, pairs in groups:
         ranked[addon] = sum(x[1] for x in pairs)
     addons = sorted(ranked.items(), key=lambda x: x[1], reverse=True)
     return [x[0] for x in addons if x[0] not in self.ids]
Example #7
0
 def expected_recs(self):
     scores, ranked = [], {}
     # Get all the add-on => rank pairs.
     for x in AddonRecommendation.scores(self.ids).values():
         scores.extend(x.items())
     # Sum up any dupes.
     groups = itertools.groupby(sorted(scores), key=lambda x: x[0])
     for addon, pairs in groups:
         ranked[addon] = sum(x[1] for x in pairs)
     addons = sorted(ranked.items(), key=lambda x: x[1], reverse=True)
     return [x[0] for x in addons if x[0] not in self.ids]