Skip to content

忽略重复词的开关开启后,如果要过滤的敏感词中包含重复词时,会检测不出来 #136

@z-yuxie

Description

@z-yuxie

使用的版本:0.29.3

Image Image

以下是几个case:

  1. 开启忽略重复词,且敏感词典包含重复词

示例代码:
public static void main(String[] args) {
SensitiveWordBs sensitiveWordBsTest = SensitiveWordBs.newInstance()
//设置敏感词词典
.wordDeny(() -> Arrays.asList("fuck1", "@@@@", "f°a°c°e°b°o°o°k", "嘻嘻哈哈")) // 嘻嘻哈哈 与 嘻嘻哈或 嘻哈哈 的输出效果相同,任何一个字符重叠都不行
// 忽略大小写
.ignoreCase(true)
// 忽略半角圆角
.ignoreWidth(true)
// 忽略重复词
.ignoreRepeat(true)
// 忽略数字的写法
.ignoreNumStyle(true)
// 忽略中文的书写格式
.ignoreChineseStyle(true)
// 忽略英文的书写格式
.ignoreEnglishStyle(true)
.init();
String data = "fuck1@@@@f°a°c°e°b°o°o°k";
System.out.println("----------" + sensitiveWordBsTest.findAll(data));
data = "fuck1";
System.out.println("----------" + sensitiveWordBsTest.findAll(data));
data = "@@@@ 123456";
System.out.println("----------" + sensitiveWordBsTest.findAll(data));
data = "ʜᴇʟʟᴏ ᴡᴏʀʟᴅ嘻嘻哈哈哈或或或哈";
System.out.println("----------" + sensitiveWordBsTest.findAll(data));
data = "卡其色下经典鸡尾酒嘻嘻哈哈好多好多快递就睡觉";
System.out.println("----------" + sensitiveWordBsTest.findAll(data));

data = "ⒻⒻⒻfⓤuⓤ⒰cⓒ⒦1 the bad words";
System.out.println("----------" + sensitiveWordBsTest.findAll(data));
}
输出:
----------[fuck1, F°a°c°e°b°o°o°k]
----------[fuck1]
----------[]
----------[]
----------[]

----------[ⒻⒻⒻfⓤuⓤ⒰cⓒ⒦1]

  1. 开启忽略重复词,敏感词典不包含重复词
    代码示例:
    public static void main(String[] args) {
    SensitiveWordBs sensitiveWordBsTest = SensitiveWordBs.newInstance()
    //设置敏感词词典
    .wordDeny(() -> Arrays.asList("fuck1", "@", "f°a°c°e°b°o°o°k", "嘻哈"))
    // 忽略大小写
    .ignoreCase(true)
    // 忽略半角圆角
    .ignoreWidth(true)
    // 忽略重复词
    .ignoreRepeat(true)
    // 忽略数字的写法
    .ignoreNumStyle(true)
    // 忽略中文的书写格式
    .ignoreChineseStyle(true)
    // 忽略英文的书写格式
    .ignoreEnglishStyle(true)
    .init();
    String data = "fuck1@@@@f°a°c°e°b°o°o°k";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    data = "fuck1";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    data = "@@@@ 123456";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    data = "ʜᴇʟʟᴏ ᴡᴏʀʟᴅ嘻嘻哈哈哈或或或哈";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    data = "卡其色下经典鸡尾酒嘻嘻哈哈好多好多快递就睡觉";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    data = "ⒻⒻⒻfⓤuⓤ⒰cⓒ⒦1 the bad words";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    }
    输出:
    ----------[fuck1, @, @, @, @, F°a°c°e°b°o°o°k]
    ----------[fuck1]
    ----------[@, @, @, @]
    ----------[嘻嘻哈]
    ----------[嘻嘻哈]
    ----------[ⒻⒻⒻfⓤuⓤ⒰cⓒ⒦1]

  2. 关闭忽略重复词,敏感词包含重复词
    代码示例:
    public static void main(String[] args) {
    SensitiveWordBs sensitiveWordBsTest = SensitiveWordBs.newInstance()
    //设置敏感词词典
    .wordDeny(() -> Arrays.asList("fuck1", "@@@@", "f°a°c°e°b°o°o°k", "嘻嘻哈哈"))
    // 忽略大小写
    .ignoreCase(true)
    // 忽略半角圆角
    .ignoreWidth(true)
    // 忽略重复词
    // .ignoreRepeat(true)
    // 忽略数字的写法
    .ignoreNumStyle(true)
    // 忽略中文的书写格式
    .ignoreChineseStyle(true)
    // 忽略英文的书写格式
    .ignoreEnglishStyle(true)
    .init();
    String data = "fuck1@@@@f°a°c°e°b°o°o°k";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    data = "fuck1";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    data = "@@@@ 123456";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    data = "ʜᴇʟʟᴏ ᴡᴏʀʟᴅ嘻嘻哈哈哈或或或哈";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    data = "卡其色下经典鸡尾酒嘻嘻哈哈好多好多快递就睡觉";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    data = "ⒻⒻⒻfⓤuⓤ⒰cⓒ⒦1 the bad words";
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    data = "Ⓕf⒰ⓒ⒦1 the bad words"; // 这是比前面示例多出来的一个样本,用来检查忽略书写格式功能是否正常,用以与重复词版本对照
    System.out.println("----------" + sensitiveWordBsTest.findAll(data));
    }
    输出:
    ----------[fuck1, @@@@, F°a°c°e°b°o°o°k]
    ----------[fuck1]
    ----------[@@@@]
    ----------[嘻嘻哈哈]
    ----------[嘻嘻哈哈]
    ----------[]
    ----------[f⒰ⓒ⒦1] // 这是比前面示例多出来的一个样本,用来检查忽略书写格式功能是否正常,用以与重复词版本对照

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions