✨ Yumuing 博客
🚀 探索技术的每一个角落,解码世界的每一种可能!
💌 如果你对 AI 充满好奇,欢迎关注博主,订阅专栏,让我们一起开启这段奇妙的旅程!

以权威用户为核心,时间衰减为尺度,社区互动为杠杆」的评分体系,实现:
📌 动态防刷:实时监控异常点赞,自动降权可疑评价
📌 智能冷启动:新书享3个月权重保护期,新用户默认60%权威值
📌 时空平衡:3年半衰期机制+Reddit热榜公式,兼顾经典与时效性
评分计算公式
S=∑i=1nwi+C∑i=1n(wi⋅si)+C⋅μ
其中:
-
S:最终综合评分
-
si:第i条评价的原始评分(1-5星)
-
wi:第i条评价的综合权重
-
μ:所有书籍的基准平均分(动态计算),采用以评分人数为权重的优书网原始加权平均评分(5.269分)
-
C:平滑强度系数
推荐值取平均评论数的50%,为小样本添加该值对应数量的平均评价
注:女频若是普遍高于男频,则采用男女频分类排行,再重新赋值,混合排行
权重计算模型
wi=(Ai⋅Ti⋅Vi)
评价者权重计算
Ai=1+log(1+havgha)log(1+havgha)⋅sigmoid(hstdha−havg)
其中:
- ha:评价者历史评论总赞同数
- havg:平台用户历史赞同数平均值
- hstd:平台用户历史赞同数标准差
设计原理:
- 使用自然对数e压缩防止头部用户主导
- Sigmoid函数实现平滑过渡,当用户权威值超过均值1个标准差时获得0.73权重,2个标准差时达0.88
时间衰减因子
Ti=e−λ⋅Δt
其中:
- Δt:当前时间与评价时间的差值(以月为单位)
- λ:衰减系数
示例效果:推荐值为0.02,半衰期为3年
- 1月前评价:0.98
- 1年前评价:0.79
- 3年前评价:0.56
社区反馈权重
Vi=21(vmaxvi+vi+vqvi)
其中:
- vi:该评价被赞同数
- vmax:当前书籍的最高单条评价赞同数
- vq:抗噪调节参数(推荐取10)
设计原理:
- 第一项保证头部评价的显著性
- 第二项防止零赞同评价被完全忽视
算法说明
-
动态适应性:
- 每小时自动更新havg和hstd
- 每天更新vmax值
- 每月重新计算所有Δt
-
鲁棒性保障:
设置权重下限wmin=0.2防止过度衰减
对刷赞行为设置vi上限(如当日突增超均值3σ,则动态降低到该书评计算得出社区权重的20%)
-
冷启动方案:
新用户默认Ai=0.6
新书籍首月时间递减参数λ降为0.01,三个月后改为0.02
起始平均分μ选取优书网所有书籍加权平均μ=∑i=1n所有评价人数该书籍评价人数∑i=1n所有评价人数该书籍评价人数⋅该书籍评分
最终分数映射
Nx=Omax−OminNmax−Nmin×(Ox−Omin)+Nmin
其中:
- Nmax=10
- Nmin=1
- Omax=5
- Omin=1
即:Nx=49×(Ox−1)+1
注:保留两位小数,少于二十人评分建议不显示
点赞和点踩说明
- 点赞和踩都得花费签到得到的代币,最终显示赞值(负值显示为0,保留值)为:点赞量−点踩量
- 首页书评排名算法:Reddit 排名算法
算法说明
score=log10(z)+(45000y⋅t)
其中:
-
t = 发帖时间 - 2005年12月8日7:46:43
Reddit用发帖时间与成立时间的差值来表示t,单位为秒。帖子越新,t值越大,得分就越高。因此,最新的帖子相对较旧的帖子有更高的排名优先权。
-
x = 赞成票 - 反对票
这个值反映了帖子总体的支持度。显然,赞成票多于反对票的帖子更容易排在前列。
-
y = +1 或 -1
如果赞成票多于反对票,y取+1,反之则取-1,代表帖子是否整体受欢迎。
-
z = |赞成票 - 反对票|
受欢迎程度反映了投票差的绝对值,即z越大,表示帖子越受欢迎或越被厌恶。
