文章里的「杀菌」「杀菌率」被替换成星号,正常科普内容发出去变成一串星号,一天收到 12 条作者投诉。日志里能对上时间点,这种反而好排。

匹配用的是字符串包含,短词命中长词的一部分,没有做词边界判断。词库里单字的权重也没有和长词区分。这一点先确认清楚,后面就不用反复试。

re.compile(r'(?<![\u4e00-\u9fff])敏感词(?![\u4e00-\u9fff])')
# 先跑样本统计命中数

「敏感词误杀」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。

临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

处理上按这个顺序:给短词加边界条件,中文按前后字符判断,英文按单词边界;把单字词从自动替换降级为人工复核;用正常文章跑一遍,统计误伤率再上线。

结果对不对很好判断,「杀菌」不再被替换,违规词仍然能正常命中。

作者 9823189