• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

wordfilter: DFA算法实现的敏感词过滤工具,支持Skip参数控制敏感词干扰噪音,支持白 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

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口交换机的问题

拆分为白名单和黑名单

如下所示:

  • 黑名单(紧急)

  • 白名单(紧急事件)

  • 我们决定紧急征调5000人前往宅区帮助灾民 / 紧急被检测

  • 并且决定为紧急事件打开绿灯 / 紧急事件不被检测

五、测试预览

  • 测试替换敏感词
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));   //[游行]    }}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap