|
@@ -60,14 +60,12 @@ def get_feature_data(now_date, project, table):
|
|
return feature_df
|
|
return feature_df
|
|
|
|
|
|
|
|
|
|
-def video_rank(app_type, df, now_date, now_h, return_count):
|
|
|
|
|
|
+def video_rank(app_type, df, now_date):
|
|
"""
|
|
"""
|
|
对视频进行排序
|
|
对视频进行排序
|
|
:param app_type:
|
|
:param app_type:
|
|
:param df:
|
|
:param df:
|
|
:param now_date:
|
|
:param now_date:
|
|
- :param now_h:
|
|
|
|
- :param return_count: 小时级数据回流限制数
|
|
|
|
:return:
|
|
:return:
|
|
"""
|
|
"""
|
|
df = df.fillna(0)
|
|
df = df.fillna(0)
|
|
@@ -90,44 +88,30 @@ def video_rank(app_type, df, now_date, now_h, return_count):
|
|
filtered_df_1 = filtered_df_1.sort_values(by=['站外播放量'], ascending=False)
|
|
filtered_df_1 = filtered_df_1.sort_values(by=['站外播放量'], ascending=False)
|
|
log_.info(f'filtered_df_1 count = {len(filtered_df_1)}')
|
|
log_.info(f'filtered_df_1 count = {len(filtered_df_1)}')
|
|
|
|
|
|
- # 排序合并
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- # 获取符合进入召回源条件的视频,进入条件:小时级回流>=20 && score>=0.005
|
|
|
|
- h_recall_df = df[(df['lastonehour_return'] >= return_count) & (df['score'] >= 0.005)]
|
|
|
|
- h_recall_videos = h_recall_df['videoid'].to_list()
|
|
|
|
- log_.info(f'h_recall videos count = {len(h_recall_videos)}')
|
|
|
|
- # 不符合进入召回源条件的视频
|
|
|
|
- df = df.append(h_recall_df)
|
|
|
|
- h_else_df = df.drop_duplicates(['videoid'], keep=False)
|
|
|
|
- h_else_df = h_else_df.sort_values(by=['score'], ascending=False)
|
|
|
|
- h_else_videos = h_else_df['videoid'].to_list()
|
|
|
|
- # 合并,给定分数
|
|
|
|
- final_videos = h_recall_videos + h_else_videos
|
|
|
|
|
|
+ # 排序合并,给定分数
|
|
|
|
+ merge_df = filtered_df_1.append(filtered_df_6)
|
|
|
|
+ merge_df = merge_df.drop_duplicates(['videoid'], keep=False)
|
|
|
|
+ merge_videos = merge_df['videoid'].to_list()
|
|
final_result = {}
|
|
final_result = {}
|
|
- step = round(100/len(final_videos), 3)
|
|
|
|
- for i, video_id in enumerate(final_videos):
|
|
|
|
|
|
+ step = round(100 / len(merge_videos), 3)
|
|
|
|
+ for i, video_id in enumerate(merge_videos):
|
|
score = 100 - i * step
|
|
score = 100 - i * step
|
|
final_result[int(video_id)] = score
|
|
final_result[int(video_id)] = score
|
|
# 写入对应的redis
|
|
# 写入对应的redis
|
|
- key_name = \
|
|
|
|
- f"{config_.RECALL_KEY_NAME_PREFIX_APP_TYPE}{app_type}.{datetime.datetime.strftime(now_date, '%Y%m%d')}.{now_h}"
|
|
|
|
- if len(final_result) > 0:
|
|
|
|
- redis_helper = RedisHelper()
|
|
|
|
- redis_helper.add_data_with_zset(key_name=key_name, data=final_result, expire_time=23 * 3600)
|
|
|
|
|
|
+ # key_name = \
|
|
|
|
+ # f"{}{app_type}.{datetime.datetime.strftime(now_date, '%Y%m%d')}"
|
|
|
|
+ # if len(final_result) > 0:
|
|
|
|
+ # redis_helper = RedisHelper()
|
|
|
|
+ # redis_helper.add_data_with_zset(key_name=key_name, data=final_result, expire_time=23 * 3600)
|
|
|
|
|
|
|
|
|
|
def rank_by_h(app_type, now_date, now_h, return_count_list, project, table):
|
|
def rank_by_h(app_type, now_date, now_h, return_count_list, project, table):
|
|
# 获取特征数据
|
|
# 获取特征数据
|
|
feature_df = get_feature_data(now_date=now_date, project=project, table=table)
|
|
feature_df = get_feature_data(now_date=now_date, project=project, table=table)
|
|
- # 计算score
|
|
|
|
- score_df = cal_score(df=feature_df)
|
|
|
|
# rank
|
|
# rank
|
|
for cnt in return_count_list:
|
|
for cnt in return_count_list:
|
|
log_.info(f"return_count = {cnt}")
|
|
log_.info(f"return_count = {cnt}")
|
|
- video_rank(app_type=app_type, df=score_df, now_date=now_date, now_h=now_h, return_count=cnt)
|
|
|
|
|
|
+ video_rank(app_type=app_type, df=feature_df, now_date=now_date)
|
|
# to-csv
|
|
# to-csv
|
|
- score_filename = f"score_{app_type}_{datetime.datetime.strftime(now_date, '%Y%m%d%H')}.csv"
|
|
|
|
- score_df.to_csv(f'./data/{score_filename}')
|
|
|
|
|
|
+ # score_filename = f"score_{app_type}_{datetime.datetime.strftime(now_date, '%Y%m%d%H')}.csv"
|
|
|
|
+ # score_df.to_csv(f'./data/{score_filename}')
|