linfan před 1 rokem
rodič
revize
808eec4301
3 změnil soubory, kde provedl 54 přidání a 0 odebrání
  1. 1 0
      config.py
  2. 5 0
      recommend.py
  3. 48 0
      video_recall.py

+ 1 - 0
config.py

@@ -488,6 +488,7 @@ class BaseConfig(object):
         'u2i_tag_recall':'u2i_tag_recall', #u2i_tag_recall
         'u2u2i_recall':'u2u2i_recall', #u2u2i_recall,
         'return_video_recall': 'return_video_recall',  # return_video_recall
+        'u2i_play_tag_recall': 'u2i_play_tag_recall',  # u2i_play_tag_recall
     }
 
     # category id mapping

+ 5 - 0
recommend.py

@@ -218,6 +218,7 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
         t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time, ab_code, exp_config)]
         if ab_code==60058:
             t.append(gevent.spawn(pool_recall.get_U2I_reall, mid, exp_config))
+            t.append(gevent.spawn(pool_recall.get_usertag_play_reall, mid, exp_config))
         elif  ab_code==60059:
             t.append(gevent.spawn(pool_recall.get_word2vec_item_reall, exp_config))
         elif  ab_code==60061 or ab_code==60063:
@@ -232,6 +233,7 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
              gevent.spawn(pool_recall.flow_pool_recall, size)]
         if ab_code==60058:
             t.append(gevent.spawn(pool_recall.get_U2I_reall, mid, exp_config))
+            t.append(gevent.spawn(pool_recall.get_usertag_play_reall, mid, exp_config))
         elif ab_code == 60059:
             t.append(gevent.spawn(pool_recall.get_word2vec_item_reall, exp_config))
         elif ab_code == 60061 or ab_code==60063:
@@ -323,9 +325,12 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
     data['w2v_recall'] = []
     data['sim_recall'] = []
     data['u2u2i_recall'] = []
+    data['u2i_play_tag_recall'] = []
     if ab_code == 60058:
         if len(recall_result_list)>=4:
             data['u2i_recall'] = recall_result_list[3]
+        if len(recall_result_list)>=5:
+            data['u2i_play_tag_recall'] = recall_result_list[4]
     elif ab_code == 60059:
         if len(recall_result_list)>=4:
             data['w2v_recall'] = recall_result_list[3]

+ 48 - 0
video_recall.py

@@ -2875,3 +2875,51 @@ class PoolRecall(object):
                 recall_result.append(recall_dict[vid])
         #print("u2i recall_result:", recall_result)
         return recall_result
+
+    def get_usertag_play_reall(self, mid, exp_config=None):
+        # recall_key = "hot_video:"
+        if not mid:
+            return []
+        recall_key = "u2i_play:" + mid
+        # print("recall_key:", recall_key)
+        data = self.redis_helper.get_data_from_redis(key_name=recall_key)
+
+        # print(data)
+        recall_result = []
+        recall_dict = {}
+        video_ids = []
+        if data is not None:
+            json_result = json.loads(data)
+            # print("json_result:", json_result)
+            for per_item in json_result:
+                try:
+                    vid = int(per_item[0])
+                    video_ids.append(vid)
+                    recall_dict[vid] = {'videoId': vid, 'flowPool': '',
+                                        'rovScore': float(per_item[1]), 'pushFrom': config_.PUSH_FROM['u2i_play_tag_recall'],
+                                        'abCode': self.ab_code}
+                except Exception as e:
+                    continue
+        if len(video_ids) <= 0:
+            return recall_result
+        recall_num = 20
+        try:
+            if exp_config and exp_config['recall_get_num']:
+                recall_num = int(exp_config['recall_get_num'])
+        except:
+            recall_num = 20
+        # print("recall_num:", recall_num)
+        video_ids = video_ids[:recall_num]
+        # print(video_ids)
+        filter_ = FilterVideos(request_id=self.request_id,
+                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+        filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal')
+        if filtered_viewed_videos is None:
+            return recall_result
+        # print("filtered_viewed_videos:", filtered_viewed_videos)
+        for vid in filtered_viewed_videos:
+            if vid in recall_dict:
+                recall_result.append(recall_dict[vid])
+        # print("u2i recall_result:", recall_result)
+        return recall_result
+