报错是这么冒出来的。用 moderation 接口做前置审核,阈值统一 0.5,商品描述里的击杀、爆头这类游戏用语被判成骚扰类,误判率约 9%,正常商品上不了架。
中间走过弯路,把「只看 flagged 字段没看具体类别」当成主因,改完现象没变。
把日志和配置对完,能解释这个现象的基本就这几处。单类别分数直接与统一阈值比较。还有一种是游戏与安全领域的正常术语进了敏感词。
还有一种情况,没有行业白名单机制。
动手时先导出被拦截样本的类别分数
python -c "import json;[print(json.loads(l)['category_scores']) for l in open('mod.jsonl')]"
再往下按类别设置不同阈值 暴力类放宽
python policy.py --thresholds violence=0.8,harassment=0.6
然后加行业白名单词表再判一次
python allowlist.py --words whitelist.txt --input mod.jsonl
灰区 0.4 到 0.7 的样本转人工
python route.py --band 0.4,0.7 --queue manual
隔了一天再看,现象没变,说明不是偶发。
怎么算真的好了,看的是同一批现象。误判率降到 1% 以下,漏放的抽检结果没有增加。
提醒一点。阈值要按类别分,一刀切的结果就是误杀正常业务词。这类问题最好一次改到位,反复小改反而容易把原因搅混。
