yangxiaohui 1 éve
szülő
commit
f7b4389c8c
2 módosított fájl, 36 hozzáadás és 16 törlés
  1. 26 13
      ad_recommend.py
  2. 10 3
      config.py

+ 26 - 13
ad_recommend.py

@@ -295,25 +295,36 @@ def predict_mid_video_res_with_add(now_date, mid, video_id, abtest_param, abtest
     return result
 
 def predict_mid_video_res_with_model(now_date, mid, video_id, abtest_param, abtest_id, abtest_config_tag, ab_test_code, care_model_status):
-    # now_dt = datetime.datetime.strftime(now_date, '%Y%m%d')
-    now_dt = '20231129'
-    model_key = abtest_param.get('model_key', 'ad_out_v2_model_v1.day')
-    user_key_name = f"{config_.KEY_NAME_PREFIX_AD_OUT_MODEL_SCORE_USER}{model_key}:{now_dt}"
-    item_key_name = f"{config_.KEY_NAME_PREFIX_AD_OUT_MODEL_SCORE_ITEM}{model_key}:{now_dt}"
+    model_key = abtest_param.get('model_key', 'ad_out_v1')
+    mean_key = 'mean'
+    user_key_name = f"{config_.KEY_NAME_PREFIX_AD_OUT_MODEL_SCORE_USER}{model_key}:{mid}"
+    user_key_name_mean = f"{config_.KEY_NAME_PREFIX_AD_OUT_MODEL_SCORE_USER}{model_key}:{mean_key}"
+    item_key_name = f"{config_.KEY_NAME_PREFIX_AD_OUT_MODEL_SCORE_ITEM}{model_key}:{video_id}"
+    item_key_name_mean = f"{config_.KEY_NAME_PREFIX_AD_OUT_MODEL_SCORE_ITEM}{model_key}:{mean_key}"
+    config_key_prefix = f"{config_.KEY_NAME_PREFIX_AD_OUT_MODEL_CONFIG}{model_key}:{abtest_id}:{abtest_config_tag}"
+    threshold_key = f"{config_key_prefix}:threshold"
+    use_mean_key = f"{config_key_prefix}:use_mean"
+
+    use_mean = redis_helper.get_data_from_redis(key_name=use_mean_key)
+    user_score = redis_helper.get_data_from_redis(key_name=user_key_name)
+    item_score = redis_helper.get_data_from_redis(key_name=item_key_name)
 
-    user_score = redis_helper.get_score_with_value(key_name=user_key_name, value=mid)
-    item_score = redis_helper.get_score_with_value(key_name=item_key_name, value=video_id)
     if user_score is None:
-        user_score = 0.0
+        if use_mean:
+            user_score = redis_helper.get_data_from_redis(key_name=user_key_name_mean)
+        else:
+            user_score = 0.0
+
     if item_score is None:
-        item_score = 0.0
+        if use_mean:
+            item_score = redis_helper.get_data_from_redis(key_name=item_key_name_mean)
+        else:
+            item_score = 0.0
+
     final_score = user_score + item_score
 
     # 获取对应的阈值
-    threshold_key_name_prefix = config_.KEY_NAME_PREFIX_AD_THRESHOLD
-    threshold_key_name = f"{threshold_key_name_prefix}{abtest_id}:{abtest_config_tag}:{ab_test_code}:"
-    # threshold = redis_helper.get_data_from_redis(key_name=threshold_key_name)
-    threshold = 0.2
+    threshold = redis_helper.get_data_from_redis(key_name=threshold_key)
 
     # 阈值判断
     if final_score > threshold:
@@ -323,6 +334,8 @@ def predict_mid_video_res_with_model(now_date, mid, video_id, abtest_param, abte
         # 否则,不出广告
         ad_predict = 1
     result = {
+        'use_mean_key': use_mean_key,
+        'threshold_key': threshold_key,
         'user_score': user_score,
         'item_score': item_score,
         'final_score': final_score,

+ 10 - 3
config.py

@@ -1173,7 +1173,12 @@ class BaseConfig(object):
 
         '173-u': {
             'threshold_mix_func': 'model',
-            'model_key': 'ad_out_v2_model_v1.day',
+            'model_key': 'ad_out_v1',
+        },  # 是否出广告模型预测
+
+        '173-v': {
+            'threshold_mix_func': 'model',
+            'model_key': 'ad_out_v1',
         },  # 是否出广告模型预测
 
 
@@ -1893,10 +1898,12 @@ class BaseConfig(object):
 
     }
 
-    # 有广告时的用户跳出分数预测结果存放 redis key 前缀,完整格式:ad:out:model:score:user:{model_key}:{date}
+    # 有广告时的用户跳出分数预测结果存放 redis key 前缀,完整格式:ad:out:model:score:user:{model_key}:{mid}
     KEY_NAME_PREFIX_AD_OUT_MODEL_SCORE_USER = 'ad:out:model:score:user:'
-    # 有广告时的视频跳出分数预测结果存放 redis key 前缀,完整格式:ad:out:model:score:video:{model_key}:{date}
+    # 有广告时的视频跳出分数预测结果存放 redis key 前缀,完整格式:ad:out:model:score:video:{model_key}:{videoid}
     KEY_NAME_PREFIX_AD_OUT_MODEL_SCORE_ITEM = 'ad:out:model:score:item:'
+    # 有广告时的视频跳出分数预测结果存放 redis key 前缀,完整格式:ad:out:model:score:video:{model_key}:{date}
+    KEY_NAME_PREFIX_AD_OUT_MODEL_CONFIG = 'ad:out:model:config:'
     # 用户组有广告时的分享率预测结果存放 redis key 前缀,完整格式:ad:users:group:predict:share:rate:{user_data_key}:{date}
     KEY_NAME_PREFIX_AD_GROUP = 'ad:users:group:predict:share:rate:'
     # 视频有广告时的分享率预测结果存放 redis key 前缀,完整格式:ad:video:predict:share:rate:{video_data_key}:{date}