写点什么

Twitter 采用 BotMaker 技术对抗垃圾推文

  • 2014-09-02
  • 本文字数:1571 字

    阅读完需:约 5 分钟

作为新兴媒体网站,Twitter 有着和传统媒体截然不同的使用方式,比如与传统媒体多重防止爬虫爬取网站内容相比,Twitter 对开发者开放了非常多的 API,以方便他们通过各种方式与 Twitter 后台交互。又比如 Twitter 对实时性的要求很高,比起纸媒、门户网站、博客、邮件来讲,快速响应的用户体验要求很高。在暴露大量接口和高实时性这两个产品设计的驱动下,Twitter 成为了人们非常青睐的社交网站。然而,接踵而来的就是那个永恒的话题:如何对抗垃圾信息。在这个问题上,Twitter 的两个设计上的优点反而成为了对抗中的挑战,垃圾信息可以从各种接口以各种形式接入,并且以近乎瞬间的速度直接推送到用户。以往成熟应用于电子邮件、博客等内容的垃圾信息对抗技术,在这两个挑战面前显得力不从心。这便是 BotMaker 诞生的契机。据博文提供的数据,在采用了 BotMaker 技术以后,该系统每天处理多达数十亿条推文,并成功的将垃圾信息的数目缩减了 40%。

Twitter 于 8 月 20 日在其官方博客发表了一篇博文(需科学上网),介绍了 BotMaker 的设计理念、挑战以及架构。

从设计目标来讲,Twitter 希望垃圾信息能够通过一种层层过滤的方式拦截:最理想的第一层,就是在垃圾信息制造者撰写垃圾推文的时候判断出结果,并阻止该垃圾推文的发布;没有被拦截住的垃圾推文,则采用第二层,即不断扫描现有的推文,从中尽快找出垃圾推文并清除,从而降低垃圾推文被用户阅读的可能性;最后一层则是对整个系统的更新速度进行了设想,因为垃圾推文品种千奇百怪,随时随地都在发生变化,系统需要在尽量少修改代码的情况下,尽可能快的更新,以应对层出不穷的垃圾推文。

在这种设计理念的驱动下,系统能够很好的过滤垃圾推文,但是随之而来的是三个挑战,BotMaker 对易用性、普适性以及实时性方面的要求很高。因此 Twitter 将其设计成了一种基于规则的系统,系统维护人员通过撰写简单的规则而不是修改代码来对抗垃圾推文,从而达到上述指标的要求。通俗来讲,BotMaker 的规则由两部分组成,一是触发条件;二是动作。如博文中所提到的简单例子:

复制代码
Condition:
HasSpamUrl(GetUrls(tweetText))
Action:
Deny()

所表达的意思就是:如果当前推文中包含了垃圾网址,那么这条推文就会被拒绝发布。这种规则系统的设计,一般需要遵循维护人员看得懂,简单规则可拼接成复杂规则,新规则的添加不需要改动代码以及规则起作用的时间只需要几秒钟等等原则。

然而,看似简单的规则系统背后,需要大量的计算来给出类似是否包含垃圾网址这样的判断,这些支撑数据都是要通过不断对推文、转发、收藏、粉丝和私信等等数据计算出来,而且还要支持一定的机器学习相关规则如分类规则。在 Twitter Storm 分布式系统的支持下,博文给出了 BotMaker 系统的设计架构:

图中以用户发表推文整个流程来解释了 BotMaker 的组成。首先,在用户撰写推文的过程中,Scarecrow 模块就开始根据推文内容来判断其是否是垃圾推文了,这个阶段主要的技术指标是高实时性,规则相对简单,如关键字以及一些统计规律;其次,在推文发表之后,Sniper 会根据发表日志来扫描推文,通过机器学习中分类器等方法构成的规则,不那么实时的来异步判断是否是垃圾推文;再次,系统会对用户一个阶段的行为建模,来提取辨别垃圾推文的特征,这部分工作可以离线完成。

博文最后称,Botmaker 开辟了 Twitter 对抗垃圾博文的新技术,有了这个系统,Twitter 的工程师们以前数以天计的编写垃圾推文过滤代码的日子已经成为过去,开发效率得到了极大的提升,并且效果也非常的明显。在未来,工程师们还会根据易用性、普适性和实时性等原则来对 Twitter 其他的系统进行修改和完善。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-09-02 09:322066
用户头像

发布了 268 篇内容, 共 123.1 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

培训第二弹!全国大学生智能汽车竞赛百度竞速组预告

百度开发者中心

昆仑分布式数据库独特的变量读写功能介绍

KunlunBase昆仑数据库

数据库 读写分离

吉利控股集团与百度深化战略合作

百度开发者中心

RTC 音频质量评价和保障

网易云信

WebRTC

亿级月活沙盒平台《迷你世界》背后的黑科技

华为云数据库小助手

GaussDB DDM 华为云数据库

网络安全之文件包含漏洞总结

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

Meetup预告|面向云原生的架构及演进

云智慧AIOps社区

开源 云原生 AIOPS 智能运维

在一条DML语句中插入/更新/删除/获取几百万行数据,你会特别注意什么?

KunlunBase昆仑数据库

分布式数据库

以领先NLP技术构建AI数字疗法体系,聆心智能致力于解开更多“心结”

硬科技星球

【OpenMLDB Monthly Meeting】2022.2 月会议纪要

第四范式开发者社区

人工智能 数据库 开源 Meetup 特征平台

网易X工行:云原生日志系统 Loggie 正式开源!

网易数帆

开源 云原生 日志 Filebeat Loggie

知识管理——企业数字化转型的新挑战

小炮

开发者说丨如何从零开始构建一个轻量级应用

华为云开发者联盟

Vue 低代码 页面 应用 AppCube

J2PaaS低代码平台,如何赋能开发者,助力企业数字化?

J2PaaS低代码平台

开发者 低代码 企业数字化 地代码平台 J2PaaS

【Kali】中密码暴力破解工具hydra的使用

学神来啦

网络安全 字典 kali kali Linux

DSTC10 赛道最佳论文揭晓!文心 PLATO 再获殊荣

百度开发者中心

Javascript实现上传图片并实现预览图片功能的三种方法

deal

3月日更 3月程序媛福利 3月月更

国内领先的云软件厂商安超云加入,为龙蜥社区注入新动能

OpenAnolis小助手

开源 操作系统 云厂商 国产

【技术学习】一次Node.js站点渗透

H

node.js 网络安全 渗透测试

干货|性能提升密钥,由代码细节带来的极致体验

SphereEx

Apache 数据库 开源 ShardingSphere SphereEx

见证中国云势力崛起!博睿数据实力入围2021~2022 Cloud 100 榜单

博睿数据

如何为你的企业创建自助服务知识库

小炮

恒源云(GpuShare)_表序编码器的联合实体和关系提取(论文浅谈)

恒源云

自然语言处理 机器学习 深度学习

华为SmartCare和AUTIN品牌升级:助力运营商走出5G发展迷宫

脑极体

ARP欺骗攻击

喀拉峻

网络安全

星汉未来成为 FinOps 产业标准生态联盟首批会员

星汉未来

云原生 开源社区 成本优化 IT运维

在线TOML转JSON工具

入门小站

工具

31 家企业入选阿里云首期云原生加速器,共建云原生行业新生态

阿里巴巴中间件

云计算 阿里云 云原生 加速器 生态伙伴

多任务学习模型之DBMTL介绍与实现

阿里云大数据AI技术

机器学习 深度学习 数据模型 多任务学习

如何使用一个有安全性问题的隐私计算技术?

易观分析

隐私计算

阿里巴巴如何提升构建的效率 | 阿里巴巴DevOps实践指南

阿里云云效

阿里巴巴 阿里云 CI/CD 持续交付 构建工具

Twitter采用BotMaker技术对抗垃圾推文_语言 & 开发_张天雷_InfoQ精选文章