初级版本(自我设想)

昨天无意间和朋友聊到了算法,就猜想了一下抖音的推送算法。

在没有研究过抖音的算法的前提下,首先就是联想到标签分类制;视频被打了n中标签,根据对应标签,推送至对应的用户。

视频如何打标签?(标签都有自身的权重,具体权重的多少不进行探讨)

我的解决方案是:根据图像识别进行初步的判断视频属于风景、人文、科普、歌曲; 根据音频进行分类; 根据音频内容转义语言内容获取关键字(一般视频开头就有整个视频的主题);这是初步的标签;

后期用户体量上升,用户就会自带一些用户标签,视频根据何种类别的用户观看比例,进行分类标签。

这样视频和用户即完成了双向辅助标签分类。

如何推送?

解决了视频以及用户的标签打分之后。

推送的最高级肯定是标签符合率最高的视频和用户进行串联,不过这样的情况肯定是属于少数。所以就要考虑模糊匹配。

比如本次推送5个视频,算法根据用户标签,得出用户标签的权重中: 狗(40%),风景(20%),人物(10%),其他(30%)[其他这里不做具体展开,肯定还是具体的标签],当然想到这里,人总是会变得:所以我可能今天喜欢你的视频,明天我又喜欢别人的视频了。

所以标签的权重需要根据所展开的视频所预留的锚点进行重新计算&更改(当然肯定是一个时间周期所要进行的)。

这样推荐算法模拟出该用户本次推送5条视频(其中包括3条狗狗视频,1条风景视频,一条人物视频),从本次推送周期的数据库(下文描述何为本次推送周期)中拉取相关联的视频数据进行推送。

当然我描述的标签肯定太过于简单。不过只是数量级别的不同。或许会有大类小类的关系。不过核心是一致的。

如何解决推送重复?

中所周知:用户肯定不希望重复的东西出现,我这里的重复是指一模一样的视频,而不是类似的视频。

所以在一番思考之后我引入了本次推送周期这个概念:用户推送的数据库是在一定周期内发生改变的。比如24小时、6小时、甚至15分钟?这就需要具体情况具体分析。就我个体用户而言,在一个推送周期内的视频总量已经足够多,以至于不会发生重复(当然可以扩展至每个分类都有其推送周期库)<推送周期不会推送旧内容,需考虑时效性>

想推送周期这个概念的时候,我本意是防止用户单独点开某个短视频博主的作品集去观看作品,这个时候用户肯定不希望在首页推送的时候,推送到该条视频。

推送必然会导致所关注的用户发布或曾发布内容推送到用户手上

初步设想是进行用户关注的博主以及其发布作品,观看记录保存在客户机,推送时,先进行校验,若重复,则重新拉取相同性质的其他视频重复进行校验判断;

当然,用户本次推送周期所观看的所有视频ID都会进行保存,在进行推送的时进行校验,这样双重保护,基本可以杜绝视频重复的问题(推送周期库的内容不会重复,单独关注的用户的视频也不会重复)

至此初级版本的算法过程已经完成。之后看情况进行后续跟进φ( ̄∇ ̄o)

Last modification:September 12, 2019
如果觉得文章对你有所收获,可以请笔者喝杯咖啡