休闲

微信小程序文本内容安全识别实例

时间:2010-12-5 17:23:32  作者:探索   来源:时尚  查看:  评论:0
内容摘要:微信小程序里用户发一句“你真是个废物”,后台如果只靠关键词黑名单,八成会漏。真正麻烦的是变种——谐音、拆字、表情符号混搭,甚至一张纯图片里藏着的辱骂。我去年给一个社区类小程序做审核,第一天就被教育了:

微信小程序里用户发一句“你真是微信个废物”,后台如果只靠关键词黑名单,小程序文八成会漏。本内别实真正麻烦的容安是变种——谐音、拆字、全识表情符号混搭,微信甚至一张纯图片里藏着的小程序文辱骂。我去年给一个社区类小程序做审核,本内别实第一天就被教育了:用户上传的容安评论里有张图,看着是全识风景照,放大角落才发现手写着一行脏话。微信关键词过滤根本拦不住,小程序文那才叫绝望。本内别实

后来换思路,容安直接调微信官方的全识内容安全API。接口名字挺直白,叫msgSecCheck,传文本过去,它返回一个结果码。0是正常,87014是命中违规。但光调接口不够,坑全在细节里。比如这接口对纯文本检测还行,可用户发的是“你好 坏”中间夹个零宽空格,你肉眼看不出来,它却能识别成辱骂。刚开始我天真地以为把用户输入原封不动丢过去就行,结果误杀率高达两成——有人发“这游戏真尼玛好玩”也被拦了,因为“尼玛”单独拎出来算敏感词,可结合语境明明在夸。

解决办法是加一层前置处理。先做轻度的文本清洗:去掉零宽字符、把全角符号转半角、表情符号替换成占位符。但别过度,比如用户发“草(一种植物)”这种网络梗,清洗时千万别真把括号内容删了,删了反而触发“草”的敏感词匹配。我试过最稳的流程是:先调一次官方接口,如果返回87014,再对文本做分词,把命中的敏感片段单独拎出来,跟用户历史行为对比——如果这人过去发过几百条正常消息,突然来一句带“草”的,大概率是误伤,直接放行;反之新注册账号第一句就带脏字,那直接拒绝。

还有个容易忽略的点:接口有并发限制。小程序搞秒杀活动时,用户瞬间刷屏,直接调接口会报超限错误。我当时没做队列,结果活动开始十分钟,审核服务直接瘫痪,所有评论都进数据库了,等于裸奔。后来改成异步处理,用户提交后先进待审区,前端显示“内容审核中”,后台用setInterval每200毫秒拉一批去调接口。延迟个一两秒,用户根本感觉不到,但系统稳了。

最讽刺的是,官方接口对“政治敏感”抓得极严,但对“人身攻击”反而宽松。有次用户发“你是猪吗”,接口返回0,正常。可这种话在社区里明显会引发争吵。所以我又加了层自建规则,针对“你+是+动物词”这种句式做二次检测,命中后转人工。别指望一个接口解决所有问题,它只是最底层的过滤网,真正要搭的是多层漏斗——官方接口筛掉硬核违规,自建规则处理语义陷阱,最后人工兜底处理模糊地带。

现在这系统跑了大半年,误杀率降到3%以内,漏网之鱼基本没有。但每次更新规则都提心吊胆,因为网络用语变得太快,上周还在用的梗,这周可能就成了违规词。只能保持每周看一次用户举报记录,把新出现的变种加进自建词库。做内容安全,本质是跟用户玩猫鼠游戏,你永远不可能赢,只能尽量别输得太难看。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap