浏览代码

2025-04-15 冷启动晋级优化

luojunhui 2 天之前
父节点
当前提交
f0c4af4091

+ 22 - 15
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/score/strategy/ViewCountRateV2Strategy.java

@@ -61,13 +61,20 @@ public class ViewCountRateV2Strategy implements ScoreStrategy {
                         avgViewCountPos = 400D;
                     }
                 }
+                // 阅读量之和
                 double showViewCountSum = 0D;
-                double avgViewCountSum = 0D;
+                // 阅读均值置信区间上限之和
+                double readAvgCiUpperSum = 0D;
+                // 头条阅读量之和
                 double showViewCountSumFirst = 0D;
-                double avgViewCountSumFirst = 0D;
+                // 头条阅读均值置信区间上限之和
+                double readAvgCiUpperSumFirst = 0D;
+                // 次条阅读量之和
                 double showViewCountSumSecond = 0D;
-                double avgViewCountSumSecond = 0D;
-                double maxAvgViewCount = 0D;
+                // 次条阅读均值置信区间上限之和
+                double readAvgCiUpperSumSecond = 0D;
+                // 最大阅读均值置信区间上限
+                double maxReadAvgCiUpper = 0D;
                 if (CollectionUtils.isEmpty(content.getHisPublishArticleList())) {
                     continue;
                 }
@@ -79,10 +86,10 @@ public class ViewCountRateV2Strategy implements ScoreStrategy {
                     if (hisItem.isInnerAccount() && Objects.nonNull(hisItem.getViewCount())
                             && hisItem.getViewCount() > 0 && Objects.nonNull(hisItem.getReadAvgCiUpper())
                             && hisItem.getReadAvgCiUpper() > 0) {
-                        maxAvgViewCount = Math.max(maxAvgViewCount, hisItem.getReadAvgCiUpper());
+                        maxReadAvgCiUpper = Math.max(maxReadAvgCiUpper, hisItem.getReadAvgCiUpper());
                         if (hisItem.getItemIndex() == 1) {
                             showViewCountSumFirst += hisItem.getViewCount();
-                            avgViewCountSumFirst += hisItem.getReadAvgCiUpper();
+                            readAvgCiUpperSumFirst += hisItem.getReadAvgCiUpper();
                         } else if (hisItem.getItemIndex() == 2) {
                             if (Objects.nonNull(hisItem.getFirstViewCount()) &&  hisItem.getFirstViewCount() > 0 &&
                                     Objects.nonNull(hisItem.getFirstViewCountRate()) && hisItem.getFirstViewCountRate() > 0) {
@@ -90,9 +97,9 @@ public class ViewCountRateV2Strategy implements ScoreStrategy {
                                 if (hisItem.getFirstViewCountRate() > 1) {
                                     // 对于头条均值倍数大于1的情况,次条均值线性增加,用于debias;
                                     // TODO: 对于小于1的情况,是否要减去?
-                                    avgViewCountSumSecond += hisItem.getReadAvgCiUpper() * hisItem.getFirstViewCountRate();
+                                    readAvgCiUpperSumSecond += hisItem.getReadAvgCiUpper() * hisItem.getFirstViewCountRate();
                                 } else {
-                                    avgViewCountSumSecond += hisItem.getReadAvgCiUpper();
+                                    readAvgCiUpperSumSecond += hisItem.getReadAvgCiUpper();
                                 }
                             }
                         } else {
@@ -102,9 +109,9 @@ public class ViewCountRateV2Strategy implements ScoreStrategy {
                                 if (hisItem.getFirstViewCountRate() > 1) {
                                     // 对于头条均值倍数大于1的情况,次条均值线性增加,用于debias;
                                     // TODO: 对于小于1的情况,是否要减去?
-                                    avgViewCountSum += hisItem.getReadAvgCiUpper() * hisItem.getFirstViewCountRate();
+                                    readAvgCiUpperSum += hisItem.getReadAvgCiUpper() * hisItem.getFirstViewCountRate();
                                 } else {
-                                    avgViewCountSum += hisItem.getReadAvgCiUpper();
+                                    readAvgCiUpperSum += hisItem.getReadAvgCiUpper();
                                 }
                             }
                         }
@@ -115,21 +122,21 @@ public class ViewCountRateV2Strategy implements ScoreStrategy {
                 // 如果有头条反馈数据,优先选取头条反馈数据;
                 if (showViewCountSumFirst > 0) {
                     showViewCountSum = showViewCountSumFirst;
-                    avgViewCountSum = avgViewCountSumFirst;
+                    readAvgCiUpperSum = readAvgCiUpperSumFirst;
                 } else if (showViewCountSumSecond > 0) {
                     showViewCountSum = showViewCountSumSecond;
-                    avgViewCountSum = avgViewCountSumSecond;
+                    readAvgCiUpperSum = readAvgCiUpperSumFirst;
                     // 如果是大号头条,则降权
                     if (avgViewCountFirst >= 3000 && i == 0) {
                         bigRateW = 0.001D;
                     }
                 }
                 // 均值倍数
-                if (avgViewCountSum > 0) {
-                    viewCountRate = showViewCountSum / avgViewCountSum;
+                if (readAvgCiUpperSum > 0) {
+                    viewCountRate = showViewCountSum / readAvgCiUpperSum;
                 }
                 // 置信度
-                double viewCountRateW = MathUtils.sigmoid(avgViewCountSum, 0.0002, avgViewCountPos);
+                double viewCountRateW = MathUtils.sigmoid(readAvgCiUpperSum, 0.0002, avgViewCountPos);
                 double viewCountRateScore = 0;
 
                 if (viewCountRate > 0) {