基于网上各路大神的复制粘贴的帖子,转载转载再转载的帖子,基本上先体会思想就完事了。
基本上就是两个重点,构建词库,将带有敏感词的文本与敏感词库进行比对。其他的什么特殊字符什么的都不是重要的。
懂的自然懂~
主要说一下构建词库要点:
1.一棵树
在实现文字过滤的算法中,DFA是唯一比较好的实现算法。DFA即Deterministic Finite Automaton,也就是确定有穷自动机,它是是通过event和当前的state得到下一个state,即event+state=nextstate。
简单来说,你想过滤几个词 :垃圾,垃圾了,垃圾分类,狗子。得到的模型如下
所以,无非是map里存map。当我们将每个敏感词拆成一个一个的字,将其做成树状结构,并在构建的时候加状态(这个状态是用来判断它是否还存子map),共用相同的字,例如,垃圾,垃圾了,垃圾分类,在一级的map中就存在相同key,二级也存在相同的key,以此类推。
2. 比对敏感词库
同样的,将文本与敏感词库对比,也是讲文本拆成一个一个的字进行比对,只要进了树,或者说文本的一个字在map里get到了值,同样,文本的第二个字在第一个的二级map里也get到了值,那么,你说他算不算敏感词?就比如,你是个程序员,一不会算法,二不会学习,那么你是不是一个很水的程序员?答案是肯定的。光打嘴炮不写代码的程序员,水不水也是一定的。手动狗头。
问我要代码?请参考上一个问号。