按:做社区产品,内容推荐是一个绕不开的话题。传统论坛按版块分发内容的模式具有被动、低效等局限性,已不再适合如今快节奏的阅读模式,用户不再有大量的时间「沙里淘金」,因此基于内容的推荐模式被越来越多地应用到内容社区产品中。本文依据前人对内容推荐的研究,综合自身实践,简要讨论内容推荐的一些落地方式。
什么是内容推荐
内容推荐是「基于内容本身的推荐」,即将内容进行分析后建立特征,然后依据这些特征给用户进行推荐,这种特征往往用「标签」来定义。标签在整个内容推荐体系中具有很重要的作用。那么如何进行标签的制定,即所谓「打标签」呢?
内容标签
1. 用户自行打标签
用户自行打标签有两种方式:一是用户在平台预设标签下生产的内容会自动打上对应标签,二是平台允许用户自行添加一些标签。后一种方式可能由于用户对内容把握不足,或恶意操作,导致大量冗余标签或噪音标签产生,不利于后期维护。
2. 机器自动打标签
使用机器进行打标签,有一定的开发成本。一般可以结合分词技术和 TF-IDF 来提取关键词作为标签。这里需要注意的一点是,这种打标签的方式对文本的依赖度较高,如果社区内容为音频、视频等多媒体内容,这种方式仅能作用于内容的标题,因此可能会受一些「标题党」的干扰,但总体打标签效率比较高。
3. 运营人工打标签
运营人工打标签是一种最笨,但也是最有效的方法。通过运营人工干预,可以对内容标签进行复核,使标签和内容匹配度更高;同时通过运营介入,可以人工设置关联标签,将关联标签进行聚类处理。
因此,一般的做法是,用户在某一预设标签下生产内容,由机器进行自动打标签后,运营进行人工标签复审。
用户标签
除了内容标签外,如果想做到更精细化的推荐,还需要给用户进行「特征化分析」,也就是给用户也打上标签。用户和内容的交互,如点击、浏览、点赞、收藏等,都可以作为给用户打标签的基础。
用户打标签的过程需要注意两点,一是由于热门内容会干预用户的标签,因此对于热门内容的标签,需要做降权处理;二是用户的兴趣会随着时间衰减或发生变化,这时需要对用户的标签进行清洗,可以给内容增加「不感兴趣」的选项,用户触发后则对此标签做降权处理。
冷启动
每个内容平台在初期都会遇到这样一个问题:巧妇难为无米之炊。新平台总会遇到,要么用户行为或偏好数据过少,要么内容数量不足的情况。这时候应该如何进行内容的推荐呢?
- 用户首次使用时,可以引导用户进行所感兴趣的标签选择,然后将该标签下的热门内容推荐给用户;若用户不选择标签,则可以采取全站热门推荐或人工筛选推荐,将平台中绝大部分用户关心的内容进行推荐
- 如果平台中新内容较多时,可以在推荐时选取部分新内容进行推荐,每通过推荐增加一次阅读,传播度 +1,若起传播度高于某一预设的阈值时,可以认为该新内容值得推荐,更多进行曝光。这种方式可以解决新内容的冷启动,也可以增加新内容的曝光量。
推荐方式
首先预设一个推荐的目标:将较新的、优质的、用户可能感兴趣的内容推荐给用户,会涉及到以下三个维度:
- 新(timescore) —— 反映内容的实时性(用户无关)
- 优(qualityscore) —— 反映内容的质量(用户无关)
- 兴趣(interestscore) —— 用户的个性化需求(用户相关)
关键节点
- 计算时间衰减得分:时间越新,得分越高。参考函数:1/log(a*x+10, 10),其中 x 为发表日期与当前日期的时间差,a 为常量。
- 计算内容质量得分:综合内容的阅读、点赞、收藏等维度计算得出。参考函数:sum(c/(1+exp(-(x-a)/b))),其中 x 为影响因素的数值,a 为该因素的均值,c 为影响因素的权重,b 为常量。
- 计算影响用户兴趣的因素
- 去重:已推荐给用户的内容应从推荐列表中移除。
- 控制数量:一次推荐给用户的数量不宜过多,可从某一数量开始逐渐递增或递减。
-
控制边界:在极端情况下,会出现完全无内容推荐或推荐内容被消费完全,这种情况下应允许不进行推荐,而按照时间维度展示所有用户关注标签的内容。
其他注意点
1. 时效性内容
对于与时间强相关的内容,例如新闻或突发事件等,需要与普通的推荐内容区分开,做单独的推荐通道。
2. 内容排序
受顺序效应影响,在推荐时应注意推荐内容的排序,和用户最相关、质量最高的内容应排在顶部。通常在有用户信息的情况下,可以将推荐出的内容按和用户相关度进行排序;若没有用户信息时,则可单独依据内容本身的质量进行排序。
3. 长尾内容
平台里一般都会存在一些长尾内容,这部分如果不进行推荐,则很难触达用户。针对长尾内容,可以在一定维度进行统一提取后,当做新内容重新进行推荐,但需注意时效性内容不适合使用此方法。