Java敏感词检测——sensitive-word

Mr.Jia 2023-5-10 222 5/10
<!--敏感词依赖 内置敏感词库-->
<dependency>
   <groupId>com.github.houbb</groupId>
   <artifactId>sensitive-word</artifactId>
   <version>0.2.1</version>
</dependency>

敏感词配置

@Configuration
class SensitiveWordConfig {

    @Resource
    private CustomWordAllow customWordAllow;

    @Resource
    private CustomWordDeny customWordDeny;

    /**
     * 初始化引导类
     *
     * @return 初始化引导类
     * @since 1.0.0
     */
    @Bean
    public SensitiveWordBs sensitiveWordBs() {
        // 可根据数据库数据判断 动态增加配置
        return SensitiveWordBs.newInstance()
                // 设置黑名单
                .wordDeny(WordDenys.chains(WordDenys.system(),customWordDeny))
                // 设置白名单
                .wordAllow(WordAllows.chains(WordAllows.system(), customWordAllow))
                // 忽略大小写 默认值true
                .ignoreCase(true)
                // 忽略半角圆角 默认值true
                .ignoreWidth(true)
                // 忽略数字的写法 默认值true
                .ignoreNumStyle(true)
                // 忽略中文的书写格式 默认值true
                .ignoreChineseStyle(true)
                // 忽略英文的书写格式 默认值true
                .ignoreEnglishStyle(true)
                // 忽略重复词 默认值false
                .ignoreRepeat(true)
                // 是否启用数字检测 默认值true
                .enableNumCheck(true)
                // 是有启用邮箱检测 默认值true
                .enableEmailCheck(true)
                // 是否启用链接检测 默认值true
                .enableUrlCheck(true)
                // 数字检测,自定义指定长度。 默认值8
                .numCheckLen(8)
                // 忽略大小写 默认值true
                .init();
    }

}

自定义敏感词

@Component
public class CustomWordDeny implements IWordDeny {

    /**
     * 拒绝出现的数据-返回的内容被当做是敏感词
     *
     * @return
     */
    @Override
    public List<String> deny() {
        // 从数据库中查询自定义敏感词
        InputStream inputStream = null;
        try {
            //读出文件的信息
            inputStream = new ClassPathResource("static/sensitive_words.txt").getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Scanner scanner = new Scanner(inputStream);
        //将信息转换为字符串数组
        String[] sensitiveWord = scanner.nextLine().replace(",","、").split("、");
        //添加到敏感词库中
        return Arrays.asList(sensitiveWord);
    }
}

接口中使用

@ApiOperation("检测敏感词")
@PostMapping("/isSensitiveWord")
public String isSensitiveWord(@RequestBody Test test, HttpServletResponse response,HttpServletRequest request){
    boolean contains = SensitiveWordHelper.contains(test);
    if (contains){
        return "输入的是敏感词";
    }else {
        return "输入的不是敏感词";
    }
}

 

官方GitHub地址:https://github.com/houbb/sensitive-word

- THE END -

Mr.Jia

2月18日13:13

最后修改:2024年2月18日
1

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论