敏感词过滤与DFA算法Trie树
来源:互联网 发布:php 伪造来路 编辑:程序博客网 时间:2024/06/05 04:16
一:Trie概念
下面我们有and,as,at,cn,com这些关键词,那么如何构建trie树呢?
从上面的图中,我们或多或少的可以发现一些好玩的特性。
第一:根节点不包含字符,除根节点外的每一个子节点都包含一个字符。 第二:从根节点到某一节点,路径上经过的字符连接起来,就是该节点对应的字符串。 第三:每个单词的公共前缀作为一个字符节点保存。
二:使用范围
既然学Trie树,我们肯定要知道这玩意是用来干嘛的。 第一:词频统计。 可能有人要说了,词频统计简单啊,一个hash或者一个堆就可以打完收工,但问题来了,*如果内存有限呢?*还能这么 玩吗?所以这里我们就可以用trie树来压缩下空间,因为公共前缀都是用一个节点保存的。 第二: 前缀匹配 就拿上面的图来说吧,如果我想获取所有以"a"开头的字符串,从图中可以很明显的看到是:and,as,at,如果不用trie树, 你该怎么做呢?很显然朴素的做法时间复杂度为O(N2) ,那么用Trie树就不一样了,它可以做到h,h为你检索单词的长度, 可以说这是秒杀的效果。
举个例子:现有一个编号为1的字符串”and“,我们要插入到trie树中,采用动态规划的思想,将编号”1“计入到每个途径的节点中,
那么以后我们要找”a“,”an“,”and"为前缀的字符串的编号将会轻而易举。
事例
百度云上有保存源码
引用原文链接
这里写链接内容
http://www.cnblogs.com/huangxincheng/archive/2012/11/25/2788268.html
好处
- trie树最大程度的压缩了内存
- 使用简单,轻量级, 满足应用前期需求
0 0
- 敏感词过滤与DFA算法Trie树
- DFA敏感词过滤算法
- DFA算法过滤敏感词,替换为*
- DFA算法过滤敏感词,替换为*
- DFA算法过滤敏感词整理
- Java DFA算法实现敏感词过滤
- 敏感词查询过滤DFA算法
- 基于DFA算法实现过滤敏感词
- DFA和trie字典树实现敏感词过滤(python和c语言)
- 敏感词汇过滤DFA算法
- java DFA 敏感词过滤
- DFA 算法实现敏感词过滤(python 实现)
- java敏感词过滤-使用HashMap实现DFA算法
- java敏感词过滤-使用HashMap实现DFA算法
- java敏感词过滤-使用HashMap实现DFA算法
- 高效敏感词过滤JAVA实现(DFA算法)
- java敏感词过滤-使用HashMap实现DFA算法
- Java实现DFA算法对敏感词、广告词过滤功能
- 使用TensorFlow创建自己的手写识别引擎
- 使用git提交文件修改提交者姓名
- C++学习手记
- 试试
- csharp: Procedure with DAO and DAL
- 敏感词过滤与DFA算法Trie树
- Android事件总线EventBus的用法详解
- webvirtmgr推荐
- svm从理论到opencv实践
- 图像处理类期刊
- csharp: Procedure with DAO and DAL
- android 6 中init.rc的生成过程
- 使用Python学习selenium测试工具-3:unittest库介绍
- 计算机系统概论