コード例 #1
0
    def calc_weighted_top_list_method1(self,
                                       site_id,
                                       similarity_type,
                                       items_list,
                                       extra_excludes_list=[]):
        if len(items_list) > 15:
            recent_history = items_list[:15]
        else:
            recent_history = items_list

        excludes_set = set(items_list + extra_excludes_list)

        # calculate weighted top list from recent browsing history
        rec_map = {}
        for row in self.getSimilaritiesForItems(site_id, similarity_type,
                                                recent_history):
            recommended_items = row["mostSimilarItems"]
            for rec_item, score in recommended_items:
                if rec_item not in excludes_set:
                    rec_map.setdefault(rec_item, [0, 0])
                    rec_map[rec_item][0] += float(score)
                    rec_map[rec_item][1] += 1
        rec_tuples = []
        for key in rec_map.keys():
            score_total, count = rec_map[key][0], rec_map[key][1]
            rec_tuples.append((key, score_total / count))
        rec_tuples.sort(lambda a, b: sign(b[1] - a[1]))
        topn = [rec_tuple for rec_tuple in rec_tuples]
        return topn
コード例 #2
0
ファイル: mongo_client.py プロジェクト: pocoweb/poco
    def calc_weighted_top_list_method1(self, site_id, similarity_type,
            items_list, extra_excludes_list=[]):
        if len(items_list) > 15:
            recent_history = items_list[:15]
        else:
            recent_history = items_list

        excludes_set = set(items_list + extra_excludes_list)

        # calculate weighted top list from recent browsing history
        rec_map = {}
        for row in self.getSimilaritiesForItems(site_id, similarity_type, recent_history):
            recommended_items = row["mostSimilarItems"]
            for rec_item, score in recommended_items:
                if rec_item not in excludes_set:
                    rec_map.setdefault(rec_item, [0, 0])
                    rec_map[rec_item][0] += float(score)
                    rec_map[rec_item][1] += 1
        rec_tuples = []
        for key in rec_map.keys():
            score_total, count = rec_map[key][0], rec_map[key][1]
            rec_tuples.append((key, score_total / count))
        rec_tuples.sort(lambda a, b: sign(b[1] - a[1]))
        topn = [rec_tuple for rec_tuple in rec_tuples]
        return topn
コード例 #3
0
def updateRecord(connection, site_id, item_view_times_map, last_item_id1,
                 last_rows):
    last_rows.sort(lambda a, b: sign(b[1] - a[1]))

    item1_total_views = item_view_times_map[last_item_id1]
    content_dict = {
        "item_id": last_item_id1,
        "total_views": item1_total_views,
        "viewedUltimatelyBuys": []
    }
    for row in last_rows:
        item_id2, count = row
        content_dict["viewedUltimatelyBuys"].append({
            "item_id":
            item_id2,
            "count":
            count,
            "percentage":
            count / item1_total_views
        })

    c_viewed_ultimately_buys = getSiteDBCollection(connection, site_id,
                                                   "viewed_ultimately_buys")
    c_viewed_ultimately_buys.update({"item_id": last_item_id1},
                                    content_dict,
                                    upsert=True)
コード例 #4
0
def updateRecord(connection, site_id, item_view_times_map, last_item_id1, last_rows):
    last_rows.sort(lambda a, b: sign(b[1] - a[1]))

    item1_total_views = item_view_times_map[last_item_id1]
    content_dict = {"item_id": last_item_id1,
                    "total_views": item1_total_views, "viewedUltimatelyBuys": []}
    for row in last_rows:
        item_id2, count = row
        content_dict["viewedUltimatelyBuys"].append(
            {"item_id": item_id2,
             "count": count,
             "percentage": count / item1_total_views})

    c_viewed_ultimately_buys = getSiteDBCollection(
        connection, site_id, "viewed_ultimately_buys")
    c_viewed_ultimately_buys.update(
        {"item_id": last_item_id1}, content_dict, upsert=True)
コード例 #5
0
    def calc_weighted_top_list_method1(self,
                                       site_id,
                                       similarity_type,
                                       items_list,
                                       extra_excludes_list=[]):
        # the new items added to the items_list, are appended to the end of the list
        # here we have to get the latest 15 items, so we get the last 15 items
        # from the items_list
        if len(items_list) > 15:
            recent_history = items_list[-15:]
        else:
            recent_history = items_list
        # some calc are item-order releated, so we have to get the items reversed
        recent_history = recent_history[::-1]

        weights = settings.SIMILARITY_WEIGHT.get(similarity_type, [])
        wei_cnt = len(weights)
        his_cnt = len(recent_history)
        if his_cnt <= wei_cnt:
            weight_dict = dict(zip(recent_history, weights[0:his_cnt]))
        else:
            weight_dict = dict(zip(recent_history[0:wei_cnt], weights))

        excludes_set = set(items_list + extra_excludes_list)

        # calculate weighted top list from recent browsing history
        rec_map = {}
        for row in self.getSimilaritiesForItems(site_id, similarity_type,
                                                recent_history):
            recommended_items = row["mostSimilarItems"]
            for rec_item, score in recommended_items:
                if rec_item not in excludes_set:
                    rec_map.setdefault(rec_item, [0, 0])
                    rec_map[rec_item][0] += (
                        float(score) * weight_dict.get(row['item_id'], 1))
                    rec_map[rec_item][1] += 1
        rec_tuples = []
        for key in rec_map.keys():
            score_total, count = rec_map[key][0], rec_map[key][1]
            rec_tuples.append((key, score_total / count))
        rec_tuples.sort(lambda a, b: sign(b[1] - a[1]))
        topn = [rec_tuple for rec_tuple in rec_tuples]
        return topn
コード例 #6
0
ファイル: mongo_client.py プロジェクト: sunliwen/poco
    def calc_weighted_top_list_method1(self, site_id, similarity_type,
            items_list, extra_excludes_list=[]):
        # the new items added to the items_list, are appended to the end of the list
        # here we have to get the latest 15 items, so we get the last 15 items
        # from the items_list
        if len(items_list) > 15:
            recent_history = items_list[-15:]
        else:
            recent_history = items_list
        # some calc are item-order releated, so we have to get the items reversed
        recent_history = recent_history[::-1]

        weights = settings.SIMILARITY_WEIGHT.get(similarity_type, [])
        wei_cnt = len(weights)
        his_cnt = len(recent_history)
        if his_cnt <= wei_cnt:
            weight_dict = dict(zip(recent_history, weights[0:his_cnt]))
        else:
            weight_dict = dict(zip(recent_history[0:wei_cnt], weights))

        excludes_set = set(items_list + extra_excludes_list)

        # calculate weighted top list from recent browsing history
        rec_map = {}
        for row in self.getSimilaritiesForItems(site_id, similarity_type, recent_history):
            recommended_items = row["mostSimilarItems"]
            for rec_item, score in recommended_items:
                if rec_item not in excludes_set:
                    rec_map.setdefault(rec_item, [0, 0])
                    rec_map[rec_item][0] += (float(score) * weight_dict.get(row['item_id'], 1))
                    rec_map[rec_item][1] += 1
        rec_tuples = []
        for key in rec_map.keys():
            score_total, count = rec_map[key][0], rec_map[key][1]
            rec_tuples.append((key, score_total / count))
        rec_tuples.sort(lambda a, b: sign(b[1] - a[1]))
        topn = [rec_tuple for rec_tuple in rec_tuples]
        return topn