|
@@ -243,10 +243,10 @@ public class TopRecommendPipeline {
|
|
|
rtFeaPart1h = rtFeaPartKeyResult.get(1);
|
|
|
}
|
|
|
}
|
|
|
- // 2 统计分
|
|
|
+ // 2 统计分 3H
|
|
|
String cur = rtFeaPart1h;
|
|
|
List<String> datehours = new LinkedList<>(); // 时间是倒叙的
|
|
|
- for (int i = 0; i < 24; ++i) {
|
|
|
+ for (int i = 0; i < 3; ++i) {
|
|
|
datehours.add(cur);
|
|
|
cur = ExtractorUtils.subtractHours(cur, 1);
|
|
|
}
|
|
@@ -288,6 +288,17 @@ public class TopRecommendPipeline {
|
|
|
Double preturnsScore = calScoreWeightNoTimeDecay(preturns);
|
|
|
item.scoresMap.put("preturnsScore", preturnsScore);
|
|
|
|
|
|
+ // 平台回流ROV
|
|
|
+ List<Double> view2PreReturns = getRateData(preturns, views, 0.0, 0.0);
|
|
|
+ Double view2PreReturnsScore = calScoreWeightNoTimeDecay(view2PreReturns);
|
|
|
+ item.scoresMap.put("view2PreReturnsScore", view2PreReturnsScore);
|
|
|
+
|
|
|
+ // 平台回流ROS
|
|
|
+ List<Double> share2PreReturns = getRateData(preturns, shares, 1.0, 10.0);
|
|
|
+ Double share2PreReturnsScore = calScoreWeightNoTimeDecay(share2PreReturns);
|
|
|
+ item.scoresMap.put("share2PreReturnsScore", share2PreReturnsScore);
|
|
|
+
|
|
|
+
|
|
|
// rov的趋势
|
|
|
double trendScore = calTrendScore(view2return);
|
|
|
item.scoresMap.put("trendScore", trendScore);
|
|
@@ -298,38 +309,47 @@ public class TopRecommendPipeline {
|
|
|
|
|
|
}
|
|
|
// 3 融合公式
|
|
|
- double a = mergeWeight.getOrDefault("a", 0.1);
|
|
|
- double b = mergeWeight.getOrDefault("b", 0.0);
|
|
|
- double c = mergeWeight.getOrDefault("c", 0.000001);
|
|
|
- double d = mergeWeight.getOrDefault("d", 1.0);
|
|
|
- double e = mergeWeight.getOrDefault("e", 1.0);
|
|
|
- double f = mergeWeight.getOrDefault("f", 0.8);
|
|
|
- double g = mergeWeight.getOrDefault("g", 2.0);
|
|
|
- double h = mergeWeight.getOrDefault("h", 240.0);
|
|
|
- double ifAdd = mergeWeight.getOrDefault("ifAdd", 1.0);
|
|
|
+// double a = mergeWeight.getOrDefault("a", 0.1);
|
|
|
+// double b = mergeWeight.getOrDefault("b", 0.0);
|
|
|
+// double c = mergeWeight.getOrDefault("c", 0.000001);
|
|
|
+// double d = mergeWeight.getOrDefault("d", 1.0);
|
|
|
+// double e = mergeWeight.getOrDefault("e", 1.0);
|
|
|
+// double f = mergeWeight.getOrDefault("f", 0.8);
|
|
|
+// double g = mergeWeight.getOrDefault("g", 2.0);
|
|
|
+// double h = mergeWeight.getOrDefault("h", 240.0);
|
|
|
+// double ifAdd = mergeWeight.getOrDefault("ifAdd", 1.0);
|
|
|
for (RankItem item : rankItemList) {
|
|
|
- double trendScore = item.scoresMap.getOrDefault("trendScore", 0.0) > 1E-8 ?
|
|
|
- item.scoresMap.getOrDefault("trendScore", 0.0) : 0.0;
|
|
|
- double newVideoScore = item.scoresMap.getOrDefault("newVideoScore", 0.0) > 1E-8 ?
|
|
|
- item.scoresMap.getOrDefault("newVideoScore", 0.0) : 0.0;
|
|
|
- double strScore = item.getScoreStr();
|
|
|
- double rosScore = item.scoresMap.getOrDefault("share2returnScore", 0.0);
|
|
|
+// double trendScore = item.scoresMap.getOrDefault("trendScore", 0.0) > 1E-8 ?
|
|
|
+// item.scoresMap.getOrDefault("trendScore", 0.0) : 0.0;
|
|
|
+// double newVideoScore = item.scoresMap.getOrDefault("newVideoScore", 0.0) > 1E-8 ?
|
|
|
+// item.scoresMap.getOrDefault("newVideoScore", 0.0) : 0.0;
|
|
|
+// double strScore = item.getScoreStr();
|
|
|
+// double rosScore = item.scoresMap.getOrDefault("share2returnScore", 0.0);
|
|
|
double share2allreturnScore = item.scoresMap.getOrDefault("share2allreturnScore", 0.0);
|
|
|
double view2allreturnScore = item.scoresMap.getOrDefault("view2allreturnScore", 0.0);
|
|
|
- double preturnsScore = Math.log(1 + item.scoresMap.getOrDefault("preturnsScore", 0.0));
|
|
|
- double score;
|
|
|
- if (ifAdd < 0.5) {
|
|
|
- score = Math.pow(strScore, a) * Math.pow(rosScore, b) + c * preturnsScore +
|
|
|
- (newVideoScore > 1E-8 ? d * trendScore * (e + newVideoScore) : 0.0);
|
|
|
- } else {
|
|
|
- score = a * strScore + b * rosScore + c * preturnsScore +
|
|
|
- (newVideoScore > 1E-8 ? d * trendScore * (e + newVideoScore) : 0.0);
|
|
|
-
|
|
|
+// double preturnsScore = Math.log(1 + item.scoresMap.getOrDefault("preturnsScore", 0.0));
|
|
|
+// Double view2PreReturnsScore = item.scoresMap.getOrDefault("view2PreReturnsScore", 0.0);
|
|
|
+// Double share2PreReturnsScore = item.scoresMap.getOrDefault("share2PreReturnsScore", 0.0);
|
|
|
+ // if NaN set 0
|
|
|
+ if (Double.isNaN(share2allreturnScore)) {
|
|
|
+ share2allreturnScore = 0.0;
|
|
|
}
|
|
|
- double allreturnsScore = item.scoresMap.getOrDefault("allreturnsScore", 0.0);
|
|
|
- if (allreturnsScore > h) {
|
|
|
- score += (f * share2allreturnScore + g * view2allreturnScore);
|
|
|
+ if (Double.isNaN(view2allreturnScore)) {
|
|
|
+ view2allreturnScore = 0.0;
|
|
|
}
|
|
|
+ double score = share2allreturnScore + view2allreturnScore;
|
|
|
+// if (ifAdd < 0.5) {
|
|
|
+// score = Math.pow(strScore, a) * Math.pow(rosScore, b) + c * preturnsScore +
|
|
|
+// (newVideoScore > 1E-8 ? d * trendScore * (e + newVideoScore) : 0.0);
|
|
|
+// } else {
|
|
|
+// score = a * strScore + b * rosScore + c * preturnsScore +
|
|
|
+// (newVideoScore > 1E-8 ? d * trendScore * (e + newVideoScore) : 0.0);
|
|
|
+//
|
|
|
+// }
|
|
|
+// double allreturnsScore = item.scoresMap.getOrDefault("allreturnsScore", 0.0);
|
|
|
+// if (allreturnsScore > h) {
|
|
|
+// score += (f * share2allreturnScore + g * view2allreturnScore);
|
|
|
+// }
|
|
|
// 设置计算好的分数
|
|
|
item.setScore(score);
|
|
|
}
|