求推荐中小型项目敏感词检测 Python 案例
目前使用 re 去做,样本越来越大,效率逐渐降低很多
一般用字典树
如果是你负责,建议用 bat 的 API 。
Trie Tree
re + trie tree 因为要记录命中的敏感词,需要分组捕获。目前一个场景 build 出来的 pattern 大概有 300w 长,匹配一次感觉快要 1s ,用 bat 的 api 加上请求时间都比本地快好几倍。。。
是的,我是正则字典树去搞的,但是词库太大,有点担忧
也有在用,本地做第一层拦截
hyperscan
1.目前主流的做法是,先分词,然后再去匹配敏感词列表。优点是性能高,速度快。缺点是匹配覆盖率低。
2.但如果要保证匹配覆盖率,运算量必然超大,因为不能分词后再去匹配,而是反过来要用词库来匹配现有内容。可优化的就只有在匹配过程中对字典树进行剪枝了。
zhuanlan.zhihu.com/p/146369212
AC 自动机?
我之前写了个 AC 自动机用来匹配和过滤关键词,现在生产环境大概有 1 亿个关键词,性能非常好。
不过只有 Go 和 Java 版本,看看能不能帮到你,代码实现很简单,照着直接“翻译”成 Python 应该没啥问题。
Go: github.com/yihleego/trie
Java: github.com/yihleego/trie4j
感谢感谢,我去看看
在意性能可以用布隆过滤器
这个感觉有点子臃肿,好多依赖🤣
分词这个方向目前还没考虑到,居家办公比较闲,研究研究
测试过 ahocorasick 这个库,感觉差不是太多
不用研究,Python 有现成的,叫 结巴分词。
这应该就是 AC 状态自动机干的事吧
楼主可以看看这个 github.com/G-Research/ahocorasick_rs
flashtext
github.com/intel/hyperscan
www.colm.net/open-source/ragel/
好像是 v2 以前有个帖子,当时特别震撼
这个帖子 www.hesudu.com/t/828016
这个就是性能最好的,比什么 AC 字典树都快,安全防火墙都用这个代替以前 AC 了
🙏我去研究下这个
o..o
都推 hyperscan ,我去测试下😂
哎, 作孽啊
最近有位站长在用我们WebIM客户端的时候,无法登录我们的WebIM服务器,十分惊讶。 在我们的用户里尚属首例,其实更惊讶的是我的CentOS也遇到了同样的问题。然后分析了这位…
好几年之前 看到别人弄中文域名,也注册了一个,买了十年同时也备案了,想解析到自己的阿里云/腾讯云上 。 然后写了一单网页 html 给同事炫耀,单汉字.top ,结果前两天社…
昨天的 /t/1133223 吸引了大家不少的讨论,今天我来说一个工作上遇到的问题。 准确地说,这个问题是 MySQL 字符集中的校对规则出了 BUG ,字符集本身是无辜的。 …
合速度