python实现dfa过滤算法_Python实现DFA算法,完成实体词匹配和敏感词过滤等功能

本文介绍了Python实现确定有穷自动机(DFA)算法,用于敏感词过滤和实体匹配。通过构建词库和二叉树结构,展示了如何使用DFA进行文本检测,并提供了具体的Python代码实现,包括词库初始化、添加词库、检查匹配词等关键功能。文章还提及了无意义字符的处理策略,强调在实际应用中要考虑这些干扰因素。
摘要由CSDN通过智能技术生成

一、什么是DFA算法

DFA 全称为:Deterministic Finite Automaton,即确定有穷自动机。其特征为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态,某些状态是终态。但不同于不确定的有限自动机,DFA 中不会有从同一状态出发的两条边标志有相同的符号。

其实对于DFA算法的定义还是有点抽象,下面的图文并茂或许会对你有帮助!

词库的构造

以王八蛋和王八羔子两个敏感词来进行描述,首先构建敏感词库,该词库名称为SensitiveMap,这两个词的二叉树构造为:

用 hash 表构造为:

1 {2 "王": {3 "is_end": false,4 "八": {5 "is_end": false,6 "蛋": {7 "is_end": true8 },9 "羔": {10 "is_end": false,11 "子": {12 "is_end": true13 }14 }15 }16 }17 }

虽然这篇博客的实现方式是Java,但是对于DFA算法的理解,我觉得是非常透彻的。

二、Python代码实现

1 #!/usr/bin/env python

2 #-*- coding:utf-8 -*-

3 #@Time:2020/4/15 11:40

4 #@Software:PyCharm

5 __author__ = "JentZhang"

6 importjson7

8 MinMatchType = 1 #最小匹配规则,如:敏感词库["中国", "中国人"],语句:"我是中国人",匹配结果:我是[中国]人

9 MaxMatchType = 2 #最大匹配规则,如:敏感词库["中国", "中国人"],语句:"我是中国人",匹配结果:我是[中国人]

10

11

12 classDFAUtils(object):13 """

14 DFA算法15 ""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值