Pārlūkot izejas kodu

feat:569实验添加ros后置计算

zhaohaipeng 1 mēnesi atpakaļ
vecāks
revīzija
b79a1dbb89

+ 25 - 10
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV569.java

@@ -225,16 +225,7 @@ public class RankStrategy4RegionMergeModelV569 extends RankStrategy4RegionMergeM
             }
 
             double originScoreRos = item.getScoreRos();
-            double scoreRos = ExtractorUtils.inverseLog(originScoreRos);
-            if (calcRosMode == 1d) {
-                double rosPower = mergeWeight.getOrDefault("ros_power", 5d);
-                item.getScoresMap().put("rosPower", rosPower);
-                scoreRos = Math.pow(scoreRos, rosPower);
-            } else if (calcRosMode == 2d) {
-                double modelRosCoefficient = mergeWeight.getOrDefault("model_ros_coefficient", 8d);
-                item.getScoresMap().put("modelRosCoefficient", modelRosCoefficient);
-                scoreRos = ExtractorUtils.inverseLog(originScoreRos * modelRosCoefficient);
-            }
+            double scoreRos = this.handleRos(originScoreRos, calcRosMode, item);
 
 
             item.getScoresMap().put("hasReturnRovScore", scoreRos);
@@ -279,7 +270,31 @@ public class RankStrategy4RegionMergeModelV569 extends RankStrategy4RegionMergeM
         return result;
     }
 
+    private double handleRos(double originScoreRos, double calcRosMode, RankItem item) {
+        if (originScoreRos == 0) {
+            return 0;
+        }
+
+        double scoreRos = ExtractorUtils.inverseLog(originScoreRos);
+        if (calcRosMode == 1d) {
+            double rosPower = mergeWeight.getOrDefault("le_ros_power", 5d);
+            if (scoreRos > 1){
+                rosPower  = mergeWeight.getOrDefault("gt_1_ros_poewr", 1.5d);
+            }
+            item.getScoresMap().put("rosPower", rosPower);
+            scoreRos = Math.pow(scoreRos, rosPower);
+        } else if (calcRosMode == 2d) {
+            double modelRosCoefficient = mergeWeight.getOrDefault("model_ros_coefficient", 8d);
+            item.getScoresMap().put("modelRosCoefficient", modelRosCoefficient);
+            scoreRos = ExtractorUtils.inverseLog(originScoreRos * modelRosCoefficient);
+        } else if (calcRosMode == 3d) {
+            double rosPower = mergeWeight.getOrDefault("ros_power", 5d);
+            item.getScoresMap().put("rosPower", rosPower);
+            scoreRos = Math.pow(scoreRos, rosPower);
+        }
 
+        return scoreRos;
+    }
 
     /**
      * ros模型打分