首页 > 编程知识 正文

查找敏感词,单因素敏感性分析计算公式

时间:2023-05-05 18:38:54 阅读:20090 作者:4963

文章的版权由作者zjdbb和博客园共享,转载时请在明显的地方注明出处。 http://www.cn blogs.com/naaovegis /

1 .背景项目中需要过滤敏感词语。 首先有几个方案。

a .将敏感单词直接整理成String后,利用indexOf法进行查询。

b .传统敏感词签入后的SQL查询。

用Lucene编制分词索引进行查询。

d .利用DFA算法进行。

首先,项目收集到的敏感词汇有几千个。 使用a方案是绝对不行的。 其次,为了使今后的可扩展性变得容易,为了将对数据库的依赖抑制到最小限度,放弃b方案。 然后,Lucene本身就应该充当本地索引,并在敏感词增加时触发索引更新。 另外,这里不想基于轻量原则引入更多的库,所以放弃c方案。 因此,我们选定了d方案作为研究目标。

2.DFA算法概述DFA全部称为“Deterministic Finite Automaton”,确定有贫困机器人。 特征在于有限状态的集合和从一个状态通向另一个状态的若干边,每一边都被标记着符号,其中一个状态是初始状态,一个状态是终结状态。 但是,与不确定的有限自动机不同,DFA中从相同状态出发的两个边缘标记不会具有相同的符号。

简而言之,事件和当前状态提供了以下状态: 也就是说,事件状态=下一个状态。 理解为系统中有多个节点,通过传递输入的事件,决定向另一个节点发送哪个根,节点很有限。

3 .敏感词检索中的DFA算法3.1敏感词词典结构描述用王八蛋和王八羔两个敏感词描述,首先构建敏感词词典。 该词典名为SensitiveMap,这两个词的二叉树结构如下。

hash表中的结构如下。

3.2基于敏感词典搜索条件算法的描述将上述例子中构建的敏感图模式化为敏感词典。 假设在此输入的关键字是“王八不好”,则流程图如下。

4 .代码编写4.1结构敏感词实现代码

4.2机密单词查询代码的实现

5 .优化思路5.1在敏感单词之间填充无意义字符的问题对于“cjdbm蛋”这样的单词,要在中间填充无意义字符进行混淆。 检索敏感单词时,同样要进行无意义单词的过滤,循环到这样无意义的字符时要跳过,避免干扰。

5.2敏感词用拼音或部分拼音代替,解决两种解决思路。 一个最简单的就是遇到这样的问题,首先丰富敏感词典迅速解决。 二是判断时将敏感单词转换为拼音进行比较判断。

但是,目前这两个方案都不能很好地解决这个问题,这类问题还有待进一步研究。

-----欢迎转载,但保留版权。 请注明出处。 http://www.cn blogs.com/naaovegis /

如果你觉得这篇文章真的有用,你可以扫微信,奖励和鼓励小额。 谢谢^_^

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。