|
@@ -299,37 +299,30 @@ def predict_mid_video_res_with_add(now_date, mid, video_id, abtest_param, abtest
|
|
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, app_type):
|
|
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, app_type):
|
|
|
|
|
|
model_key = abtest_param.get('model_key', 'ad_out_v1')
|
|
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 = 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 = 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}"
|
|
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"
|
|
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)
|
|
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)
|
|
item_score = redis_helper.get_data_from_redis(key_name=item_key_name)
|
|
|
|
|
|
- if user_score is None and use_mean == 'true':
|
|
|
|
- user_score = redis_helper.get_data_from_redis(key_name=user_key_name_mean)
|
|
|
|
-
|
|
|
|
- if item_score is None and use_mean == 'true':
|
|
|
|
- item_score = redis_helper.get_data_from_redis(key_name=item_key_name_mean)
|
|
|
|
-
|
|
|
|
- if user_score is None:
|
|
|
|
- user_score = 0.0
|
|
|
|
- else:
|
|
|
|
- user_score = float(user_score)
|
|
|
|
-
|
|
|
|
- if item_score is None:
|
|
|
|
- item_score = 0.0
|
|
|
|
- else:
|
|
|
|
- item_score = float(item_score)
|
|
|
|
|
|
+ # 如果离线分数为空,则走基线逻辑
|
|
|
|
+ if user_score is None or item_score is None:
|
|
|
|
+ result = predict_mid_video_res(
|
|
|
|
+ now_date=now_date,
|
|
|
|
+ mid=mid,
|
|
|
|
+ video_id=video_id,
|
|
|
|
+ abtest_param=abtest_param,
|
|
|
|
+ abtest_id=abtest_id,
|
|
|
|
+ abtest_config_tag=abtest_config_tag,
|
|
|
|
+ ab_test_code=ab_test_code,
|
|
|
|
+ care_model_status=care_model_status,
|
|
|
|
+ app_type=app_type
|
|
|
|
+ )
|
|
|
|
+ return result
|
|
|
|
|
|
offline_score = user_score + item_score
|
|
offline_score = user_score + item_score
|
|
-
|
|
|
|
online_features = {
|
|
online_features = {
|
|
'ctx_apptype': str(app_type),
|
|
'ctx_apptype': str(app_type),
|
|
'ctx_week': time.strftime('%w', time.localtime()),
|
|
'ctx_week': time.strftime('%w', time.localtime()),
|
|
@@ -337,8 +330,6 @@ def predict_mid_video_res_with_model(now_date, mid, video_id, abtest_param, abte
|
|
}
|
|
}
|
|
|
|
|
|
final_score, online_score = get_final_score(online_features, offline_score)
|
|
final_score, online_score = get_final_score(online_features, offline_score)
|
|
-
|
|
|
|
- # 获取对应的阈值
|
|
|
|
threshold = float(redis_helper.get_data_from_redis(key_name=threshold_key))
|
|
threshold = float(redis_helper.get_data_from_redis(key_name=threshold_key))
|
|
|
|
|
|
# 阈值判断
|
|
# 阈值判断
|
|
@@ -349,8 +340,6 @@ def predict_mid_video_res_with_model(now_date, mid, video_id, abtest_param, abte
|
|
# 否则,不出广告
|
|
# 否则,不出广告
|
|
ad_predict = 1
|
|
ad_predict = 1
|
|
result = {
|
|
result = {
|
|
- 'use_mean_key': use_mean_key,
|
|
|
|
- 'threshold_key': threshold_key,
|
|
|
|
'user_score': user_score,
|
|
'user_score': user_score,
|
|
'item_score': item_score,
|
|
'item_score': item_score,
|
|
'final_score': final_score,
|
|
'final_score': final_score,
|