AD_PATTERNS = [ re.compile(r'\d{5,}'), re.compile(r'加.{0,2}微信'), re.compile(r'(促销|清仓|秒杀).{0,6}(价|微信)') ] def normalize(text): "““变体还原:替换干扰字符 + 拼音还原 + 去空白””" t = text for k, v in VARIANT_MAP.items(): t = t.replace(k, v) t = re.sub(r'\s+', '', t) return t def extract_features(text): "““特征提取:关键词命中数 + 正则命中的信号数 + 文本长度””" t = normalize(text) kw_hits = sum(1 for kw in AD_KEYWORDS if kw in t) regex_hits = sum(1 for p in AD_PATTERNS if p.search(t)) return kw_hits, regex_hits, len(t) def rule_score(text): "““规则引擎打分:广告分越界即判定为广告””" kw, rg, ln = extract_features(text) return kw 0.4 + rg 0.3 + (0.1 if ln > 50 else 0.0) def main(): msgs = [ '🔥限时促销!!全场清仓低价,加微信领取优惠券', '天气不错,周末去公园走走吗?', '兼职刷单,日入过千,轻轻松松,加VX详聊', '会议纪要已发到邮箱,请注意查收', '新品上市,秒杀价99元,错过再等一年,快加微信', '促△销清仓①折,加薇信sha价,机不可失' ] for msg in msgs: score = rule_score(msg) label = '广告' if score >= 0.5 else '正常' print(f'得分={score:.2f} 判定={label} | {msg}') print('\n变体还原示例:') t = '促△销清仓①折,加薇信sha价' print('还原前:', t) print('还原后:', normalize(t)) if name == 'main': main() ```
代码用途:演示一个极简的多级广告过滤系统——先做变体还原,再提取关键词与正则特征,最后用规则打分判定文本是否为广告。