前几天小区群里有人发了个二手婴儿车转让信息,附带几张照片和联系方式。可等了半天没见发布成功,一问才知道卡在平台审核环节了。类似的情况其实挺常见——我们用本地生活App发租房、招聘或者拼团消息时,总得等一会儿才能上线,有时候急着用信息却迟迟过不了审。
老问题:人工审核慢,机器又太死板
以前很多同城平台靠人工一条条看内容,效率低不说,还容易漏掉违规信息。后来上了自动审核系统,本以为能快些,结果发现机器太较真:比如写个‘白菜价甩卖’就被判定为虚假宣传,或者提到‘微信联系’直接被打回,用户体验反而更差了。
这种矛盾其实在不少城市服务类App里都存在。一边是用户希望信息尽快发布出去,另一边是平台要控制风险、防止广告刷屏或诈骗内容泛滥。怎么平衡?最近看到一个本地论坛的改造案例,倒是提供了新思路。
分级审核+本地词库,提升判断精准度
他们把信息发布分成了三档。普通居民日常发个寻物启事、宠物领养这类低风险内容,走快速通道,系统识别无敏感词就直接放行;涉及交易、租赁的信息则进入二级审核,调用规则引擎检查价格是否异常、联系方式是否合规;而一旦触发关键词如‘发票代开’‘代办社保’,才交由人工重点处理。
关键是他们建了个‘本地语义库’。比如在成都,‘打牙祭’不会被误判成暴力词汇;在深圳城中村发布的‘床位出租’信息,默认按短租场景处理,不轻易归类为黑中介。这些细节能让算法更懂本地人说话的习惯。
动态权重机制减少误伤
还有一个做法值得提:给用户行为加权重。长期守规矩的用户,发的内容优先通过;新账号第一次发布,系统会多盯一眼。就像楼下便利店老板在群里发个促销通知,平台知道他是熟面孔,审核自然松一点。而频繁删改重发、内容雷同的账号,则会被临时降权。
技术实现上,他们在原有审核流程中嵌入了一个评分模块:
function calculateRiskScore(post) {
let score = 0;
if (containsSensitiveWords(post.content)) {
score += 80;
}
if (isTrustedUser(post.authorId)) {
score -= 30;
}
if (post.type === 'second_hand_goods') {
score += 20;
}
return Math.max(0, Math.min(100, score));
}
分数低于30的自动发布,30到70之间走机器复核,70以上锁定并提醒人工介入。上线两个月后,平均审核时间从原来的42分钟缩短到9分钟,投诉率也降了一半。
反馈闭环让系统越用越聪明
最接地气的是他们加了个小功能:每次审核结果页面底部有个按钮,写着‘我觉得判错了’。点进去能简单说明原因,数据会进到训练池。三个月下来,模型对‘闲置交换’和‘非法集资’的区分准确率提高了近两成。毕竟,只有常住这儿的人才知道,‘拼单买米线调料’跟传销根本不是一回事。