一、背景与挑战
1.1、引言
1、目前,在商业广告审核领域,分为几大类审核项:内容审核,创意审核,资质审核,产品审核等。
所采用的技术方案,根据审核量级与分类的不同,也有一定的区别。以知乎为例,对于海量的内容数据,一般采用机器审核为主,人工为辅,再结合用户举报,反垃圾等机制,共同来完成审核工作。
而对于,创意、资质、产品类的审核,则以人工为主,机器为辅。机审侧重于一些可衡量因子,如行业法规,企业认证信息,违规词,内容长度等等。
2、审核不是最终的目的,只是一种手段。它可以帮助创作者,广告主,持续输出优质内容、创意,以达到价值最大化。如内容ranking,曝光,点击率等等。
就审核功能建设本身而言,无论是人工审核,还是机器审核并不是一件复杂的事情。平台化的目的,就是为了提效“节能减排”。
1.2、挑战分析
1、目前知乎商广,人工审核方面,日审单量过万,机审单量则以海量来计,审核已成为商广最重要的业务之一。需要审核的业务线,也从最初的一条业务线,发展到现在的十余条。
2、原审核功能,每条业务线单独进行维护。随着审核单量的增加和业务的发展,每条业务线不得不背负极其重的技术债务进行迭代,以满足发展的需要。
3、本文主要分享,审核平台在落地中的探索与实践。
审核平台在实际落地中,面临着多方面的挑战与问题,例如:
- 问题一:在知乎内部存在多套审核系统,几乎每条业务线都有自己的一套玩法和规则,如何进行整合。
- 问题二:每条业务线,都存在一定的技术债务,是否要进行消解,再接入审核平台。
- 问题三:是自研审核平台,还是选择采购或使用开源的审核系统。
- 问题四:如何保证,在不影响正常业务需求迭代的情况下,让各条业务线接入审核平台。
- 问题五:新的审核平台上线,是否能够完成提效“节能减排”的目标。
二、解决方案
2.1、前期调研与总结
1、市面上的系统(网易易盾,华为,七牛)等,可提供内容、图片、视频审核功能,具体的接入方式可以查看各家开放平台的接入文档。对于这类系统我们可选择它们做为支持子域来使用。
2、知乎社区的天玑系统,偏向于进行风控和内容审核。
3、知乎商广各业务线的审核系统,业务定制化程度高,只能满足各自业务线的需求。
系统 | 所属团队 |
效果、知+、品牌、芝士、三方创意,知盟配图 | 知乎商广 |
天玑 | 知乎内部 |
网易易盾 | https://dun.163.com/ |
华为内容审核系统 | https://www.huaweicloud.com/product/vcm.html |
七牛内容审核 | https://developer.qiniu.com/censor |
字节、腾讯审核平台 | 字节、腾讯 |
4、各业务线都存在技术债务,经多次讨论决定,先不消解原有的技术债务,采用埋点通知式 或 异步监听式两种办法进行的消息交互。
5、审核平台在前期建设时,收益难以体现,所以对于优先级较低的业务系统选择延后接入。
6、审核平台如何短期完成一个提效的小目标?我们采用的办法是,收集广告审核部门目前最痛的需求点优先进行解决,并且定期进行沟通和反馈意见收集。
7、选择开源系统还是自研系统?虽然不想重复造轮子,但仍需要把轮子组装起来。
8、项目开展理论依据是什么?严格遵循项目五大过程组 + 宣讲。
2.2、广告审核平台的本质
透过现象看本质,广告业务这件事整体来看,分为3层:业务层、审核层、广告展示层。
- 广告展示层:负责广告的流量分发,确定什么样的广告投放给什么样的用户。
- 审核层:承接公司各条业务线的审核任务,包含资质、产品、广告创意、插件、落地页、内容、视频、电商产品审核等。
- 业务层:根据广告主的需求进行商业化的广告设计,帮助广告主快速投放广告,提升品牌影响力以及推广效率。
业内无论是,字节,腾讯,阿里这样的大型广告平台,还是其他厂商,都脱离不了这3个层面。
而就广告审核部门而言,每个厂商内部都有自己的SOP。审核的维度也脱离不了资质、产品、创意、内容这几个方面。另外审核的方式主要包含:人工+机器审核、初审、复审、巡检、治理等方式。
围绕着这些原则,我们决心自研知乎自己广告审核平台,我们叫它 【alice】。
2.3、审核平台架构搭建
基于上述调研的一些情况,我们初步构建出审核平台的技术架构如下图:
完成架构搭建后,我们就可以基于此思路,进行模型的建立。
2.4、审核平台模型建立
自计算机体系建立以来,就围绕输入,输出,这两个点来进行。那什么是审核平台的输入与输出呢?
审核平台的输入和输出很直观就可得到,输入:待审核的任务;输出:任务的审核结果、通过/拒绝。
基于此原则的前提下,我们对审核平台,进行了建模,如下图所示。
分为3个领域:核心领域、通用领域、支撑领域;在各个域下再细分为多个子域进行建模。
1、基础服务子域:分为系统配置,审核模版,审核组件,文件服务。
- 系统配置,根据审核项的不同,构建出,系统菜单,列表页面,搜索项,工作流等。
- 审核模版,根据审核项的不同,由多个审核组件,组装成一个模版。
- 审核组件,包含基础的kv组件,广告创意类组件,内容组件等等,是构建审核页面的基石。
- 文件服务,负责系统内,所有文件类存取。
2、用户子域:
- 用户数据:分为内部员工、外包审核员等用户。
- 用户权限:包含操作权限、数据权限。数据权限通过用户所在部门来进行控制。
3、审核项管理子域:对不同性质的审核领域进行划分,与基础服务子域和用户子域配合使用。
4、审核准入子域:
- 任务提审
- 任务撤销
- 任务修改
- 历史任务同步
5、审核通知子域:
- 广播通知:广播审核结果,业务线自行订阅。
- 个性化触达:独立消息通知,企业微信机器人通知等。
6、工作流子域:可配置工作流,初审、质检、巡查等等,均可自定义。
7、机审子域:
- 内容类,可进行内容黑灰词,高亮标注。
- 图片识别:内容,创意等,使用知乎自研图片识别技术,进行违规图片识别。
- 视频审核:对视频,进行截图,进行人审+机审。
- AI辅助审核:分析可衡量因子,建立特征工程,AI给出审核辅助提示。
2.5、任务提审--输入层
1、输入层的设计,就数据传输的方式上,我们考虑过以RPC方式或消息中间件的方式,进行通讯。
为什么放弃了RPC而采用了消息中间件,有以下几点的考量。
- RPC的方式,对于使用方需要特别关注RPC调用失败的情况,如何进行补偿。
- 对于有顺序类的操作请求,例如提审,撤销,修改等情况。审核平台需要保证消息的顺序性处理,以满足要求。
- 考虑到审核平台负载问题,消息中间件可以天然的成为应该流量的屏障。
- 在处理提审逻辑的过程当中,发生错误的情况,可以使用消息队列重新进行消费以避免繁杂的补偿逻辑代码编写。
2、在传输的数据结构上,主要考虑的点有以下几个。
- 尽量简单,减少业务线接入的理解成本。
- 设计一个传输的数据结构,相当于设计一个协议。市面上常见的协议分为:请求头+请求数据。在此基础上我们把数据结构体拆分为几部分【消息类型+基础信息】==请求头;【业务数据】==请求数据。
3、详细的数据结构如下
- msgType:采用了标准的CURD思想,可灵活的完成对审核任务的操作。
- baseInfo:审核任务的基础信息,通过【审核项类型】确定审核任务的大类;【任务唯一ID】标识审核任务唯一,不可重复。
- businessInfo:这里放置的数据,与业务系统提前配置在审核平台里的数据字典一一对应,在下文2.7章节【审核模版与组件】中进行详细的介绍。
字段定义 | 字段描述 |
msgType | 消息类型:提审,撤销,修改,历史任务同步 |
baseInfo | 基础信息:审核项类型,任务唯一ID,任务名称,提审时间,推送时间,模版ID |
businessInfo | 业务系统自定义信息,与审核模版和组件配合使用 |
2.6、审核工作流设计
1、在审核工作流的设计上,借鉴了OA系统的工作流设计,目前分为:初审、质检、巡查、治理等工作流。
2、多个工作流之间,可串行,或者并行的进行流转。下图主要介绍了初审与质检工作流,流转过程。
2.7、审核模版与组件
1、模版与组件概念,并不是一个新奇的思想。从早期的smart模版、IOS的可视化编程,到现在的微信公众平台消息模版组件、前端Vue框架等开发,无不体现了模版与组件的思想。
组件化的方式可独立、可完整、也可自由组合。目标就是把元素进行独立化、使其完成局部功能、又可通过自由组合,构成整个模版或产品。审核平台正是借鉴的此思想,来完成对应的设计与开发工作。
2、上文2.5章节【任务提审--输入层】介绍到的【业务信息:businessInfo】就在此处进行了使用,下面为模版与组件的创建步骤:
- 业务线同学,在审核平台申请接入,审核平台为其分配对应的【审核项唯一标识】。
- 在对应的审核项下,创建数据字典。
- 数据字典的内容包括:数据key、名称、数据类型,枚举值、远程数据源、数据操作类型。
- 创建数据组件、在组件中勾选要展示的数据字典项,并为该数据字典项分配样式包括:html、text、link、image、creative等。
- 再选择单个组件的样式包括:container、qualification、keyValue,article,answer、video等进行保存。
- 创建审核模版、在模版上添加该模版要展示的组件,选择模版样式以及其布局样式进行保存。
3、创建完成就要进行渲染,审核模版当中数据组件的渲染步骤如下:
- 任务提审输入的businessInfo数据结构示例:
{
"orderId":"订单ID",
"logo":"图片地址",
}
- 审核平台定义的组件【数据字典key:orderId】数据结构示例:
{
"name": "",//显示名称
"focus": "",//聚焦
"style": "",//样式html、text、link、image、creative等等
"id": "",//数据字典key值
"value": "@{orderId}"//数据字典value值
}
- 根据组件中的【id】找到对应的数据字典的key,并完成value的替换,结果如下:
[{
"name": "订单ID",
"focus": "true",
"style": "text",
"id": "orderId",
"value": "订单ID的值"
},
{
"name": "品牌logo",
"focus": "true",
"style": "image",
"id": "logo",
"value": "[{\"image\":\"图片地址\"}]"
}]
4、数据字典、组件、模版关系如下图所示:
2.8、系统可配置化建设
1、系统可配置化,包括,数据字典管理,审核组件管理,审核模版管理,菜单页面配置,工作流配置等等。
2、数据字典,与提审过来的businessInfo进行映射,完成字典建设。
3、审核组件,在数据字典的基础上,进行个性化配置,字段映射。
4、审核模版,由一个个审核组件,组装而成。
2.9、角色与权限控制
1、权限控制,分为页面级的操作权限、API接口权限、数据权限。
2、支持知乎自研内网帐号体系,SSO账户登陆。
3、支持外网知乎APP扫码授权登陆。
2.10、智能审核
1、文字方面,采用敏感词识别,运营/审核人员一般会预设一批关键词入库,通过关键词分类,排列组合,完成机器审核。
2、反垃圾机制,通过机器识别的手段,对各种以机器发布的垃圾内容以及广告,进行判断过滤。
3、图片识别,图片不同于文字,无法进行关键字的提取工作,我们通过知乎自研的图片识别技术,对违规图片进行过滤。
4、视频方面,通过对视频分段截图,在配合图片识别,以及人工辅助审核,完成该项工作。
5、早期使用,优秀的第三方公司API,例如网易易盾等公司,完成智能审核工作。
2.11、任务审核结果--输出层
审核结果产生以后,同样使用消息中间件进行消息广播,各业务线自行进行监听,完成审核的后续动作。
三、应用实践
经过4个月左右的建设,广告审核平台完成了基础功能的建设;已接入知乎商广的效果广告、知+、品牌广告、芝士、商业会员等多条业务线;
3.1、广告审核部门对接
在对接广告审核部门的过程当中,能否切实解决对方的需求,获得审核团队的认可尤为重要。这里我们分为如下几个步骤去开展工作:
- 项目启动前组织沟通会,收集审核团队的目前遇到的问题,以及原审核系统使用的情况。
- 针对审核团队遇到的问题,进行需求拆解形成文档。
- 经过需求拆解过后,对需求进行分类,主要分为:风控、提效、辅助三大类。
- 对需求进行优先级排序,提效=>风控=>辅助。
- 再次进行沟通,确认未来一个季度的目标是否一致并达成共识,共同完成业务指标。在解决审核团队现实问题的前提下,完成审核平台能力建设。
- 在实际使用审核平台过程中,建立专项沟通群第一时间,解决审核团队遇到的问题。
- 定期进行数据统计,分析审核时效,审核单量等指标。
3.2、业务线接入对接
1、业务线接入过程,采用标准的项目五大过程组,进行工作的开展。
2、在技术方案对接过程中,为了快速完成业务线原有审核模块的迁移,审核平台进行了兼容处理,具体举措如下:
- 业务线复用原审核模块返回给PC端的结构体,原样传输到businessInfo当中,由审核平台完成解析入库。
- 审核平台审核结果的同步,采用方式为:调用业务线原审核模块提供给PC端的http接口,由审核平台组装该http接口所需的数据,完成审核结果的同步。
- 业务线提审过程当中,由于网络问题,时序问题、提审埋点逻辑缺失等问题,由审核平台采用定时任务的方式,扫描业务线数据库,完成补偿逻辑。
- 后续再有新的模块接入,不再采用兼容方案。
3.3、收益概要
上线前后,单审核模块,效率提升对比如下:
数据 | 1小时覆盖率 | 2小时覆盖率 | 3小时覆盖率 | 全天平均时效 | 人均审核量(日均) |
系统上线前日均 | 74.68% | 93.27% | 99.15% | 00:41:53 | 411 |
11月系统使用 | 93.91% | 99.17% | 99.79% | 00:21:28 | 429 |
环比提升效率 | 25.76% | 6.33% | 0.64% | 47.72% | 4.30% |
四、未来规划
4.1、审核组件渲染统一化
1、在各业务线接入审核平台的过程中,广告创意的组件渲染,占整体工作量30~40%以上。上百种的广告创意,在原有业务线已经可以进行渲染,但搬到审核平台,就需要重新进行开发。
- 图例一:为广告创意在业务线系统渲染的样式。
- 图例二:为该创意在审核平台渲染的样式。
(图例一:原业务线广告创意)
(图例二:审核平台对应的广告创意)
2、广告创意的渲染,不仅仅在PC端的运营系统存在。在进行广告投放的过程当中,对应的知乎PC端与知乎APP端,也要进行该广告创意的渲染。各端在进行创意渲染时,使用的渲染组件与数据结构,均不统一;存在或多或少的数据结构兼容转换逻辑。
3、基于以上问题,审核平台决定推动渲染组件的统一化建设。实现一处编码,各端各系统通用化渲染的目的。
4.2、智能审核建设
经过4个月左右的建设,我们其实只完成了第一步,明确了广告审核的重要性以及标准流程的建设。在如今各大APP,动辄上亿的广告请求下,对广告审核的要求,已经变的越来越高。广告创意的数据,也以海量来计。在如此海量数据面前,人工审核是完全不现实的,基于AI算法的机器审核才是最后解决问题的根本方案。
4.3、广告风控
从知乎APP长远健康发展的角度来考虑,风控环节都应受到严格的重视,在面临监管的压力下,需要更加精细化的审核风控。
作者:刘小川
出处:https://zhuanlan.zhihu.com/p/455446275