DFA算法

今天新学习了一个敏感词匹配的算法,记录一下。

  原文地址:https://blog.csdn.net/qq_36827957/article/details/74357283

  1、用途:

    主要用于敏感词匹配。

  2、原理:

  以王八蛋和王八羔子两个敏感词来进行描述,首先构建敏感词库,该词库名称为SensitiveMap,这两个词的二叉树构造为:

 

以上面例子构造出来的SensitiveMap为敏感词库进行示意,假设这里输入的关键字为:王八不好,流程图如下:

  

3.代码编写

3.1构造敏感词实现代码

 

3.2实现敏感词查询代码

 

4.优化思路

4.1敏感词中间填充无意义字符问题

对于“王*八&&蛋”这样的词,中间填充了无意义的字符来混淆,在我们做敏感词搜索时,同样应该做一个无意义词的过滤,当循环到这类无意义的字符时进行跳过,避免干扰。

4.2敏感词用拼音或部分用拼音代替

两种解决思路:一种是最简单是遇到这类问题,先丰富敏感词库进行快速解决。第二种是判断时将敏感词转换为拼音进行对比判断。

不过目前这两种方案均不能彻底很好的解决该问题,此类问题还需进一步研究。

4.3效率问题

由于敏感词的在构造词库时耗时长,建议将构造后的敏感词库进行缓存。在敏感词新增和删除时进行词库的更新。

猜你喜欢

转载自www.cnblogs.com/smilond/p/10523672.html
DFA