|
@@ -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) {
|