erlang使用AC算法过滤屏蔽字

 
简介:

  • Aho-Corasick算法简称AC算法,通过将模式串预处理为确定有限状态自动机,扫描文本一遍就能结束。其复杂度为O(n),即与模式串的数量和长度无关。
 
思路

  • 自动机按照文本字符顺序,接受字符,并发生状态转移。这些状态缓存了“按照字符转移成功(但不是模式串的结尾)”、“按照字符转移成功(是模式串的结尾)”、“按照字符转移失败”三种情况下的跳转与输出情况,因而降低了复杂度。
 
基本数据结构

AC算法中有三个核心函数,分别是:
  • success:  成功转移到另一个状态(也称goto表或success表)键: {当前状态, 输入} 值:下一状态
  • failure: 不可顺着字符串跳转的话,则跳转到一个特定的节点(也称failure表),我称为回溯状态, 从根节点到这个特定的节点的路径恰好是失败前的文本的一部分。
  • output: 命中的屏蔽词表
 
算法举例

以经典的ushers为例,假定4个词he/ she/ his /hers 为需要屏蔽的屏蔽词,输入文本为“ushers”。构建的自动机如图:
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值