抖音的算法,是如何把你束缚在信息茧房里的?

2023-11-07 20:30

本文主要是介绍抖音的算法,是如何把你束缚在信息茧房里的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(一)抖音为何让人如此上瘾?
在这里插入图片描述

许多人或许会有这样的体验:

在不同的场景下(在家、地铁、公司)、不同的时间点(早上、中午、晚上),即使是同类型的电影,实际上所接收到的内容也略有差别。

例如白天大多会收到比较幽默的内容,而到了晚上则会收到略带悬疑的影视剪辑片段等。

而无论是什么时候打开抖音,它都能让用户沉浸其中,似乎感觉不到时间的流逝,往往一下子能过去一两个小时。

你会发现抖音似乎很懂你,因为给你推送的内容全都是你喜欢看的。

抛开抖音的产品设计、沉浸式消费体验、短平快的内容节奏等,这其中还涉及到算法推荐机制和运营策略等因素。

而内容的个性化分发,本质上用一句大白话就可以解释:

让喜欢看妹子的用户,看到含有妹子的内容。

但在现实环境中,放眼互联网,能把这句话做好的公司其实没几个。

那么问题到底难在哪里呢?

(二)给内容打标,没有想的那么简单

给标签定义难,给内容打标也难。

在给一篇内容打上标签之前,首先需要做的是给标签做定义。

即讲清楚什么是苹果,什么是梨,而不是把苹果叫成梨。

一篇内容通常包括一级分类、二级分类、三级分类、标签等几个层次。

如动漫>日漫>火影忍者>鸣人等。

对于这些具有普遍性认知的分类跟标签来说,通常比较好下定义。

但是对于搞笑、美女这样的标签,则因人而异。

因为每个人的笑点不同、审美不同。

到底什么内容才算好笑、多好看才算美女?

萝卜青菜各有所爱,打标还没开始,就先卡在定义上面。

这里其实就涉及到两个概念——实体标签跟语义标签:

1.实体标签

广州就是广州、上海就是上海;马云就是马云,淘宝就是淘宝。

他们都是确定的实体,通常在不同人那里不会产生太大的歧义。

2.语义标签

如沙雕、美女、奇葩等词,并没有确定的指定对象。

在不同人那里会有不同的认知,因此打标难点通常出现在语义标签的定义上面。

语义标签的推荐效果是检验一个公司NLP(自然语言处理)技术水平的试金石。

不同公司根据其业务能力或需求的不同,对标签颗粒度的要求也不同。

比如有的公司拆分到火影忍者就不往下拆了,直接把这个词当作最小颗粒度的标签。

(三)用户标签:可能是最难搞的部分

1.用户口味就像个难哄的女朋友

比内容标签难度更大的便是用户标签。

因为火影忍者就是火影忍者,一旦打上这个内容标签,它就不会变成海贼王。

内容标签尚且可以通过人工打标+机器训练的方式进行。

用户不一样,可能这个月他喜欢看火影忍者,算法推荐机制也给他匹配了相关的内容。但是下个月他可能因为朋友或同事的推荐开始看海贼王了。

如果算法还没反应过来,继续给他推送火影忍者的相关内容,此时这些内容对他来说便是无效内容,从而影响了内容的分发效率。

好比胡萝卜一直是胡萝卜,但是用户的口味却一直在变化。

今天想喝汤,明天想吃肉。

这里其实涉及到“推荐窄化”的问题,算法机制越差的产品,其推荐的内容越容易出现窄化。

如不小心点击了几篇文章,算法便默认你喜欢这一类内容,此后便一直推送相关信息,无法做到根据用户的需求变化进行灵活更迭。

尽管在这个时代,无论使用哪一款内容产品,都不可避免的会出现“信息茧房”的现象,但成熟的NLP技术与初级之间,实际的产品体验效果仍是天差地别。

  1. 掌握用户的基本信息

在做用户标签之前,需要先掌握跟用户相关的信息,通常包括性别、年龄、地点、兴趣偏好等。

1)性别有助于分发性别属性较明显的内容:如给男生推送体育、给女生推送美容护肤;

2)年龄也同理:给年轻人推送动漫、游戏等内容,给老年人推送养生、健康信息等;

3)地点则用于推送与区域热点相关的信息:如给上海用户推送上海突发新闻,北京限行对于广州用户似乎没有多大影响。

以上三者通常可以通过用户自动填写、授权访问位置信息的方式获取,且不会有太大的变动。

3.掌握用户兴趣偏好

对于用户兴趣偏好,如上所说,则是做用户标签的难点所在。

获取用户兴趣偏好采用的方式,是根据用户消费过的内容匹配相应的标签,通常采取以下几种方式进行定位:

1)过滤噪声:如用户被标题党内容吸引进去,但是停留时间过段,则说明用户对该内容所绑定的标签不感兴趣,以此来过滤标题党;

2)热点降权:对一些社会热点、突发新闻(如某明星出轨),虽然短时间内用户浏览了相关信息,但并不能说明该用户一定对“娱乐”内容特别感兴趣,需要对该用户的“娱乐”兴趣偏好进行降权处理;

3)时间衰减:如上所说,用户的兴趣会发生偏移,因此推送策略需要更偏向于新的用户行为;

4)惩罚展现:如果一篇推荐给用户的文章没有被点击,则该内容的相关特征(如内容分类、标签)权重会被降低。

  1. 不同内容类型的推荐权重

我们都知道对于综合型平台而言,内容通常不止一种类型,如今日头条便包含了长图文、小视频、短视频、问答、微头条等几种不同形态的内容。

即使是同一个标签,如“美女”,不同内容类型的推荐权重是否一样?这也是算法推荐机制需要考虑的问题。

这篇关于抖音的算法,是如何把你束缚在信息茧房里的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/366118

相关文章

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.