From 368520fc90079650bbde482249366c2e276c6e41 Mon Sep 17 00:00:00 2001 From: houbb <1060732496@qq.com> Date: Sat, 15 Jan 2022 11:07:13 +0800 Subject: [PATCH] release branch 0.2.0 --- CHANGE_LOG.md | 7 ++ README.md | 77 ++++++++++++++++-- WECHAT.png | Bin 0 -> 109252 bytes pom.xml | 10 +-- release.bat | 4 +- .../word/api/ISensitiveWordReplace.java | 19 +++++ .../api/ISensitiveWordReplaceContext.java | 25 ++++++ .../houbb/sensitive/word/api/IWordMap.java | 5 +- .../sensitive/word/bs/SensitiveWordBs.java | 17 +++- .../word/core/SensitiveWordHelper.java | 13 +++ .../word/support/map/SensitiveWordMap.java | 20 +++-- .../replace/SensitiveWordReplaceChar.java | 29 +++++++ .../replace/SensitiveWordReplaceContext.java | 57 +++++++++++++ .../word/core/SensitiveWordHelperTest.java | 16 ++++ .../word/replace/MySensitiveWordReplace.java | 31 +++++++ 15 files changed, 306 insertions(+), 24 deletions(-) create mode 100644 WECHAT.png create mode 100644 src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWordReplace.java create mode 100644 src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWordReplaceContext.java create mode 100644 src/main/java/com/github/houbb/sensitive/word/support/replace/SensitiveWordReplaceChar.java create mode 100644 src/main/java/com/github/houbb/sensitive/word/support/replace/SensitiveWordReplaceContext.java create mode 100644 src/test/java/com/github/houbb/sensitive/word/replace/MySensitiveWordReplace.java diff --git a/CHANGE_LOG.md b/CHANGE_LOG.md index ba3fa56..f045cfc 100644 --- a/CHANGE_LOG.md +++ b/CHANGE_LOG.md @@ -126,3 +126,10 @@ | 序号 | 变更类型 | 说明 | 时间 | 备注 | |:---|:---|:---|:---|:--| | 1 | F | 自定义敏感词 allow/deny 进行格式化处理 | 2021-12-11 23:51:58 | | + +# release_0.2.0 + +| 序号 | 变更类型 | 说明 | 时间 | 备注 | +|:---|:---|:---|:---|:--| +| 1 | A | 允许用户自定义替换策略 | 2022-01-15 23:51:58 | | +| 2 | U | 升级二方数据库依赖 | 2022-01-15 23:51:58 | | diff --git a/README.md b/README.md index c792156..1d8746e 100644 --- a/README.md +++ b/README.md @@ -44,9 +44,9 @@ [CHANGE_LOG.md](https://github.com/houbb/sensitive-word/blob/master/doc/CHANGE_LOG.md) -v0.1.1 变更: +v0.2.0 变更: -- 敏感词自定义 Allow/Deny 进行格式化处理 +- 支持用户自定义替换策略 # 快速开始 @@ -62,7 +62,7 @@ v0.1.1 变更: com.github.houbb sensitive-word - 0.1.1 + 0.2.0 ``` @@ -73,6 +73,7 @@ v0.1.1 变更: | 方法 | 参数 | 返回值| 说明 | |:---|:---|:---|:---| | contains(String) | 待验证的字符串 | 布尔值 | 验证字符串是否包含敏感词 | +| replace(String, ISensitiveWordReplace) | 使用指定的替换策略替换敏感词 | 字符串 | 返回脱敏后的字符串 | | replace(String, char) | 使用指定的 char 替换敏感词 | 字符串 | 返回脱敏后的字符串 | | replace(String) | 使用 `*` 替换敏感词 | 字符串 | 返回脱敏后的字符串 | | findAll(String) | 待验证的字符串 | 字符串列表 | 返回字符串中所有敏感词 | @@ -170,6 +171,58 @@ String result = SensitiveWordHelper.replace(text, '0'); Assert.assertEquals("0000迎风飘扬,000的画像屹立在000前。", result); ``` +### 自定义替换策略 + +V0.2.0 支持该特性。 + +场景说明:有时候我们希望不同的敏感词有不同的替换结果。比如【游戏】替换为【电子竞技】,【失业】替换为【灵活就业】。 + +诚然,提前使用字符串的正则替换也可以,不过性能一般。 + +使用例子: + +```java +/** + * 自定替换策略 + * @since 0.2.0 + */ +@Test +public void defineReplaceTest() { + final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。"; + + ISensitiveWordReplace replace = new MySensitiveWordReplace(); + String result = SensitiveWordHelper.replace(text, replace); + + Assert.assertEquals("国家旗帜迎风飘扬,教员的画像屹立在***前。", result); +} +``` + +其中 `MySensitiveWordReplace` 是我们自定义的替换策略,实现如下: + +```java +public class MySensitiveWordReplace implements ISensitiveWordReplace { + + @Override + public String replace(ISensitiveWordReplaceContext context) { + String sensitiveWord = context.sensitiveWord(); + // 自定义不同的敏感词替换策略,可以从数据库等地方读取 + if("五星红旗".equals(sensitiveWord)) { + return "国家旗帜"; + } + if("毛主席".equals(sensitiveWord)) { + return "教员"; + } + + // 其他默认使用 * 代替 + int wordLength = context.wordLength(); + return CharUtil.repeat('*', wordLength); + } + +} +``` + +我们针对其中的部分词做固定映射处理,其他的默认转换为 `*`。 + # 更多特性 后续的诸多特性,主要是针对各种针对各种情况的处理,尽可能的提升敏感词命中率。 @@ -530,8 +583,6 @@ public class SensitiveWordService { # 后期 road-map -- 停顿词 - - 同音字处理 - 形近字处理 @@ -542,7 +593,7 @@ public class SensitiveWordService { - 敏感词标签支持 -- 邮箱后缀检测 +- [ ] DFA 数据结构的另一种实现 # 拓展阅读 @@ -552,4 +603,16 @@ public class SensitiveWordService { [敏感词库优化流程](https://houbb.github.io/2020/01/07/sensitive-word-slim) -[停止词的思考记录](https://houbb.github.io/2020/01/07/sensitive-word-stopword) +[java 如何实现开箱即用的敏感词控台服务?](https://mp.weixin.qq.com/s/rQo75cfMU_OEbTJa0JGMGg) + +![WECHAT](WECHAT.png) + +# 相关开源库 + +[heaven 基础工具包](https://github.com/houbb/heaven) + +[opencc4j 繁简体转换](https://github.com/houbb/opencc4j) + +[pinyin 拼音工具](https://github.com/houbb/pinyin) + +[nlp-hanzi-similar 汉字相似度工具](https://github.com/houbb/nlp-hanzi-similar) diff --git a/WECHAT.png b/WECHAT.png new file mode 100644 index 0000000000000000000000000000000000000000..ff0aedb4a3f9e34d4365cede9566c9c7c6591c6f GIT binary patch literal 109252 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%0Ab+5~Vi7AKUWwk(Duw>0teiU0QfTs!o0J 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 EA8n!5_y7O^ literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index 2faadb4..66eb642 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.houbb sensitive-word - 0.1.1 + 0.2.0 @@ -25,8 +25,8 @@ 1.7 - 0.1.148 - 1.7.1 + 0.1.154 + 1.7.2 4.13.1 @@ -104,7 +104,7 @@ ${project.compiler.level} ${project.compiler.level} ${project.build.sourceEncoding} - -proc:none + @@ -255,4 +255,4 @@ - \ No newline at end of file + diff --git a/release.bat b/release.bat index fb5391f..463f219 100644 --- a/release.bat +++ b/release.bat @@ -10,9 +10,9 @@ ECHO "============================= RELEASE START..." :: 版本号信息(需要手动指定) :::: 旧版本名称 -SET version=0.1.1 +SET version=0.2.0 :::: 新版本名称 -SET newVersion=0.1.2 +SET newVersion=0.2.1 :::: 组织名称 SET groupName=com.github.houbb :::: 项目名称 diff --git a/src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWordReplace.java b/src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWordReplace.java new file mode 100644 index 0000000..429e435 --- /dev/null +++ b/src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWordReplace.java @@ -0,0 +1,19 @@ +package com.github.houbb.sensitive.word.api; + +/** + * 敏感词替换策略 + * + * @author binbin.hou + * @since 0.2.0 + */ +public interface ISensitiveWordReplace { + + /** + * 替换 + * @param context 上下文 + * @return 结果 + * @since 0.2.0 + */ + String replace(ISensitiveWordReplaceContext context); + +} diff --git a/src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWordReplaceContext.java b/src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWordReplaceContext.java new file mode 100644 index 0000000..fce6da0 --- /dev/null +++ b/src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWordReplaceContext.java @@ -0,0 +1,25 @@ +package com.github.houbb.sensitive.word.api; + +/** + * 敏感词替换策略上下文 + * + * @author binbin.hou + * @since 0.2.0 + */ +public interface ISensitiveWordReplaceContext { + + /** + * 敏感词 + * @return 敏感词 + * @since 0.2.0 + */ + String sensitiveWord(); + + /** + * 单词长度 + * @return 单词长度 + * @since 0.2.0 + */ + int wordLength(); + +} diff --git a/src/main/java/com/github/houbb/sensitive/word/api/IWordMap.java b/src/main/java/com/github/houbb/sensitive/word/api/IWordMap.java index 9bf2140..238c15d 100644 --- a/src/main/java/com/github/houbb/sensitive/word/api/IWordMap.java +++ b/src/main/java/com/github/houbb/sensitive/word/api/IWordMap.java @@ -59,12 +59,13 @@ public interface IWordMap extends ISensitiveCheck { * ps: 这里可以添加优化。 * * @param target 目标字符串 - * @param replaceChar 替换为的 char + * @param replace 替换策略 * @param context 上下文 * @return 替换后结果 * @since 0.0.2 */ - String replace(final String target, final char replaceChar, + String replace(final String target, + final ISensitiveWordReplace replace, final IWordContext context); } diff --git a/src/main/java/com/github/houbb/sensitive/word/bs/SensitiveWordBs.java b/src/main/java/com/github/houbb/sensitive/word/bs/SensitiveWordBs.java index 4d7c627..33cb4be 100644 --- a/src/main/java/com/github/houbb/sensitive/word/bs/SensitiveWordBs.java +++ b/src/main/java/com/github/houbb/sensitive/word/bs/SensitiveWordBs.java @@ -8,6 +8,7 @@ import com.github.houbb.sensitive.word.api.*; import com.github.houbb.sensitive.word.support.allow.WordAllows; import com.github.houbb.sensitive.word.support.deny.WordDenys; import com.github.houbb.sensitive.word.support.map.SensitiveWordMap; +import com.github.houbb.sensitive.word.support.replace.SensitiveWordReplaceChar; import com.github.houbb.sensitive.word.support.result.WordResultHandlers; import com.github.houbb.sensitive.word.utils.InnerFormatUtils; @@ -393,9 +394,23 @@ public class SensitiveWordBs { * @since 0.0.2 */ public String replace(final String target, final char replaceChar) { + ISensitiveWordReplace replace = new SensitiveWordReplaceChar(replaceChar); + + return replace(target, replace); + } + + /** + * 替换所有内容 + * + * @param target 目标字符串 + * @param replace 替换策略 + * @return 替换后结果 + * @since 0.2.0 + */ + public String replace(final String target, final ISensitiveWordReplace replace) { statusCheck(); - return sensitiveWordMap.replace(target, replaceChar, context); + return sensitiveWordMap.replace(target, replace, context); } /** diff --git a/src/main/java/com/github/houbb/sensitive/word/core/SensitiveWordHelper.java b/src/main/java/com/github/houbb/sensitive/word/core/SensitiveWordHelper.java index c435efe..2fe076b 100644 --- a/src/main/java/com/github/houbb/sensitive/word/core/SensitiveWordHelper.java +++ b/src/main/java/com/github/houbb/sensitive/word/core/SensitiveWordHelper.java @@ -1,5 +1,6 @@ package com.github.houbb.sensitive.word.core; +import com.github.houbb.sensitive.word.api.ISensitiveWordReplace; import com.github.houbb.sensitive.word.api.IWordResultHandler; import com.github.houbb.sensitive.word.bs.SensitiveWordBs; @@ -59,6 +60,18 @@ public final class SensitiveWordHelper { return WORD_BS.findFirst(target); } + /** + * 替换所有内容 + * + * @param target 目标字符串 + * @param replace 替换策略 + * @return 替换后结果 + * @since 0.2.0 + */ + public static String replace(final String target, final ISensitiveWordReplace replace) { + return WORD_BS.replace(target, replace); + } + /** * 替换所有内容 * diff --git a/src/main/java/com/github/houbb/sensitive/word/support/map/SensitiveWordMap.java b/src/main/java/com/github/houbb/sensitive/word/support/map/SensitiveWordMap.java index 683ee10..18e34da 100644 --- a/src/main/java/com/github/houbb/sensitive/word/support/map/SensitiveWordMap.java +++ b/src/main/java/com/github/houbb/sensitive/word/support/map/SensitiveWordMap.java @@ -9,14 +9,13 @@ import com.github.houbb.heaven.util.lang.ObjectUtil; import com.github.houbb.heaven.util.lang.StringUtil; import com.github.houbb.heaven.util.util.CollectionUtil; import com.github.houbb.heaven.util.util.MapUtil; -import com.github.houbb.sensitive.word.api.IWordContext; -import com.github.houbb.sensitive.word.api.IWordMap; -import com.github.houbb.sensitive.word.api.IWordResult; +import com.github.houbb.sensitive.word.api.*; import com.github.houbb.sensitive.word.constant.AppConst; import com.github.houbb.sensitive.word.constant.enums.ValidModeEnum; import com.github.houbb.sensitive.word.support.check.SensitiveCheckResult; import com.github.houbb.sensitive.word.support.check.impl.SensitiveCheckChain; import com.github.houbb.sensitive.word.support.check.impl.SensitiveCheckUrl; +import com.github.houbb.sensitive.word.support.replace.SensitiveWordReplaceContext; import com.github.houbb.sensitive.word.support.result.WordResult; import java.util.Collection; @@ -156,12 +155,12 @@ public class SensitiveWordMap implements IWordMap { } @Override - public String replace(String target, char replaceChar, final IWordContext context) { + public String replace(String target, final ISensitiveWordReplace replace, final IWordContext context) { if(StringUtil.isEmpty(target)) { return target; } - return this.replaceSensitiveWord(target, replaceChar, context); + return this.replaceSensitiveWord(target, replace, context); } /** @@ -213,11 +212,13 @@ public class SensitiveWordMap implements IWordMap { /** * 直接替换敏感词,返回替换后的结果 * @param target 文本信息 + * @param replace 替换策略 + * @param context 上下文 * @return 脱敏后的字符串 * @since 0.0.2 */ private String replaceSensitiveWord(final String target, - final char replaceChar, + final ISensitiveWordReplace replace, final IWordContext context) { if(StringUtil.isEmpty(target)) { return target; @@ -241,7 +242,12 @@ public class SensitiveWordMap implements IWordMap { // 直接使用原始内容,避免 markdown 图片转换失败 resultBuilder.append(string); } else { - String replaceStr = CharUtil.repeat(replaceChar, wordLength); + // 创建上下文 + ISensitiveWordReplaceContext replaceContext = SensitiveWordReplaceContext.newInstance() + .sensitiveWord(string) + .wordLength(wordLength); + String replaceStr = replace.replace(replaceContext); + resultBuilder.append(replaceStr); } diff --git a/src/main/java/com/github/houbb/sensitive/word/support/replace/SensitiveWordReplaceChar.java b/src/main/java/com/github/houbb/sensitive/word/support/replace/SensitiveWordReplaceChar.java new file mode 100644 index 0000000..4893eee --- /dev/null +++ b/src/main/java/com/github/houbb/sensitive/word/support/replace/SensitiveWordReplaceChar.java @@ -0,0 +1,29 @@ +package com.github.houbb.sensitive.word.support.replace; + +import com.github.houbb.heaven.annotation.ThreadSafe; +import com.github.houbb.heaven.util.lang.CharUtil; +import com.github.houbb.sensitive.word.api.ISensitiveWordReplace; +import com.github.houbb.sensitive.word.api.ISensitiveWordReplaceContext; + +/** + * 指定字符的替换策略 + * @author binbin.hou + * @since 0.2.0 + */ +@ThreadSafe +public class SensitiveWordReplaceChar implements ISensitiveWordReplace { + + private final char replaceChar; + + public SensitiveWordReplaceChar(char replaceChar) { + this.replaceChar = replaceChar; + } + + @Override + public String replace(ISensitiveWordReplaceContext context) { + int wordLength = context.wordLength(); + + return CharUtil.repeat(replaceChar, wordLength); + } + +} diff --git a/src/main/java/com/github/houbb/sensitive/word/support/replace/SensitiveWordReplaceContext.java b/src/main/java/com/github/houbb/sensitive/word/support/replace/SensitiveWordReplaceContext.java new file mode 100644 index 0000000..31c67b1 --- /dev/null +++ b/src/main/java/com/github/houbb/sensitive/word/support/replace/SensitiveWordReplaceContext.java @@ -0,0 +1,57 @@ +package com.github.houbb.sensitive.word.support.replace; + +import com.github.houbb.sensitive.word.api.ISensitiveWordReplaceContext; + +/** + * 敏感词替换上下文 + * + * @author binbin.hou + * @since 0.2.0 + */ +public class SensitiveWordReplaceContext implements ISensitiveWordReplaceContext { + + public static SensitiveWordReplaceContext newInstance() { + return new SensitiveWordReplaceContext(); + } + + /** + * 敏感词 + * @since 0.2.0 + */ + private String sensitiveWord; + + /** + * 单词长度 + * @since 0.2.0 + */ + private int wordLength; + + @Override + public String sensitiveWord() { + return sensitiveWord; + } + + public SensitiveWordReplaceContext sensitiveWord(String sensitiveWord) { + this.sensitiveWord = sensitiveWord; + return this; + } + + @Override + public int wordLength() { + return wordLength; + } + + public SensitiveWordReplaceContext wordLength(int wordLength) { + this.wordLength = wordLength; + return this; + } + + @Override + public String toString() { + return "SensitiveWordReplaceContext{" + + "sensitiveWord='" + sensitiveWord + '\'' + + ", wordLength=" + wordLength + + '}'; + } + +} diff --git a/src/test/java/com/github/houbb/sensitive/word/core/SensitiveWordHelperTest.java b/src/test/java/com/github/houbb/sensitive/word/core/SensitiveWordHelperTest.java index 978b009..9d82823 100644 --- a/src/test/java/com/github/houbb/sensitive/word/core/SensitiveWordHelperTest.java +++ b/src/test/java/com/github/houbb/sensitive/word/core/SensitiveWordHelperTest.java @@ -1,6 +1,8 @@ package com.github.houbb.sensitive.word.core; +import com.github.houbb.sensitive.word.api.ISensitiveWordReplace; import com.github.houbb.sensitive.word.api.IWordResult; +import com.github.houbb.sensitive.word.replace.MySensitiveWordReplace; import com.github.houbb.sensitive.word.support.result.WordResultHandlers; import org.junit.Assert; import org.junit.Test; @@ -148,4 +150,18 @@ public class SensitiveWordHelperTest { Assert.assertEquals("fuck", word); } + /** + * 自定替换策略 + * @since 0.2.0 + */ + @Test + public void defineReplaceTest() { + final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。"; + + ISensitiveWordReplace replace = new MySensitiveWordReplace(); + String result = SensitiveWordHelper.replace(text, replace); + + Assert.assertEquals("国家旗帜迎风飘扬,教员的画像屹立在***前。", result); + } + } diff --git a/src/test/java/com/github/houbb/sensitive/word/replace/MySensitiveWordReplace.java b/src/test/java/com/github/houbb/sensitive/word/replace/MySensitiveWordReplace.java new file mode 100644 index 0000000..32d6a8e --- /dev/null +++ b/src/test/java/com/github/houbb/sensitive/word/replace/MySensitiveWordReplace.java @@ -0,0 +1,31 @@ +package com.github.houbb.sensitive.word.replace; + +import com.github.houbb.heaven.util.lang.CharUtil; +import com.github.houbb.sensitive.word.api.ISensitiveWordReplace; +import com.github.houbb.sensitive.word.api.ISensitiveWordReplaceContext; + +/** + * 自定义敏感词替换策略 + * + * @author binbin.hou + * @since 0.2.0 + */ +public class MySensitiveWordReplace implements ISensitiveWordReplace { + + @Override + public String replace(ISensitiveWordReplaceContext context) { + String sensitiveWord = context.sensitiveWord(); + // 自定义不同的敏感词替换策略,可以从数据库等地方读取 + if("五星红旗".equals(sensitiveWord)) { + return "国家旗帜"; + } + if("毛主席".equals(sensitiveWord)) { + return "教员"; + } + + // 其他默认使用 * 代替 + int wordLength = context.wordLength(); + return CharUtil.repeat('*', wordLength); + } + +}