基于DFA的敏感词扫描模块

摘要

DFA是一种通过字典树来存储敏感词的数据结构,通过扫描内容判断依次判断单个字是否内在字典中匹配,进而判断改词是否为敏感词。显而易见的,该算法的时间复杂度是线性的,不会随着敏感词的个数增加,耗时增加。反而当敏感词个数较大(不超过内存),算法的优越性能表现出来。
本文基于DFA的敏感词扫描模块,只支持python3.5及以上。

基本功能

  1. 支持自定义敏感词文件
    dfa = DFA(filename)
    
  2. 支持动态添加单个敏感词
    dfa.add_word(sensitive_word)
    
  3. 支持动态添加多个敏感词
    dfa.add_words(sensitive_words)
    

测试代码

# test.py
from app.dfa import DFA

def main():
    """
    主函数入口
    """
    content = """
    毒品包括海洛因,冰毒,大麻等,我国禁止AV,三级片,禁止未成年人吸食毒品,涉黄等行为
    """
    filename = "SensitiveWords.txt"
    dfa = DFA(filename)
    dfa.add_word("毒品")
    print(dfa.dfa(content))


if __name__ == '__main__':
    main()
>>> (True, {'三级片', '毒品', '海洛因', '冰毒', '大麻'})

github地址

github地址

发表评论

邮箱地址不会被公开。