|
@@ -963,15 +963,23 @@ def video_sank_pos_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=N
|
|
|
recall_list.append(recall_pos3)
|
|
|
recall_list.append(recall_pos4)
|
|
|
select_ids = set('')
|
|
|
+ recall_num_limit_dict = {}
|
|
|
+ if exp_config.get('recall_num_limit'):
|
|
|
+ recall_num_limit_dict = exp_config['recall_num_limit']
|
|
|
+ exp_recall_dict = {}
|
|
|
for j in range(3):
|
|
|
if len(rov_recall_rank)>12:
|
|
|
break
|
|
|
for recall_pos_config in recall_list:
|
|
|
rand_num = random.random()
|
|
|
- print("rand_num:", rand_num)
|
|
|
+ #print("rand_num:", rand_num)
|
|
|
for per_recall_item in recall_pos_config:
|
|
|
per_recall_name = per_recall_item[0]
|
|
|
per_recall_freq = per_recall_item[1]
|
|
|
+ per_recall_num = exp_recall_dict.get(per_recall_name, 0)
|
|
|
+ per_recall_total_num = recall_num_limit_dict.get(per_recall_name, 0)
|
|
|
+ if len(recall_num_limit_dict)>0 and per_recall_num>= per_recall_total_num:
|
|
|
+ continue
|
|
|
if rand_num < per_recall_freq and per_recall_name in recall_dict:
|
|
|
per_recall = recall_dict[per_recall_name]
|
|
|
for recall_item in per_recall:
|
|
@@ -981,6 +989,10 @@ def video_sank_pos_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=N
|
|
|
recall_item['rand'] = rand_num
|
|
|
rov_recall_rank.append(recall_item)
|
|
|
select_ids.add(vid)
|
|
|
+ if per_recall_name in exp_recall_dict:
|
|
|
+ exp_recall_dict[per_recall_name] +=1
|
|
|
+ else:
|
|
|
+ exp_recall_dict[per_recall_name] += 1
|
|
|
break
|
|
|
print("rov_recall_rank:", rov_recall_rank)
|
|
|
if len(rov_recall_rank)<4:
|