一、问题分析
下图是一个完整的文本审核流程,包括名单匹配、敏感词匹配、AI机器审核、人工审核四个环节。待审核文本需要顺次通过名单匹配、敏感词匹配、AI机器审核三个流程,若结果为嫌疑则需要人工审核,否则将直接给出确定的结果。
敏感词匹配功能可以迅速地匹配文本中的敏感词汇,算法平均耗时为50ms,因其简单、快速、直接、灵活的特点,成为了审核人员对抗垃圾文本的利器。然而身处信息爆炸时代的网民们非常“优秀”,他们源源不断的发明各种新词、谐音词来绕过敏感词检测。
例如某些用户会使用“啋票”、“采漂”等词汇来规避敏感词“彩票”,其中“啋票”不仅是谐音词,还包含多音字,常规的模式匹配算法很难保证完全命中。这不仅给运营规则带来挑战,也对匹配算法的精准度、漏杀率提出了要求。
本文将从算法选型入手,结合两个实际场景来介绍谛听系统的敏感词匹配算法。其中第一节介绍了底层算法选型思路,第二节介绍了两种实际场景下提升敏感词精准度、降低漏杀率的方案。
36.1 算法选型
敏感词匹配功能依托于模式匹配算法。模式匹配的定义是,给定一个子串,在某个字符串中找出与该子串相同的所有子串。其中给定的子串被称为模式串,被匹配的字符串被称为目标串。基于多个模式串进行匹配的算法被称为多模式匹配算法,目前成熟的多模式匹配算法有AC自动机和WM。
多模式匹配算法对比
AC自动机 |
WM |
|
优势 |
匹配效率高模式串对匹配效率无影响 |
匹配效率高内存占用量少模式串预处理流程简单,速度快 |
劣势 |
内存占用量大模式串加载流程复杂,耗时较长 |
对模式串长度有要求(长度基本相同,有最小长度限制)模式串前缀存在大量重复时,算法性能显著下降需要根据实际情况调整算法参数 |
谛听的敏感词匹配业务有如下特点:
<