Jelajahi Sumber

update rank

linfan 2 tahun lalu
induk
melakukan
6e874a02a6
2 mengubah file dengan 30 tambahan dan 24 penghapusan
  1. 5 3
      recommend.py
  2. 25 21
      video_rank.py

+ 5 - 3
recommend.py

@@ -331,6 +331,7 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
         #print("test config:",test_config)
         rank_result, flow_result = video_sanke_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_Code=ab_code, exp_config=test_config, flowConfig=flow_config)
         result['flow_num'] = flow_result
+        result['rank_num'] = len(rank_result)
     else:
         rank_result = video_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P))
 
@@ -578,11 +579,12 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
         flow_config = pool_recall.get_flow_exp_8_config()
     elif ab_code == 60057:
         flow_config = pool_recall.get_flow_exp_6_config()
-    rank_result, flow_result = video_new_rank2(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_code=ab_code, flowConfig=flow_config)
-    #print(rank_result)
+    rank_result, flow_num = video_new_rank2(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_code=ab_code, flowConfig=flow_config)
+    print("result:", len(rank_result))
 
     result['rankResult'] = rank_result
-    result['flow_num'] = flow_result
+    result['rank_num'] = len(rank_result)
+    result['flow_num'] = flow_num
     result['rankTime'] = (time.time() - start_rank) * 1000
 
 

+ 25 - 21
video_rank.py

@@ -653,17 +653,18 @@ def video_new_rank2(data, size, top_K, flow_pool_P, ab_code, flowConfig=None):
     else:
         rank_result.extend(flow_recall_rank[:top_K])
         flow_recall_rank = flow_recall_rank[top_K:]
-    flow_result = 0
+    flow_num = 0
     if flowConfig == "1" and len(rov_recall_rank)>0:
         for recall_item in rank_result:
             flow_recall_name  = recall_item.get("flowPool", '')
-            #print("recall_item:", recall_item)
-            #print("flow_recall_name:", flow_recall_name)
             if flow_recall_name is not None and flow_recall_name.find("#") > -1:
-                flow_result = flow_result + 1
-        if flow_result > 0 and len(rov_recall_rank) > 0:
-            rank_result.append(rov_recall_rank[0])
+                flow_num = flow_num + 1
+        all_recall_rank =  rov_recall_rank+flow_recall_rank
+        if flow_num > 0:
+            rank_result.extend(all_recall_rank[:size - top_K])
+            return rank_result[:size], flow_num
         else:
+            # 按概率 p 及score排序获取 size - k 个视频
             i = 0
             while i < size - top_K:
                 # 随机生成[0, 1)浮点数
@@ -675,14 +676,14 @@ def video_new_rank2(data, size, top_K, flow_pool_P, ab_code, flowConfig=None):
                         flow_recall_rank.remove(flow_recall_rank[0])
                     else:
                         rank_result.extend(rov_recall_rank[:size - top_K - i])
-                        return rank_result[:size], flow_result
+                        return rank_result[:size], flow_num
                 else:
                     if rov_recall_rank:
                         rank_result.append(rov_recall_rank[0])
                         rov_recall_rank.remove(rov_recall_rank[0])
                     else:
                         rank_result.extend(flow_recall_rank[:size - top_K - i])
-                        return rank_result[:size], flow_result
+                        return rank_result[:size], flow_num
                 i += 1
     else:
         # 按概率 p 及score排序获取 size - k 个视频
@@ -697,16 +698,16 @@ def video_new_rank2(data, size, top_K, flow_pool_P, ab_code, flowConfig=None):
                     flow_recall_rank.remove(flow_recall_rank[0])
                 else:
                     rank_result.extend(rov_recall_rank[:size - top_K - i])
-                    return rank_result[:size], flow_result
+                    return rank_result[:size], flow_num
             else:
                 if rov_recall_rank:
                     rank_result.append(rov_recall_rank[0])
                     rov_recall_rank.remove(rov_recall_rank[0])
                 else:
                     rank_result.extend(flow_recall_rank[:size - top_K - i])
-                    return rank_result[:size], flow_result
+                    return rank_result[:size], flow_num
             i += 1
-    return rank_result[:size], flow_result
+    return rank_result[:size], flow_num
 
 def video_sanke_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=None, flowConfig=None):
     """
@@ -805,7 +806,7 @@ def video_sanke_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=None
     # add flow result
     # rank_result = relevant_recall_rank
     rank_result = []
-    flow_result = 0
+    flow_num = 0
     # 从ROV召回池中获取top k
     if len(rov_recall_rank) > 0:
         rank_result.extend(rov_recall_rank[:top_K])
@@ -817,9 +818,12 @@ def video_sanke_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=None
         for recall_item in rank_result:
             flow_recall_name = recall_item.get("flowPool", '')
             if flow_recall_name is not None and flow_recall_name.find("#")>-1:
-                flow_result = flow_result+1
-        if flow_result>0 and len(rov_recall_rank)>0:
-            rank_result.append(rov_recall_rank[0])
+                flow_num = flow_num+1
+        all_recall_rank = rov_recall_rank + flow_recall_rank
+        if flow_num > 0:
+            rank_result.extend(all_recall_rank[:size - top_K])
+            print("flow_num:", flow_num, len(rank_result))
+            return rank_result[:size], flow_num
         else:
             # 按概率 p 及score排序获取 size - k 个视频
             i = 0
@@ -833,16 +837,16 @@ def video_sanke_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=None
                         flow_recall_rank.remove(flow_recall_rank[0])
                     else:
                         rank_result.extend(rov_recall_rank[:size - top_K - i])
-                        return rank_result[:size], flow_result
+                        return rank_result[:size], flow_num
                 else:
                     if rov_recall_rank:
                         rank_result.append(rov_recall_rank[0])
                         rov_recall_rank.remove(rov_recall_rank[0])
                     else:
                         rank_result.extend(flow_recall_rank[:size - top_K - i])
-                        return rank_result[:size], flow_result
+                        return rank_result[:size], flow_num
                 i += 1
-        #print("flow_result:", flow_result)
+
     else:
         # 按概率 p 及score排序获取 size - k 个视频
         i = 0
@@ -856,16 +860,16 @@ def video_sanke_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=None
                     flow_recall_rank.remove(flow_recall_rank[0])
                 else:
                     rank_result.extend(rov_recall_rank[:size - top_K - i])
-                    return rank_result[:size], flow_result
+                    return rank_result[:size], flow_num
             else:
                 if rov_recall_rank:
                     rank_result.append(rov_recall_rank[0])
                     rov_recall_rank.remove(rov_recall_rank[0])
                 else:
                     rank_result.extend(flow_recall_rank[:size - top_K - i])
-                    return rank_result[:size], flow_result
+                    return rank_result[:size], flow_num
             i += 1
-    return rank_result[:size], flow_result
+    return rank_result[:size], flow_num