百度内容风控是怎样在秒级之内完成词表匹配

本文介绍了百度内容风控如何在秒级内完成词表匹配,包括词表管理平台、架构、词表服务统一入口、策略加载词表的实现。系统通过分布式和词典树(Trie树)技术,实现对海量敏感词的高效管理和快速匹配,满足内容审核需求。
摘要由CSDN通过智能技术生成

「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!

导读:我们在实现检测一个字符串是否包含另一个字符串时,简单的用一个字符串匹配算法就可以实现,如果要实现检测一个字符串是否包含 N 个字符串时,这个 N 有可能上千万,再利用简单的字符串匹配算法就没法满足我们的需求了,上千万的词需要可以灵活的维护,业务方匹配时能够拿到自己的词进行匹配,千万词的匹配需要保证匹配速度,要在秒级之内出结果。所以,我们需要一套解决此类问题的方案——词表服务 。

全文5370字,预计阅读时间 12分钟。

一、背景

内容审核平台需要检测作者发的文章中是否含有特殊的敏感词。对于不同的业务线对这些词的要求也不同,有的严格有的宽松;有的需要单词,有的需要多词;有的需要检测出隐含词、变体词;有的在标题生效,有的在正文生效;有的检测出送人审,有的检测出直接拒绝;有的需要几千词,有的需要上万、百万、甚至千万词。对于这些词各业务线可以自己维护,方便增加、删除、修改,各业务可以根据自己的需求配置词的生效规则;在检测的时候业务方可以拿到自己维护的词对文章进行检测,而且需要保证检测的时效,能够实时拿到检测结果。

二、架构

上图是词表服务的整体架构:

(1)词表管理:各业务线在词表管理平台维护自己的词表,每个业务线可以添加多个词表组,每个词表组中可以维护敏感词以及可以动态添加敏感词的属性;词表管理平台用ES实现了对词表及上千万词高效的分词检索能力;词表管理会定时生成各业务线的词表BOS文件,上传到BOS服务。

(2)服务层:业务方调用词表服务统一对外的匹配接口,服务层将匹配任务送到策略算子层,完成词表的匹配功能。词表对外的统一服务相当于一个简单的网关,提供了鉴权功能,验证请求是否合法;提供了流量限制的功能,可以为每个请求方设置流量限制值;提供了结果处理的功能,策略算子返回的敏感词属性只是一部分,根据业务方的需求,可以完善策略算子返回的敏感词属性;提供了流量转发的功能,可以根据配置将各业务线的请求打到不同的集群,实现各业务策略算子分集群部署。

(3)策略算子层:策略算子实现对文本中敏感词的匹配,匹配的模式有包含匹配、强过滤匹配、多模匹配,命中的敏感词会返回给词表服务层。各业务线的词表会被策略的每个算子用全量刷新的方式或者实时同步增量数据的方式加载到内存,支持算子的匹配功能。全量刷新的方式:词表管理平台会定时将词表分业务线生成BOS文件,上传到 BOS 服务,策略算子定时从BOS文件中同步敏感词到内存;实时同步的方式:策略算子会实时扫描刺词表数据库,将增量的词表加载到内存。

(4)基础服务:GDP框架实现了词表服务开发,Pandora平台实现了词表服务的部署,mysql 实现了词表数据的存储,ES实现了词表的分词检索,bdrp实现了限流及缓存功能,BOS服务实现了词表文件的的传输。

三、词表管理平台

词表管理平台,实现了各业务线维护自己的词表,每个业务线下可以创建多个词表组,方便业务方分类管理自己的敏感词,每个词表组的含义由业务方赋予,具体体现在当命中的敏感词属于这个词表组的时候,业务方是否根据词表组做不同的处置;每个词表组下可以维护敏感词,敏感词的属性由业务方自己选择,例如,审核类型这个属性,业务方可以根据命中具体某个敏感词后要送审,就选择送审词这个属性值,如果要拒绝就选择拒绝词这个属性值。

3.1词表管理

各业务线可以添加、修改的词表,可以对词表进行检索。

(1)新增词表,选择属于的业务线,添加名字和备注,可以一次将词表创建到多个业务线下,如果其他业务线有词表可以复用,也可直接将其他业务线的词表拷贝到自己新建的词表下,方便快捷,方便管理人员对词表的管理。如图1:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值