一场比赛还没开始,江南体育AI怎么判断它值不值得推荐给某个用户? 示意图
原创示意图,用于说明分析思路,非实拍画面

周六傍晚,一位用户在开赛前五十分钟打开江南体育App。此时比赛的所有结果信息都还不存在:没有比分、没有红牌、没有绝杀,也没有人知道这场球会不会踢得精彩。系统要在这个时间点,从当晚十几场比赛里挑出两三场放在首页显眼的位置。

这和推荐一篇已经发布的文章完全不同。文章推荐可以参考它被多少人读过、读得多久,比赛推荐却只能依靠“赛前信号”。下面这篇文章把这些信号一路一路拆开,说明江南体育智能推荐是怎样在信息不完整的情况下做出判断的。

赛前能拿到的信息,只有四类

把开赛前系统能用的东西列出来,大致只有四类:这个用户对两支球队的历史兴趣、这个用户对场上可能出现的球员的兴趣、这场比赛在赛事框架里的重要程度,以及用户此刻的使用情境。下表列出每一类信号的来源和主要的误判风险,具体内容为示意性描述。

信号 主要依据 容易误判的地方
球队兴趣长期浏览、收藏、关注的球队与相近风格球队 把“曾经关注”当成“现在关注”,兴趣已经转移
球员兴趣 用户观察名单里的球员、常看的球员内容首发名单未定,球员可能不上场
赛事重要性 积分形势、淘汰赛阶段、两队关系、对阵历史 过度偏向大牌,忽略对某些用户重要的中小比赛
用户情境 当前时间、常用时段、是否有正在进行的比赛内容把偶然的使用当成稳定习惯
模拟示例说明:上表内容为讲解性质的示意,不代表真实用户数据或某一场真实比赛,也不构成对系统性能的承诺。

球队兴趣:不只是“他喜欢主队”,还包括“他喜欢什么样的球队”

如果把球队兴趣简化为“关注列表里有没有”,就会漏掉大量本可以推荐的比赛。一位用户长期关注一支控球风格的球队,那么对另一支风格相近的球队,他很可能也有兴趣。这类相近关系来自知识图谱里球队与战术风格的连接,以及球队之间的Embedding相似度。

同时,兴趣要看时间。一个用户三年前经常看某支球队,最近三个月没有任何相关行为,系统应当降低这条信号的权重,而不是永久保留。长期兴趣与短期兴趣的区别,同系列讨论“喜欢一支球队为什么不该只看这支球队”的那篇文章里已经谈过,放在比赛推荐里同样适用。

球员兴趣:一场没有主队的比赛,也可能因为一个人值得看

用户如果在观察名单里放了几名年轻球员,那么这些球员所在球队的比赛,就有了额外的理由被推荐。第一次使用江南体育App,可以怎样建立自己的球员观察名单介绍过观察名单的建立方式:一旦用户主动标记了兴趣,这个信号比被动的点击更可靠,权重也更高。

问题在于赛前不知道谁会首发。系统的处理方式是把“上场概率”作为一个不确定的量:根据近期出场记录、伤病和停赛信息,估计球员出场的可能性,再乘以用户对该球员的兴趣。到首发名单公布时,这一路信号会重新计算,原本不确定的部分变成确定的。

赛事重要性:能估计,但不该被夸大

比赛重要性并非只有“决赛、德比”这些字眼。它可以由几个可查询的因素组成:积分榜上双方的位置与差距、这场比赛对晋级或保级的影响、是不是淘汰赛的关键一场、两队之间是否存在长期的对抗关系,这些关系可以放在知识图谱中,作为球队与球队之间的一条边来保存。

需要注意的是,重要性不等于精彩,更不等于对每个用户都重要。一场联赛中游球队之间的比赛,在积分上无关紧要,却可能因为其中有一名用户关注的年轻球员,或者两队踢法的对撞,对某些用户价值很高。因此重要性只是四路信号中的一路,不应该压过其他三路。

用户情境:同一场比赛,晚上八点和上午十点的意义不同

用户情境包括当前时间、他通常在什么时段使用、过去在类似场景下是选择看直播、看文字实时数据还是等赛后集锦。一位习惯只看赛后集锦的用户,开赛前推送“比赛即将开始”,作用有限,或许更应该在比赛结束后推荐“值得回看的片段”。

这一路信号最需要克制。系统不应该为了判断情境,去索取和推荐无关的敏感信息。能够从使用时段、点击习惯这类已有的行为里得到的,就不需要更多。这里也应当遵循最小化的原则:只使用完成推荐所必需的数据,并让用户有办法调整或关闭个性化。具体入口以江南体育App内的实际设置为准。

四路信号怎么合并:先分别给理由,再一起排序

合并的方式不是把四个数字加起来得出一个“综合评分”。当前的思路是让每一路信号先给出自己的判断和理由:比如“用户关注的球队之一”“用户观察名单中有一名球员”“本场影响积分榜前四的争夺”“这是用户平常看球的时间”。然后由排序模型综合,再经过多样性重排,避免整屏都是同一支球队。

理由的写法也有讲究。给用户看的应当是一句他能理解并能反驳的话,比如“因为你关注的年轻中场今晚可能首发”。如果他并不再关心这名球员,只需要点一下就能让系统修正。这种可以被用户否定的设计,比一个冷冰冰的“猜你喜欢”更可靠,也更容易帮助工程师排查问题。关于系统如何避免把首页推得越来越窄,可以对照体育推荐最容易陷入什么“信息茧房”阅读。

首发名单公布之后,要重排一次

赛前五十分钟左右,多数比赛的首发名单会陆续公布。这一刻,系统手里多了两个信息:谁真正在场上,以及球队阵型与战术是否有变化。球员兴趣一路可以精确计算;如果用户关注的球员没有出现在首发中,这场比赛的推荐权重就应当下降;反过来,如果某个用户的观察名单里有一名年轻球员意外首发,则值得把比赛提前。

这个重排要快,也要轻。不能让首页在用户浏览的过程中突然大幅跳动,比较合理的做法是只调整还没有被用户看到的位置,或在下次进入时更新。

冷门比赛的位置:留给“相关但没发现”的内容

有些比赛和用户没有任何直接的关联:两支球队都没关注过,也没有观察名单中的球员。但图谱里可能存在一条路径:其中一名年轻球员的踢法,与用户长期关注的某类球员相似。这样的比赛,可以作为探索位出现。这种做法和用户没点过某个球员,AI为什么仍然可能把他推荐出来中讲的是同一种逻辑,只不过对象从球员变成了比赛。

这套判断会在哪里出错

  • 赛程变动:推迟、改期、场地变化会让原本的推荐失效,需要有及时的状态更新。
  • 首发不确定:球员兴趣一路在首发公布前只是估计,可能把不会上场的球员当成理由。
  • 重要性偏差:系统若过度依赖积分榜和球队名气,会持续低估小联赛和青年赛事的价值。
  • 精彩程度无法预知:系统只能推测两支球队的风格对撞是否有趣,无法保证比赛好看,任何“这场必看”的措辞都应当避免。
  • 情境误读:用户偶尔在非常规时段打开App,不代表他习惯在那个时段看球。

这些边界决定了赛前推荐的最终定位:它是一个帮助用户在开赛前少翻一次赛程表的辅助,而不是替他决定看什么。如果想继续了解智能推荐这条产品线的其他判断方式,可以查看江南体育智能推荐栏目中的相关文章。