Twitter 的推荐算法是一组服务和作业,负责在所有Twitter 产品界面(例如For You 时间线、搜索、探索、通知)上提供推文和其他内容的提要。有关算法工作原理的介绍,请参阅我们的工程博客。
Twitter 的产品界面构建在一组共享的数据、模型和软件框架之上。下面列出了此存储库中包含的共享组件:
类型 | 成分 | 描述 |
---|---|---|
数据 | 推特派 | 处理推文数据读写的核心推文服务。 |
统一用户操作 | Twitter 上的用户操作的实时流。 | |
用户信号服务 | 用于检索显式(例如点赞、回复)和隐式(例如个人资料访问、推文点击)用户信号的集中式平台。 | |
模型 | 模拟集群 | 社区检测和稀疏嵌入到这些社区中。 |
特威恩 | 用户和推文的密集知识图嵌入。 | |
信任与安全模型 | 用于检测 NSFW 或滥用内容的模型。 | |
实图 | 用于预测 Twitter 用户与其他用户交互的可能性的模型。 | |
tweepcred | 用于计算 Twitter 用户声誉的 Page-Rank 算法。 | |
recos注射器 | 流事件处理器,用于为基于 GraphJet 的服务构建输入流。 | |
图特征服务 | 为一对有向用户提供图形特征(例如,用户 A 的关注者中有多少人喜欢用户 B 的推文)。 | |
主题社会证明 | 识别与各个推文相关的主题。 | |
代表得分手 | 使用嵌入相似性计算实体对(用户、推文等)之间的分数。 | |
软件框架 | 导航 | 用 Rust 编写的高性能机器学习模型服务。 |
产品混合器 | 用于构建内容源的软件框架。 | |
时间线聚合框架 | 用于批量或实时生成聚合特征的框架。 | |
代表经理 | 检索嵌入的服务(即 SimClusers 和 TwHIN)。 | |
TWML | 基于 TensorFlow v1 构建的传统机器学习框架。 |
当前包含在此存储库中的产品表面是“为您时间线”和“推荐通知”。
下图说明了主要服务和工作如何相互关联以构建“为您服务”时间表。
下面列出了此存储库中包含的 For You Timeline 的核心组件:
类型 | 成分 | 描述 |
---|---|---|
候选来源 | 搜索索引 | 查找网络内推文并对其进行排名。约 50% 的推文来自此候选来源。 |
cr-混合器 | 用于从底层计算服务获取网络外推文候选者的协调层。 | |
用户推文实体图 (UTEG) | 维护内存中的“用户到推文”交互图,并根据该图的遍历来查找候选者。这是建立在 GraphJet 框架之上的。其他几个基于 GraphJet 的功能和候选源位于此处。 | |
关注推荐服务 (FRS) | 为用户提供要关注的帐户的建议以及来自这些帐户的推文。 | |
排行 | 轻排名者 | 搜索索引(Earlybird)使用 LightRanker 模型对推文进行排名。 |
重排名者 | 用于对候选推文进行排名的神经网络。用于选择时间线的主要信号之一推文发布候选人采购。 | |
推文混合和过滤 | 家用搅拌机 | 用于构建和服务主页时间线的主要服务。建立在产品混合器上。 |
可见性过滤器 | 负责过滤 Twitter 内容,以支持法律合规性、提高产品质量、增加用户信任、通过使用硬过滤、可见产品处理和粗粒度降级来保护收入。 | |
时间线排序器 | 传统服务,提供来自 Earlybird 搜索索引和 UTEG 服务的相关性评分推文。 |
下面列出了此存储库中包含的推荐通知的核心组件:
类型 | 成分 | 描述 |
---|---|---|
服务 | 推送服务 | Twitter 的主要推荐服务用于通过通知向用户提供推荐。 |
排行 | 推送服务轻排序 | Pushservice 使用 LightRanker 模型对推文进行排名。通过从最初的庞大候选者库中预先选择高度相关的候选者,将候选者生成和繁重的排名联系起来。 |
推送服务重排序 | 多任务学习模型可预测目标用户打开并参与发送的通知的概率。 |
我们包含大多数组件的 Bazel BUILD 文件,但不包含顶级 BUILD 或 WORKSPACE 文件。我们计划在未来添加更完整的构建和测试系统。
我们邀请社区提交 GitHub 问题并请求改进推荐算法的建议。我们正在开发工具来管理这些建议并将更改同步到我们的内部存储库。任何安全顾虑或问题都应通过 HackerOne 提交给我们的官方错误赏金计划。我们希望受益于全球社区的集体智慧和专业知识,帮助我们发现问题并提出改进建议,最终打造出更好的 Twitter。
请在此处阅读我们有关开源计划的博客。