代码拉取完成,页面将自动刷新
使用60MB大小的小说测试,单核性能超过50M字符每秒(i7 2.3GHz)。
敏感词 14553 条
待过滤文本共 599254 行,30613005 字符。
过滤耗时 0.535 秒, 速度为 57220.6字符/毫秒
其中 39691 行有替换
主要的优化目标是速度,从以下方面优化:
默认敏感词库拷贝自 https://github.com/observerss/textfilter ,并删除如女人
、然后
这样的几个常用词。
使用默认敏感词库的示例如下
// 使用默认单例(加载默认词典)
SensitiveFilter filter = SensitiveFilter.DEFAULT;
// 向过滤器增加一个词
filter.put("婚礼上唱春天在哪里");
// 待过滤的句子
String sentence = "中国,然后,市长在婚礼上唱春天在哪里。";
// String sentence = "爱你";
/** 注释原先源码使用方法
// 进行过滤
String filted = filter.filter(sentence, '*');
// 如果未过滤,则返回输入的String引用
if(sentence != filted){
// 句子中有敏感词
System.out.println(filted);
}*/
/**
* Junior 修改源码添加新的使用方式,支持敏感信息汇总
*/
Map<String, Object> retMap = filter.filter(sentence, '*');
Boolean isReplaced = (Boolean)retMap.get(RetEnum.IS_REPLACED.getKey());
String replacedWords = (String)retMap.get(RetEnum.REPLACED_WORDS.getKey());
Set sensitiveWordSet = (Set)retMap.get(RetEnum.SENSITIVE_WORD_SET.getKey());
System.out.println("替换前的句子为:"+sentence);
// 如果未过滤,则返回输入的String引用
if(isReplaced){
// 句子中有敏感词
System.out.println("句子中有敏感词:"+sensitiveWordSet);
}
System.out.println("替换后的句子为:"+replacedWords);
打印结果
替换前的句子为:中国,然后,市长在婚礼上唱春天在哪里。
句子中有敏感词:[[中国], [市长], [婚礼上唱春天在哪里]]
替换后的句子为:**,然后,**在*********。
JDK 1.7版本及以上
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。