开源软件名称:wordfilter
开源软件地址:https://gitee.com/humingzhang/wordfilter
开源软件介绍:
一、API预览1.1. 敏感词替换 String text = "利于上游行业发展的政策逐渐发布";System.out.println(filter.replace(text)); //利于上游行业发展的政策逐渐发布context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);System.out.println(filter.replace(text)); //利于上**业发展的政策逐渐发布 1.2. 是否包含敏感词 String text = "利于上游行业发展的政策逐渐发布";System.out.println(filter.include(text)); //falsecontext.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);System.out.println(filter.include(text)); //true 1.3. 获取敏感词数 String text = "利于上游行业发展的政策逐渐发布";System.out.println(filter.wordCount(text)); //0context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);System.out.println(filter.wordCount(text)); //1 1.4. 获取敏感词列表 String text = "利于上游1行业发展的政策逐渐发布";System.out.println(filter.wordList(text)); //[]]context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);System.out.println(filter.wordList(text)); //[游行] 1.5. 增加白名单功能 - blacklist.txt- whitelist.txt 1.6. 增加方法重载 - replace(final String text) // distance=0&symbol=*- replace(final String text, final char symbol) // distance=0- include(final String text) // distance=0- wordCount(final String text) // distance=0- wordList(final String text) // distance=0 1.7. 增加在线添加敏感词方法 //此处将5000加入黑名单context.addWord(Collections.singletonList("5000"), WordType.BLACK); 1.8、增加在线删除敏感词方法 //此处将5000移出黑名单(若黑名单没有该词组将忽略)context.removeWord(Collections.singletonList("5000"), WordType.BLACK);//此处将紧急事件移出白名单(若白名单没有该词组将忽略)context.removeWord(Collections.singletonList("紧急事件"), WordType.WHITE); 二、基本用法2.1、创建WordContext对象WordContext context = new WordContext(); 该对象主要用来初始化和管理词库,默认读取类路径下 名为:blacklist.txt 和 whitelist.txt 的文件,也可以传入文件名,如下所示: WordContext context = new WordContext("/blacklist.txt","/whitelist.txt"); 2.2、创建过滤器对象WordFilter filter = new WordFilter(context); 传入上一步创建的词库上下文,获得过滤器对象之后即可使用filter调用相关方法,若需要添加或删除词库的词汇,可以使用WordContext的API实现,如下所示: //此处将紧急加入黑名单context.addWord(Collections.singletonList("紧急"), WordType.BLACK);//此处将紧急移出黑名单(若黑名单没有该词组将忽略)context.removeWord(Collections.singletonList("紧急"), WordType.BLACK);//此处将紧急事件移出白名单(若白名单没有该词组将忽略)context.removeWord(Collections.singletonList("紧急事件"), WordType.WHITE); 三、Skip距离程序会跳过不同的距离,查找敏感词,距离越长,过滤越严格,效率越低,开发者可以根据具体需求设置,这里以“紧急”为敏感词举例,以此类推 0 匹配紧急 1 匹配不紧不急,紧x急 2 匹配紧急,紧x急,紧xx急
四、重大更新解决类似24口交换机的问题 拆分为白名单和黑名单 如下所示: 五、测试预览package com.startx.http.wordfilter;import org.junit.Test;import java.util.Collections;import java.util.List;/** * 单元测试用例 * * @author minghu.zhang */public class AppTest { /** * 词库上下文环境 */ private final WordContext context = new WordContext(); private final WordFilter filter = new WordFilter(context); /** * 测试替换敏感词 */ @Test public void replace() { String text = "利于上游行业发展的政策逐渐发布"; System.out.println(filter.replace(text)); //利于上游行业发展的政策逐渐发布 context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE); System.out.println(filter.replace(text)); //利于上**业发展的政策逐渐发布 } /** * 测试是否包含敏感词 */ @Test public void include() { String text = "利于上游行业发展的政策逐渐发布"; System.out.println(filter.include(text)); //false context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE); System.out.println(filter.include(text)); //true } /** * 获取敏感词数 */ @Test public void wordCount() { String text = "利于上游行业发展的政策逐渐发布"; System.out.println(filter.wordCount(text)); //0 context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE); System.out.println(filter.wordCount(text)); //1 } /** * 获取敏感词列表 */ @Test public void wordList() { String text = "利于上游1行业发展的政策逐渐发布"; System.out.println(filter.wordList(text)); //[]] context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE); System.out.println(filter.wordList(text)); //[游行] }} |
请发表评论