博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
发布一个敏感词过滤的小项目
阅读量:6341 次
发布时间:2019-06-22

本文共 1607 字,大约阅读时间需要 5 分钟。

hot3.png

项目背景

对于用户发表的内容,我们通常要做一些敏感词的检测,如果敏感词规模很小,逐个词进行 Search 也没啥大问题;但如果敏感词规模很大,并且会逐渐积累,那么就需要一种新的算法来提高检测效率。

实现原理

采用红黑树来存储敏感词汇列表,采用全分词算法来检测敏感词。

项目安装

>> wget "http://pysoft.googlecode.com/files/filter_keywords-0.1.tar.gz">> tar -zxf http://pysoft.googlecode.com/files/filter_keywords-0.1.tar.gz>> cd filter_keywords-0.1>> python setup.py install

使用样例

>> import filter_keywords>> dir(filter_keywords)['FkwDict', '__doc__', '__file__', '__name__', 'filter_keywords', 'fkw_full_seg']

创建字典

>> from filter_keywords import FkwDict>> fkw_dict = FkwDict(10)    # 参数为 Hash 的大小,可根据关键词规模自行调整>> dir(fkw_dict)['__class__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'add_word', 'load_dict', 'search_word']

添加一个关键词

>> fkw_dict.add_word(u"叮当猫".encode("utf-8"))  # 只接受 utf-8 编码,内部不做编码检测>> fkw_dict.search_word(u"叮当猫".encode("utf-8")) True>> fkw_dict.search_word(u"叮当猫2".encode("utf-8")) False

加载字典文件

fkw_dict.load_dict("src/word.txt") # 字典文件只接受 utf-8 编码,每行一个关键词print fkw_dict.search_word(u'世界'.encode("utf-8"))

注: 网上收集了一个字典文件,下载地址如下:

敏感词检测

text = u"工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作 "result = filter_keywords(fkw_dict, text.encode("utf-8"))print " ".join([unicode(item, "utf-8").encode("GBK") for item in result])

检测结果

工信 处女 干事 每月 月经 经过 下属 科室 都要 亲口 口交 交代 口交 交换 交换机 技术 技术性 性器 器件 安装 工作

其它信息

被你看出来了,其实,我是做分词的,全分词算法 函数 filter_keywords 只是 fkw_full_seg 的 alias。

使用 mem_collector 管理内存,红黑树存储字典条目,经 Valgrind 检测,无内存泄漏。 欢迎下载试用,有问题麻烦及时反馈,谢谢。

注:mem_collector 项目

C 语言接口,请参照 src/test.c 文件。

转载于:https://my.oschina.net/apoptosis/blog/148144

你可能感兴趣的文章
基于不同系统下的i++不同的运算结果分析——持续更新
查看>>
检查MYSQL数据中的表是否都正常
查看>>
does not currently know of SID given
查看>>
led驱动
查看>>
solrCloud安装步骤
查看>>
node学习——Promise的实例应用
查看>>
shell算术运算和文件测试及多分支if语句
查看>>
关于c语言学生宿舍管理系统
查看>>
linux 性能
查看>>
【安全牛学习笔记】中间人***、ARP MITM、中间人***、Pass the Hash
查看>>
深入浅出:软件研发或嵌入式开发源代码如何加密?
查看>>
shell 获取ip地址
查看>>
mongodb的安装
查看>>
Windows 10 设置登录时不用 Microsoft 账户
查看>>
Spring事务的传播行为
查看>>
打包rpm包
查看>>
一起读经典《C Primer Plus(第6版)中文版》
查看>>
ssm框架启动报错
查看>>
我的友情链接
查看>>
java流关闭改进
查看>>