Kaynağa Gözat

Merge branch 'dev-xym-add-feature' of algorithm/ad-engine into master

xueyiming 2 hafta önce
ebeveyn
işleme
bf0b3825eb

+ 4 - 2
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/model/PAIModelV1.java

@@ -41,11 +41,13 @@ public class PAIModelV1 {
     private static final String[] sparseUserStrFeatures = {
             "brand", "region", "city", "cate1", "cate2", "user_cid_click_list", "user_cid_conver_list",
             "user_vid_return_tags_2h", "user_vid_return_tags_1d", "user_vid_return_tags_3d", "user_vid_return_tags_7d",
-            "user_vid_return_tags_14d", "root_source_scene", "root_source_channel", "title_split"
+            "user_vid_return_tags_14d", "root_source_scene", "root_source_channel", "title_split", "user_vid_share_tags_1d",
+            "user_vid_share_tags_14d", "user_vid_return_cate1_14d", "user_vid_return_cate2_14d", "user_vid_share_cate1_14d",
+            "user_vid_share_cate2_14d"
     };
 
     private static final String[] sparseUserLongFeatures = {
-            "vid", "apptype", "is_first_layer"
+            "vid", "apptype", "is_first_layer", "user_has_conver_1y"
     };
 
     private static final String[] sparseSceneLongFeatures = {

+ 2 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/feature/FeatureService.java

@@ -79,6 +79,8 @@ public class FeatureService {
             protos.add(genWithMid("alg_mid_feature_ad_action", param.getMid()));
             protos.add(genWithMid("alg_mid_feature_return_tags", param.getMid()));
             protos.add(genWithMid("alg_mid_feature_share_tags", param.getMid()));
+            protos.add(genWithMid("mid_return_video_cate", param.getMid()));
+            protos.add(genWithMid("mid_share_video_cate", param.getMid()));
         }
         return this.invokeFeatureService(protos);
     }

+ 22 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/strategy/RankStrategyBy688.java

@@ -117,6 +117,10 @@ public class RankStrategyBy688 extends RankStrategyBasic {
         Map<String, String> e1Feature = userFeature.getOrDefault("alg_mid_feature_return_tags", new HashMap<>());
         Map<String, String> e2Feature = userFeature.getOrDefault("alg_mid_feature_share_tags", new HashMap<>());
 
+        Map<String, String> g1Feature = userFeature.getOrDefault("mid_return_video_cate", new HashMap<>());
+        Map<String, String> g2Feature = userFeature.getOrDefault("mid_share_video_cate", new HashMap<>());
+
+
         userFeatureMap.put("brand", scoreParam.getRequestContext().getMachineinfoBrand().equalsIgnoreCase("-1") ?
                 "" : scoreParam.getRequestContext().getMachineinfoBrand().toUpperCase());
         userFeatureMap.put("region", Objects.equals(scoreParam.getRequestContext().getRegion(), "-1") ?
@@ -132,6 +136,12 @@ public class RankStrategyBy688 extends RankStrategyBasic {
         userFeatureMap.put("user_vid_return_tags_7d", e1Feature.getOrDefault("tags_7d", null));
         userFeatureMap.put("user_vid_return_tags_14d", e1Feature.getOrDefault("tags_14d", null));
         userFeatureMap.put("title_split", d3Feature.getOrDefault("title_split", null));
+        userFeatureMap.put("user_vid_share_tags_1d", e2Feature.getOrDefault("tags_1d", null));
+        userFeatureMap.put("user_vid_share_tags_14d", e2Feature.getOrDefault("tags_14d", null));
+        userFeatureMap.put("user_vid_return_cate1_14d", g1Feature.getOrDefault("cate1_14d", null));
+        userFeatureMap.put("user_vid_return_cate2_14d", g1Feature.getOrDefault("cate2_14d", null));
+        userFeatureMap.put("user_vid_share_cate1_14d", g2Feature.getOrDefault("cate1_14d", null));
+        userFeatureMap.put("user_vid_share_cate2_14d", g2Feature.getOrDefault("cate2_14d", null));
 
         if (request.getAppType() != null) {
             userFeatureMap.put("apptype", String.valueOf(request.getAppType()));
@@ -452,6 +462,11 @@ public class RankStrategyBy688 extends RankStrategyBasic {
 
     private List<TupleMapEntry<Tuple5>> handleC1Feature(Map<String, String> c1Feature, Map<String, String> featureMap) {
 
+        //用户近1年内是否有转化
+        if (c1Feature.containsKey("user_has_conver_1y") && c1Feature.get("user_has_conver_1y") != null) {
+            featureMap.put("user_has_conver_1y", c1Feature.get("user_has_conver_1y"));
+        }
+
         // 用户特征
         List<TupleMapEntry<Tuple5>> midActionList = new ArrayList<>();
         if (c1Feature.containsKey("action")) {
@@ -749,6 +764,13 @@ public class RankStrategyBy688 extends RankStrategyBasic {
             add("is_first_layer");
             add("title_split");
             add("profession");
+            add("user_vid_share_tags_1d");
+            add("user_vid_share_tags_14d");
+            add("user_vid_return_cate1_14d");
+            add("user_vid_return_cate2_14d");
+            add("user_vid_share_cate1_14d");
+            add("user_vid_share_cate2_14d");
+            add("user_has_conver_1y");
         }};
     }