资讯专栏INFORMATION COLUMN

敏感词检测算法小结

刘厚水 / 2900人阅读

摘要:序本文简单介绍下敏感词或者脏词检测算法。经典算法经典的算法由三部分构成,表,表和表,共包含四种具体的算法,分别是计算三张查找表的算法以及算法本身。表是由模式集合中的所有模式构成的状态转移自动机。

本文简单介绍下敏感词或者脏词检测算法。

经典AC算法

经典的AC算法由三部分构成,goto表,fail表和output表,共包含四种具体的算法,分别是计算三张查找表的算法以及AC算法本身。

goto表是由模式集合P中的所有模式构成的状态转移自动机。(goto表就是一棵trie树)

failure表作用是在goto表中匹配失败后状态跳转的依据,这点与KMP中next表的作用相似。(这个表是trie树没有的,加了这个表,AC自动机就看起来不像一棵树,而像一个图)

output表示输出,又称:emits,即代表到达某个状态后某个模式串匹配成功

AC自动机本质上来说是一种基于trie树的kmp算法,AC算法需要三个函数来进行字符串匹配,而且这三个函数的求解都和一个确定的DFA(有限状态自动机)有关。

普通DFA算法

确定性有穷自动机,用于正则表达式的匹配,最长左子式匹配

使用hashmap
public void createKeyWord(String keyWord) {
        Map nowMap = sensitiveWordMap;
        for (Character c : keyWord.toCharArray()) {
            Object obj = nowMap.get(c);
            if (obj == null) {
                Map childMap = new HashMap<>();
                childMap.put("isEnd", "false");
                nowMap.put(c, childMap);
                nowMap = childMap;
            } else {
                nowMap = (Map) obj;
            }
        }
        nowMap.put("isEnd", "true");
    }
使用自定义数据结构
public class WordNode {
    private int value; // 节点名称
    private List subNodes; // 子节点
    private boolean isLast;// 默认false

    public WordNode(int value) {
        this.value = value;
    }
    public WordNode(int value, boolean isLast) {
        this.value = value;
        this.isLast = isLast;
    }
    //......
}    
doc

字符串多模式匹配:AC算法

Java实现DFA算法对敏感词、广告词过滤功能

敏感词过滤的算法原理之 Aho-Corasick 算法

敏感词过滤的算法原理之DFA算法

AC自动机和Fail树

基于双数组的AC匹配算法学习

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70247.html

相关文章

  • 如何通过人工智能“避开”内容安全的“坑”?

    摘要:人工智能技术的初步应用随着网络强国战略思想加强网络内容建设等指导思想的推出和强化,内容安全已经成为互联网企业生存和发展的生命线。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 10月16日,2018年 AIIA人工智能开发者大会在苏州举办。会议邀请了国内外人工智能产业知名人物、国家政府主管部门、行业内顶尖企业、知名学者代表、开源社区优秀贡献团队及个人,共同交流了技术现状趋势、生态...

    _DangJin 评论0 收藏0
  • 深度学习在美团点评的应用

    摘要:基于深度学习的语义匹配语义匹配技术,在信息检索搜索引擎中有着重要的地位,在结果召回精准排序等环节发挥着重要作用。在美团点评业务中主要起着两方面作用。 写在前面美团点评这两年在深度学习方面进行了一些探索,其中在自然语言处理领域,我们将深度学习技术应用于文本分析、语义匹配、搜索引擎的排序模型等;在计算机视觉领域,我们将其应用于文字识别、目标检测、图像分类、图像质量排序等。下面我们就以语义匹配、图...

    DirtyMind 评论0 收藏0
  • Trie树 php 实现敏感过滤

    摘要:在树中,每个节点表示一个状态,每条边表示一个字符,从根节点到叶子节点经过的边即表示一个词条。查找一个词条最多耗费的时间只受词条长度影响,因此的查找性能是很高的,跟哈希算法的性能相当。 Last-Modified: 2019年5月10日15:25:35 参考文章 c++ 使用map实现Trie树 关键词过滤扩展,用于检查一段文本中是否出现敏感词,基于Double-Array Trie...

    王笑朝 评论0 收藏0
  • Spring Boot项目实践之问答社区

    摘要:异步事件处理本项目涉及到多种异步事件的处理。即是的粉丝,是的关注对象。模式定义优缺点推事件触发后广播给所有粉丝。具体来说,推模式就是事件触发后产生,触发事件的用户下所有粉丝的实现中都存入该的。 项目源代码已托管在 Github,欢迎 Star、Fork。 Q & A 问答社区 QA 是一个基于 B/S 架构而设计开发的社区网站。 showImg(https://segmentfault...

    binaryTree 评论0 收藏0

发表评论

0条评论

刘厚水

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<