浏览代码

ros 模型

zhangbo 1 年之前
父节点
当前提交
0725aecd4a

+ 14 - 5
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RankModel.java

@@ -2,6 +2,7 @@ package com.tzld.piaoquan.recommend.server.service.rank.strategy;
 
 
 import com.alibaba.fastjson.JSONObject;
+import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.google.common.reflect.TypeToken;
 import com.tzld.piaoquan.recommend.server.common.base.RankItem;
 import com.tzld.piaoquan.recommend.server.model.Video;
@@ -36,6 +37,8 @@ public class RankStrategy4RankModel extends RankService {
 
     @Value("${video.model.weight:}")
     private Double mergeWeight;
+    @ApolloJsonValue("${video.model.weightv2:}")
+    private Map<String, Double> mergeWeightNew;
     final private String CLASS_NAME = this.getClass().getSimpleName();
 
 //    public Video getTestVideo(Long id, String s){
@@ -86,18 +89,24 @@ public class RankStrategy4RankModel extends RankService {
             Collections.sort(rovRecallRank, Comparator.comparingDouble(o -> -o.getSortScore()));
         }
 
-        //------------------- todo zhangbo 增加排序str模型逻辑 合并二者得分-------------------
+        //------------------- todo zhangbo 增加排序str ros模型逻辑 合并二者得分-------------------
         List<Video> videosWithModel = model(rovRecallRank, param);
+        Map<String, Double> mergeWeight = this.mergeWeightNew == null? new HashMap<>(): this.mergeWeightNew;
+        double alpha = mergeWeight.getOrDefault("alpha", 1.0D);
+        double beta = mergeWeight.getOrDefault("beta", 0.0D);
+        double gamma = mergeWeight.getOrDefault("gamma", 0.0D);
         for (Video v : videosWithModel){
-            double mergeWeightIn = this.mergeWeight == null? 0.0D: this.mergeWeight;
-            double score = v.getSortScore() + mergeWeightIn * v.getScoreStr();
+            double score = alpha * v.getSortScore() + beta * v.getScoreStr() + gamma * v.getScoreRos();
+            if (mergeWeight.containsKey("mul") && mergeWeight.getOrDefault("mul", 0.0D) > 0.5){
+                score = alpha * v.getSortScore() + (beta + v.getScoreStr()) * (gamma + v.getScoreRos());
+            }
             v.setScoreRegion(v.getSortScore());
             v.score = score;
             v.setSortScore(score);
         }
-        Collections.sort(videosWithModel, Comparator.comparingDouble(o -> -o.getSortScore()));
+        videosWithModel.sort(Comparator.comparingDouble(o -> -o.score));
 
-        //------------------- 增加日志-------------------
+        //------------------- 增加日志 -------------------
         int size = 4;
         List<Long> oldRes = rovRecallRank.subList(0, Math.min(rovRecallRank.size(), size)).stream().map(r-> r.getVideoId()).collect(Collectors.toList());
         List<Long> newRes = videosWithModel.subList(0, Math.min(videosWithModel.size(), size)).stream().map(r-> r.getVideoId()).collect(Collectors.toList());

+ 0 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4Rankv2Model.java

@@ -15,7 +15,6 @@ import com.tzld.piaoquan.recommend.server.util.JSONUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.math.NumberUtils;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
 import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
 import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;