Browse Source

update rank

linfan 1 year ago
parent
commit
b0e63067d1
3 changed files with 41 additions and 36 deletions
  1. 7 5
      rank_service.py
  2. 3 2
      recommend.py
  3. 31 29
      video_rank.py

+ 7 - 5
rank_service.py

@@ -3,6 +3,9 @@ from db_helper import RedisHelper
 from config import set_config
 from  utils import request_post
 import json
+from log import Log
+log_ = Log()
+
 
 config_ = set_config()
 def get_featurs(data, size, top_K, flow_pool_P, env_dict):
@@ -126,7 +129,7 @@ def get_featurs(data, size, top_K, flow_pool_P, env_dict):
     feature_dict["day_view_pv_list"] = day_view_pv_list
     feature_dict["day_view_users_list"] = day_view_users_list
     feature_dict["day_share_users_list"] = day_share_users
-    return feature_dict
+    return feature_dict, recall_list
 
 def get_tf_serving_sores(feature_dict):
     #for k, v in feature_dict:
@@ -162,10 +165,9 @@ def get_tf_serving_sores(feature_dict):
 
     # print("result:", result)
     if result is None:
-        # print("result is None")
-        # log_.info('过滤失败,types: {}'.format(types))
+        print("result is None")
+        log_.info('call tf serving error,types: {}')
         return []
 
     print(result)
-
-    filtered_videos = result['data']
+    return result

+ 3 - 2
recommend.py

@@ -1679,7 +1679,8 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
     # old video: 60056, test2
     elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054 \
             or ab_code == 60055 or ab_code == 60056 or ab_code==60057  \
-            or ab_code==60065 or ab_code == 60067 or ab_code==60068 :
+            or ab_code==60065 or ab_code == 60067 or ab_code==60068 \
+            or ab_code==60066:
         result = video_old_recommend(request_id=request_id,
                                      mid=mid, uid=uid, app_type=app_type,
                                      size=size, top_K=top_K, flow_pool_P=flow_pool_P,
@@ -1798,7 +1799,7 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
                                  params=params, rule_key_30day=rule_key_30day, shield_config=shield_config)
     elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054 or ab_code == 60055 or \
             ab_code == 60056 or ab_code==60057 or ab_code ==60065 or ab_code ==60067 \
-            or ab_code ==60068:
+            or ab_code ==60068 or ab_code==60066:
         result = video_old_recommend(request_id=request_id,
                                  mid=mid, uid=uid, app_type=app_type,
                                  size=size, top_K=top_K, flow_pool_P=flow_pool_P,

+ 31 - 29
video_rank.py

@@ -626,36 +626,38 @@ def video_new_rank2(data, size, top_K, flow_pool_P, ab_code, exp_config=None):
         pre_str = "k_p7:"
     #print("pre_str:", pre_str)
     recall_list = []
+    rov_recall_rank = data['rov_pool_recall']
     #call rank service
-    # if ab_code == 60066:
-    #     get_featurs()
-    #
-    # else:
-    redisObj = RedisHelper()
-    vidKeys = []
-    for recall_item in data['rov_pool_recall']:
-        if len(recall_item) <= 0:
-            continue
-        vid = recall_item.get("videoId", 0)
-        vidKeys.append(pre_str + str(vid))
-        recall_list.append(recall_item)
-    # print("vidKeys:", vidKeys)
-    video_scores = redisObj.get_batch_key(vidKeys)
-    # print("video_score:",video_scores)
-    for i in range(len(video_scores)):
-        try:
-            # print(video_scores[i])
-            if video_scores[i] is None:
-                recall_list[i]['sort_score'] = 0.0
-            else:
-                video_score_str = json.loads(video_scores[i])
-                # print("video_score_str:", video_score_str)
-                recall_list[i]['sort_score'] = video_score_str[0]
-        except Exception:
-            recall_list[i]['sort_score'] = 0.0
-    #sort_items = sorted(video_items, key=lambda k: k[1], reverse=True)
-    rov_recall_rank =sorted(recall_list, key=lambda k: k.get('sort_score', 0), reverse=True)
-    #print(rov_recall_rank)
+    if ab_code == 60066:
+        feature_dict, recall_list = get_featurs(data, size, top_K, flow_pool_P)
+        score_result = get_tf_serving_sores(feature_dict)
+        if score_result and len(score_result) > 0 and len(score_result) == len(recall_list):
+            for i in range(len(score_result)):
+                recall_list[i]['sort_score'] = score_result[i]
+            rov_recall_rank = sorted(recall_list, key=lambda k: k.get('sort_score', 0), reverse=True)
+    else:
+        redisObj = RedisHelper()
+        vidKeys = []
+        for recall_item in data['rov_pool_recall']:
+            if len(recall_item) <= 0:
+                continue
+            vid = recall_item.get("videoId", 0)
+            vidKeys.append(pre_str + str(vid))
+            recall_list.append(recall_item)
+        video_scores = redisObj.get_batch_key(vidKeys)
+        if video_scores and len(recall_list) > 0:
+            for i in range(len(video_scores)):
+                try:
+                    if video_scores[i] is None:
+                        recall_list[i]['sort_score'] = 0.0
+                    else:
+                        video_score_str = json.loads(video_scores[i])
+                        # print("video_score_str:", video_score_str)
+                        recall_list[i]['sort_score'] = video_score_str[0]
+                except Exception:
+                    recall_list[i]['sort_score'] = 0.0
+            rov_recall_rank = sorted(recall_list, key=lambda k: k.get('sort_score', 0), reverse=True)
+    print(rov_recall_rank)
     flow_recall_rank = sorted(data['flow_pool_recall'], key=lambda k: k.get('rovScore', 0), reverse=True)
     rov_recall_rank, flow_recall_rank = remove_duplicate(rov_recall=rov_recall_rank, flow_recall=flow_recall_rank,
                                                      top_K=top_K)