↓ 跳过正文

Content Ranking Metrics SEO

内容排序算法:浏览量和点赞之外,还该看哪些信号

内容排序算法到底在做什么,为什么只按浏览量和点赞排会让热门的越来越热,还有哪些信号值得一起算进同一个分数,附一段加权求和再按时间衰减的示例代码。

内容排序算法:浏览量和点赞之外,还该看哪些信号

内容排序算法决定信息流、搜索结果页或者“热门”榜单里,什么排前面、什么排后面。它给每条内容算一个分数,分数来自好几种信号(用户对它的反应、内容本身怎么样、够不够新、相关不相关),然后按分数排序。可如果只按浏览量和点赞排,就会陷入“强者恒强”的循环:排在最上面的被看到得最多,于是攒到更多浏览和点赞,于是继续待在最上面。

这就是浏览量和点赞明摆着的缺陷:它们只奖励本来就火的东西。新内容在信息流底部挨饿,平台慢慢变成一个重播频道。信息流排序在我们公司也是个不显山露水的难题,所以哪些信号值得信任,我花了不少时间琢磨。

看行为,别看点击
#

显式反馈又少又有偏;行为数据却管够。停留时长和滚动深度能告诉你,这篇东西是真被读完了,还是第一段就被人关掉了。回访更有分量——愿意回头再读一篇文章,比任何点赞都更能说明问题。而秒退是很有用的负面信号:内容承诺的东西,读者没拿到。

藏在内容本身的信号
#

好内容未必一上来就收获点赞,但质量总会以别的方式露出来。一是新意:这篇是不是覆盖了平台上还没人写过的领域?二是结构——排版干净、语法过关、表达清楚,这些和质量的相关性高得让人不太好意思承认。作者的过往记录也是合理的先验,但要按以前的作品留住了多少读者来算,而不是按点赞数。早期评论同样有用:三条真心的好评,胜过三十个顺手点的赞。再加一点语义分析,还能挖出那些正好补上平台空白的内容。

从平台外面借信号
#

现在什么最有共鸣,外面的互联网会告诉你。和热门搜索词对上的内容,天生就带时效性;对热点话题下手快的作者,值得给点加成。Twitter 和 Reddit 上在热什么,往往就是你的用户接下来想看什么的预告片——稍微做点预测,就能赶在浪头之前把对应的新内容推上去,而不是浪打过了才跟。自家的搜索框也被低估了:用户反复搜某个主题,或者某篇文章持续从搜索引擎带来流量,这种时效性根本不用猜。

把信号揉成一个分数
#

把思路写成几行 Python 大概是这样。这只是示意,不是线上真在跑的系统。每个信号先归一化到 0 到 1 之间,免得原始数值大的信号把其他的盖过去;再加权求和得到一个分数;最后乘上时间衰减,让新帖也有机会和上个月的爆款掰掰手腕。

WEIGHTS = {"read_depth": 0.3, "revisits": 0.25, "quality": 0.25, "early_comments": 0.2}
HALF_LIFE_HOURS = 48  # a post loses half its score every two days

def normalise(values):
    lo, hi = min(values), max(values)
    return [(v - lo) / (hi - lo) if hi > lo else 0.0 for v in values]

def rank(items):
    """items: dicts holding raw signal values plus "age_hours"."""
    norm = {name: normalise([item[name] for item in items]) for name in WEIGHTS}
    scores = []
    for i, item in enumerate(items):
        base = sum(weight * norm[name][i] for name, weight in WEIGHTS.items())
        scores.append(base * 0.5 ** (item["age_hours"] / HALF_LIFE_HOURS))
    order = sorted(range(len(items)), key=lambda i: scores[i], reverse=True)
    return [items[i] for i in order]

在下面说的实验验证之前,这些权重都只是拍脑袋的猜测。浏览量和点赞照样可以放进去,只不过它们变成了好几个输入里的一个,而不是分数的全部。半衰期决定旧帖沉下去有多快,这本身就是个大话题,我在信息流排序算法如何决定什么时候埋掉旧帖子里专门写过。真实的系统通常让模型去学权重,而不是手工拍定,但形状是一样的:很多信号进去,一个数字出来,然后排序。

最后,老老实实做实验
#

信号再聪明,也得 A/B 测试:把新内容放给一部分用户,跟老牌热门比一比互动数据。还要盯着内容怎么传播——站内站外的分享、提及、嵌入,比一个浏览计数器能说明的多得多。

没有哪个单一指标经得起现实的捶打。真正好用的排序,是把行为、内容本身的质量、时效性和诚实的实验揉在一起,并且不让任何一个信号说了算。