首页 > 编程知识 正文

dfa算法同时匹配到多词,dfa过滤算法

时间:2023-05-06 17:13:45 阅读:20081 作者:3979

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机密单词查询代码的实现

4.3API预览4.3.1替换敏感单词

String text='我们决定紧急征兵,派5000人去住宅区帮助灾民。 然后因为紧急情况决定开绿灯'; filter.replace (文本); 4.3.2 .是否包含敏感词语

String text='我小时候有个叫幸福石头的朋友,但现在和他几乎没有联系'; filter.include (文本; 4.3.3 .获取敏感单词数

String text='我小时候有个叫幸福石头的朋友,但现在和他几乎没有联系'; int result=filter.word count (文本; 4.3.4 .获取敏感单词列表

String text='我小时候有个叫幸福石头的朋友,但现在和他几乎没有联系'; liststringwords=filter.word list (text; 4.3.5 .添加白名单功能

- black list.txt-whitelist.txt4.3.6.增加方法重载

-更换(finalstringtext )/distance=0symbol=*-replace ) finalstringtext,finalcharsymbol//distance=0- includde

//在本例中,将5000添加到黑名单context.add word (collections.singleton list (' 5000 ),WordType.BLACK ) )。 4.3.8、增加在线删除敏感单词的方法

//这里从黑名单中移除5000 (黑名单中没有这个短语将被忽略) context.remove word (collections.singleton list ),WordType.BLACK ) //现在将紧急情况从白名单中移除(如果白名单中没有此短语,则将其忽略) (context.removeword ) collections.Singletonlist )、WordType.WHITE );

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

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

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

5.3敏感词之间填其他单词相对于时尚的鸽子八蛋,黑名单上存在“王八蛋”敏感词,中间填“小”字。 目前,可以设置跳过步骤skip=1对敏感词进行过滤,但在多字和多字填充的情况下,步骤skip不能统一设置,兼容情况需要进一步完善。

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