Skip to content

Latest commit

 

History

History

springboot-sensitive-word

springboot-sensitive-word

敏感词过滤算法是一种用于检测文本中是否包含敏感词的技术。

常用的敏感词过滤算法包括:

  • 关键词匹配:简单粗暴,直接根据一个固定的敏感词库进行匹配过滤。
  • AC自动机算法:基于自动机理论,构建一个多模式匹配树,可以高效地匹配多个关键词。
  • DFA(Deterministic Finite Automaton)算法:确定有限自动机算法,将多个敏感词进行预处理,构建状态转移图,可以快速匹配敏感词。
  • Trie树:字典树的一种应用,适合用来存储和查找大量字符串,可用于实现敏感词过滤。
  • 双数组Trie树:对Trie树的空间进行了优化,提高了查询效率,常用于敏感词过滤和搜索引擎的关键词匹配。
  • Bloom Filter:布隆过滤器,用于快速判断一个元素是否在一个集合中,可以用来过滤大规模的敏感词库。
  • 机器学习算法:如基于深度学习的文本分类模型,可以训练模型来识别和过滤敏感词,具有一定的智能化和泛化能力。

spring-boot 集成(组件)示例

以下是已经完成的示例模块

敏感词过滤算法思路

下面是几种常用的敏感词过滤算法的实现思路、优缺点等:

  1. 关键词匹配算法
   实现思路:
       维护一个敏感词库,存储所有的敏感词。
       对待检测文本进行遍历,在文本中查找是否包含敏感词库中的任何敏感词。
   优点:
       实现简单,易于理解和部署。
       效率较高,适用于小规模敏感词库。
   缺点:
       无法处理敏感词拼音、变形、组合等情况。
       效率会随着敏感词库规模增大而降低。
  1. AC自动机算法
   实现思路:
       构建AC自动机,将敏感词库中的敏感词构建成一个自动机,实现多模式匹配。
       将待检测文本作为输入,通过自动机进行遍历匹配。
   优点:
       能够高效地匹配多个敏感词。
       可以处理较大规模的敏感词库。
   缺点:
       实现相对复杂,需要构建自动机的过程。
       对于敏感词库变动频繁的场景,维护成本较高。
  1. DFA算法
   实现思路:
       将敏感词库中的敏感词构建成一个DFA有限状态机。
       遍历待检测文本的字符,根据状态转移规则判断是否匹配敏感词。
   优点:
       匹配速度快,内存消耗低。
       可以快速定位到敏感词位置。
   缺点:
       构建DFA需要耗费一定的时间和空间。
       对于敏感词库更新频繁的情况,维护较困难。