问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

敏感词处理工具优化:白名单支持单词增删

创作时间:
2025-01-21 18:53:26
作者:
@小白创作中心

敏感词处理工具优化:白名单支持单词增删

敏感词处理是内容安全领域的重要技术之一,广泛应用于社交媒体、论坛等平台的文本过滤。本文介绍了一个开源敏感词处理工具的最新版本更新,重点介绍了白名单支持单个编辑的新特性。

敏感词系列工具简介

  • sensitive-word-admin 敏感词控制台 v1.2.0 版本开源
  • sensitive-word-admin v1.3.0 发布,支持分布式部署
  • 开源敏感词工具入门使用
  • 如何实现一个敏感词工具?违禁词实现思路梳理
  • 敏感词之 StopWord 停止词优化与特殊符号
  • 敏感词之字典瘦身
  • 敏感词之 DFA 算法(Trie Tree 算法)详解
  • 敏感词过滤如何忽略无意义的字符以达到更好的过滤效果
  • v0.10.0-脏词分类标签初步支持
  • v0.11.0-敏感词新特性:忽略无意义的字符,词标签字典
  • v0.12.0-敏感词/脏词词标签能力进一步增强
  • v0.13.0-敏感词特性版本发布 支持英文单词全词匹配
  • v0.16.1-敏感词新特性之字典内存资源释放
  • v0.19.0-敏感词新特性之敏感词单个编辑,不必重复初始化
  • v0.20.0 敏感词新特性之数字全部匹配,而不是部分匹配
  • v0.21.0 敏感词新特性之白名单支持单个编辑,修正白名单包含黑名单时的问题

版本特性

  • 优化白名单的匹配策略,避免长白名单时匹配到短的黑名单,不符合预期
  • 白名单支持单个编辑

针对单个白名单词的新增/删除,无需全量初始化。这个特性在初始化之后,允许针对单个词的新增/删除,而不是完全重新初始化。支持版本为v0.21.0。

方法说明

  • addWordAllow(word):新增白名单,支持单个词/集合
  • removeWordAllow(word):删除白名单,支持单个词/集合

使用例子

final String text = "测试一下新增敏感词白名单,验证一下删除和新增对不对";
SensitiveWordBs sensitiveWordBs =
        SensitiveWordBs.newInstance()
                .wordAllow(WordAllows.empty())
                .wordDeny(new IWordDeny() {
                    @Override
                    public List<String> deny() {
                        return Arrays.asList("测试", "新增");
                    }
                })
                .init();
// 当前
Assert.assertEquals("[测试, 新增, 新增]", sensitiveWordBs.findAll(text).toString());
// 新增单个
sensitiveWordBs.addWordAllow("测试");
sensitiveWordBs.addWordAllow("新增");
Assert.assertEquals("[]", sensitiveWordBs.findAll(text).toString());
// 删除单个
sensitiveWordBs.removeWordAllow("测试");
Assert.assertEquals("[测试]", sensitiveWordBs.findAll(text).toString());
sensitiveWordBs.removeWordAllow("新增");
Assert.assertEquals("[测试, 新增, 新增]", sensitiveWordBs.findAll(text).toString());
// 新增集合
sensitiveWordBs.addWordAllow(Arrays.asList("新增", "测试"));
Assert.assertEquals("[]", sensitiveWordBs.findAll(text).toString());
// 删除集合
sensitiveWordBs.removeWordAllow(Arrays.asList("新增", "测试"));
Assert.assertEquals("[测试, 新增, 新增]", sensitiveWordBs.findAll(text).toString());
// 新增数组
sensitiveWordBs.addWordAllow("新增", "测试");
Assert.assertEquals("[]", sensitiveWordBs.findAll(text).toString());
// 删除集合
sensitiveWordBs.removeWordAllow("新增", "测试");
Assert.assertEquals("[测试, 新增, 新增]", sensitiveWordBs.findAll(text).toString());

小结

和黑名单的单个编辑类似,白名单的单个编辑功能可以避免重复初始化的问题,提升用户使用体验。

开源代码

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号