如何实现敏感词词库过滤?
目前有个需求是对文章内容进行敏感词标注并过滤,敏感词词库如果不多的话,可以用一个循环来处理,但是实际使用当中,词库的数据量可能有几万个词。
对于词库数量上完个,而且过滤结果需要标记的,有没有什么第三方库或者其他设计思路推荐?
最终效果就是输入待检测文本,输出命中的关键词词组,并对原文命中词语进行其他颜色的标注!
关于 LearnKu
坐等 高性能回答
可以了解下 AC 自动机的算法
github.com/FireLustre/php-dfa-sens...
可以使用HTMLPurifier来过滤
es 检索,高亮?
参考:github.com/eddy8/LightCMS/blob/9.x...
简单粗暴的设计思路。
是输入文本的预检测吗?这样的话不适合频繁用后端,可以放前端检测,有类似的js。服务端检测可以试试 scws 中文分词自定义词库。感觉几万条不很多,只要不是循环处理的应该效率问题不大。
来来来,刚好最近做了一个包 packagist.org/packages/mouyong/sen...
api 正在开发中。
github.com/larvatecn/laravel-censo... 拿去不谢,支持腾讯云,百度云,本地词库
阿里云敏感词
你也可以试试这个,能满足你需求。
github.com/Sy-Dante/laravel-sensit...
该包允许在任何地方使用,不依赖任何框架,如 Laravel 框架。
需要自己定义敏感词,也支持你从数据库等其他地方获取敏感词并 动态设置。
可以使用
filter方法直接过滤敏感词,替换成你指定的文本,如*。也可以使用search方法查出文本包含哪些敏感词后,也就是你说的 关键词词组,然后通过使用 php 函数str_replace批量替换,增加<b>之类标签自定义高亮。而且包还支持排除干扰因子,如:
你-是-s-a,如果你设置了-是干扰因子,sa是敏感词的话,就能找出s-a触发了敏感词。敏感词插眼
www.cimple.ink/2020/03/29/dfa-with... 看看我的这个