瀏覽代碼

Merge branch 'add_user_tag_20230606' of algorithm/rov-server into master

linfan 1 年之前
父節點
當前提交
b9f25c7bb5
共有 4 個文件被更改,包括 69 次插入24 次删除
  1. 1 0
      config.py
  2. 5 18
      recommend.py
  3. 7 5
      video_rank.py
  4. 56 1
      video_recall.py

+ 1 - 0
config.py

@@ -470,6 +470,7 @@ class BaseConfig(object):
         'hot_3_day_recall': 'hot_3_day_recall',  # 3天召回
         'hot_recall': 'hot_recall',  # hot召回
         'w2v_recall': 'w2v_recall', #word2vec
+        'u2i_tag_recall':'u2i_tag_recall', #u2i_tag_recall
     }
 
     # category id mapping

+ 5 - 18
recommend.py

@@ -200,7 +200,7 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
     exp_config = None
 
     if ab_code == 60058:
-        exp_config = pool_recall.get_hotrecall_config()
+        exp_config = pool_recall.get_U2I_config()
     elif ab_code == 60059:
         exp_config = pool_recall.get_w2v_config()
     elif ab_code == 60060:
@@ -211,7 +211,7 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
     if app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
         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_hot_item_reall))
+            t.append(gevent.spawn(pool_recall.get_U2I_reall, mid))
         elif  ab_code==60059:
             t.append(gevent.spawn(pool_recall.get_word2vec_item_reall))
         elif  ab_code==60061:
@@ -221,7 +221,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, config_.QUICK_FLOW_POOL_ID),
              gevent.spawn(pool_recall.flow_pool_recall, size)]
         if ab_code==60058:
-            t.append(gevent.spawn(pool_recall.get_hot_item_reall))
+            t.append(gevent.spawn(pool_recall.get_U2I_reall, mid))
         elif ab_code == 60059:
             t.append(gevent.spawn(pool_recall.get_word2vec_item_reall))
         elif ab_code == 60061:
@@ -309,9 +309,9 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
 
     if ab_code == 60058:
         if len(recall_result_list)>=4:
-            data['hot_recall'] = recall_result_list[3]
+            data['u2i_recall'] = recall_result_list[3]
         else:
-            data['hot_recall'] = []
+            data['u2i_recall'] = []
     elif ab_code == 60059:
         if len(recall_result_list)>=4:
             data['w2v_recall'] = recall_result_list[3]
@@ -327,19 +327,6 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
     #else:
     #print("data['hot_recall']", data['hot_recall'])
     if ab_code == 60058 or ab_code == 60059 or ab_code == 60060 or ab_code == 60061 :
-        # if ab_code == 60058:
-        #     test_config =pool_recall.get_hotrecall_config()
-        #     flow_config = pool_recall.get_hotrecall_flow_config()
-        # elif ab_code == 60059:
-        #     test_config = pool_recall.get_w2v_config()
-        #     flow_config = pool_recall.get_w2v_flow_config()
-        # elif ab_code == 60060:
-        #     test_config = pool_recall.get_test_config()
-        #     flow_config = pool_recall.get_flow_config()
-        # elif ab_code == 60061:
-        #     test_config = pool_recall.get_simrecall_config()
-        #     flow_config = pool_recall.get_simrecall_flow_config()
-        #print("test config:",test_config)
         rank_result, flow_num = video_sanke_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_Code=ab_code, exp_config=exp_config)
         result['flow_num'] = flow_num
         if rank_result:

+ 7 - 5
video_rank.py

@@ -720,7 +720,9 @@ def video_sanke_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=None
     :return: rank_result
     """
     if not data['rov_pool_recall'] and not data['flow_pool_recall'] \
-            and not data['hot_rcall'] and not data['hot_rcall']:
+            and not data['u2i_recall'] and not data['u2i_recall'] \
+            and not data['w2v_recall'] and not data['w2v_recall'] \
+            and not data['sim_recall'] and not data['sim_recall']:
         return [], 0
     # 地域分组小时级规则更新数据
     recall_dict = {}
@@ -748,9 +750,9 @@ def video_sanke_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=None
     w2v_recall =[]
     sim_recall = []
     if ab_Code==60058:
-        if len(data['hot_recall'])>0:
-            hot_recall = sorted(data['hot_recall'], key=lambda k: k.get('rovScore', 0), reverse=True)
-        recall_dict['hot_recall'] = hot_recall
+        if len(data['u2i_recall'])>0:
+            hot_recall = sorted(data['u2i_recall'], key=lambda k: k.get('rovScore', 0), reverse=True)
+        recall_dict['u2i_recall'] = hot_recall
     elif ab_Code==60059:
         if len(data['w2v_recall'])>0:
             recall_dict['w2v_recall'] = data['w2v_recall']
@@ -763,7 +765,7 @@ def video_sanke_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=None
             recall_dict['sim_recall'] = sim_recall
 
     recall_list = [('rov_recall_region_h',1, 1),('rov_recall_region_h',0.5, 1),('rov_recall_region_24h',1,1),
-                   ('hot_recall',0.5,1), ('w2v_recall',0.5,1),('rov_recall_24h',1,1), ('rov_recall_24h_dup',0.5,1)]
+                   ('u2i_recall',0.5,1), ('w2v_recall',0.5,1),('rov_recall_24h',1,1), ('rov_recall_24h_dup',0.5,1)]
     if exp_config  and exp_config['recall_list']:
         recall_list = exp_config['recall_list']
     #print("recall_config:", recall_list)

+ 56 - 1
video_recall.py

@@ -2574,6 +2574,20 @@ class PoolRecall(object):
         else:
             return None
 
+    def get_U2I_config(self):
+        recall_key = "u2i_exp_config"
+        data = self.redis_helper.get_data_from_redis(key_name=recall_key)
+        if data is not None:
+            try:
+                # print(data)
+                json_result = json.loads(data)
+                # print(json_result)
+                return json_result
+            except Exception as e:
+                return None
+        else:
+            return None
+
     def get_simrecall_config(self):
         recall_key = "simrecall_exp_config"
         data = self.redis_helper.get_data_from_redis(key_name=recall_key)
@@ -2648,4 +2662,45 @@ class PoolRecall(object):
             except Exception as e:
                 return None
         else:
-            return None
+            return None
+
+
+    def get_U2I_reall(self, mid):
+        #recall_key = "hot_video:"
+        if not mid:
+            return  []
+        recall_key = "u2i:"+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_tag_recall'],
+                         'abCode': self.ab_code}
+                except Exception as e:
+                    continue
+        if len(video_ids)<=0:
+            return  recall_result
+        video_ids = video_ids[:50]
+        #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(pool_type='rov')
+        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