多模匹配算法之Aho-Corasick

原创 2016年05月30日 20:40:25

背景

除剔除那些含有敏感词的文本,由于有大量的敏感词,所以通过简单的正则表达式和字符串查找的方式效率太低,每次都有遍历一次字符串。而AC算法的核心思想就是避免不必要的回溯使搜索一直沿着向前的方向,最大可能的减小了时间复杂度,时间复杂度O(N),N为所有的字符串的长度,而且关键字的字数和长度无关。

基本思路

该算法核心:字典树的构建及搜索路径的确定
算法动画示例:确实很给力
1. 字典树的构造
就是把你要匹配的敏感词,用树结构来进行表示,树边就是单词中的字符,如下图所示,在单词的最后位置添加连接节点也就是下图中的0。
h

  1. 搜索路径的确定
    1)当前字符匹配,表示从当前节点沿着树边有一条路径可以到达目标字符,此时只需沿该路径走向下一个节点继续匹配即可,目标字符串指针移向下个字符继续匹配

    2) 当前字符无匹配,表示当前节点的任何一条边都无法达到要匹配的字符,此时不能沿现有路径前进,只能回溯,回溯到存在的最长的后缀字符串处,如果没有任何后缀字符串匹配则回溯到树根处。然后从当前回溯节点判断是否可以到达目标字符串字符
    (未完待续)

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

基于Trie树的多模匹配算法实现和及优化

1.多模匹配算法简介     多模式匹配在这里指的是在"一个字符串"中寻找"多个模式字符字串"的问题。一般来说,给出一个长字串和很多短模式字符串,如何最快最省的求出哪些模式字符串出现在长字串中是我...

AC多模匹配算法过滤敏感词实例

本文章摘编、转载需要注明来源 http://blog.csdn.net/shadowsick/article/details/8891939 在应用项目中很多时候都需要用到过滤敏感词的功能,自己...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

大数据量,海量数据 处理方法总结

1.Bloom filter 适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 基本原理及要点: 对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的...

十道海量数据处理面试题与十个方法大总结

1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限...

关于海量数据处理问题

问题: 假设一个文件中有9 亿条不重复的9 位整数,现在要求对这个文件进行排序。  一般解题思路:  1 、将数据导入到内存中  2 、将数据进行排序 (比如插入排序、快速排序)  3 、将排...

[转]多模匹配算法与dictmatch实现

来源:http://stblog.baidu-tech.com/?p=418多模式匹配在这里指的是在一个字符串中寻找多个模式字符字串的问题。一般来说,给出一个长字符串和很多短模式字符串,如何最快最省的...

从Trie树(字典树)谈到后缀树(10.28修订)

从Trie树(字典树)谈到后缀树作者:July、yansha。出处:http://blog.csdn.net/v_JULY_v 。 引言    常关注本blog的读者朋友想必看过此篇文章:从B树、B+...

多模匹配算法之Aho-Corasick

背景除剔除那些含有敏感词的文本,由于有大量的敏感词,所以通过简单的正则表达式和字符串查找的方式效率太低,每次都有遍历一次字符串。而AC算法的核心思想就是避免不必要的回溯使搜索一直沿着向前的方向,最大可...

字符串匹配算法 之 Aho-Corasick

简介首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文...

Aho-Corasick算法

Aho-Corasick Algorithm 简称简称AC算法,通过将模式串预处理为确定有限状态自动机,扫描文本一遍就能结束。其复杂度为O(n),即与模式串的数量和长度无关;与其相当的就是Wu-Man...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)