美文网首页
v0.12.0-敏感词/脏词词标签能力进一步增强

v0.12.0-敏感词/脏词词标签能力进一步增强

作者: 老马啸西风2020 | 来源:发表于2023-12-17 15:50 被阅读0次

拓展阅读

敏感词工具实现思路

DFA 算法讲解

敏感词库优化流程

java 如何实现开箱即用的敏感词控台服务?

各大平台连敏感词库都没有的吗?

v0.10.0-脏词分类标签初步支持

v0.11.0-敏感词新特性:忽略无意义的字符,词标签字典

v0.12.0-敏感词/脏词词标签能力进一步增强

无标题.png

敏感词标签

说明

有时候我们希望对敏感词加一个分类标签:比如社情、暴/力等等。

这样后续可以按照标签等进行更多特性操作,比如只处理某一类的标签。

我们在 v0.10.0 版本,开始初步支持敏感词的标签分类,不过这个方法没有和以前的方法进行整合。

让我们先做一下回顾:

入门例子

接口

这里只是一个抽象的接口,用户可以自行定义实现。比如从数据库查询等。

public interface IWordTag {

    /**
     * 查询标签列表
     * @param word 脏词
     * @return 结果
     */
    Set<String> getTag(String word);

}

配置文件

我们可以自定义 dict 标签文件,通过 WordTags.file() 创建一个 WordTag 实现。

  • dict_tag_test.txt
五星红旗 政-治,国家

格式如下:

敏感词 tag1,tag2

实现

具体的效果如下,在引导类设置一下即可。

默认的 wordTag 是空的。

String filePath = "dict_tag_test.txt";
IWordTag wordTag = WordTags.file(filePath);

SensitiveWordBs sensitiveWordBs = SensitiveWordBs.newInstance()
        .wordTag(wordTag)
        .init();

Assert.assertEquals("[政-治, 国家]", sensitiveWordBs.tags("五星红旗").toString());;

后续会考虑引入一个内置的标签文件策略。

IWordResultHandler 结果处理类

功能说明

IWordResultHandler 可以对敏感词的结果进行处理,允许用户自定义。

内置实现目前有如下几种:

  • WordResultHandlers.word()

只保留敏感词单词本身。

  • WordResultHandlers.raw()

保留敏感词相关信息,包含敏感词的开始和结束下标。

  • WordResultHandlers.wordTags()

同时保留单词,和对应的词标签信息。

使用实例

1)基本例子

final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";

List<String> wordList = SensitiveWordHelper.findAll(text);
Assert.assertEquals("[五星红旗, 毛主席, 天安门]", wordList.toString());
List<String> wordList2 = SensitiveWordHelper.findAll(text, WordResultHandlers.word());
Assert.assertEquals("[五星红旗, 毛主席, 天安门]", wordList2.toString());

List<IWordResult> wordList3 = SensitiveWordHelper.findAll(text, WordResultHandlers.raw());
Assert.assertEquals("[WordResult{startIndex=0, endIndex=4}, WordResult{startIndex=9, endIndex=12}, WordResult{startIndex=18, endIndex=21}]", wordList3.toString());
  1. wordTags 例子

我们在 dict_tag_test.txt 文件中指定对应词的标签信息。

比如:

五星红旗 政治,国家
毛主席 政治,国家,伟人
天安门 政治,国家,地址

使用方法如下:

final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";

// 默认敏感词标签为空
List<WordTagsDto> wordList1 = SensitiveWordHelper.findAll(text, WordResultHandlers.wordTags());
Assert.assertEquals("[WordTagsDto{word='五星红旗', tags=[]}, WordTagsDto{word='毛主席', tags=[]}, WordTagsDto{word='天安门', tags=[]}]", wordList1.toString());

List<WordTagsDto> wordList2 = SensitiveWordBs.newInstance()
        .wordTag(WordTags.file("dict_tag_test.txt"))
        .init()
        .findAll(text, WordResultHandlers.wordTags());
Assert.assertEquals("[WordTagsDto{word='五星红旗', tags=[政治, 国家]}, WordTagsDto{word='毛主席', tags=[政治, 伟人, 国家]}, WordTagsDto{word='天安门', tags=[政治, 国家, 地址]}]", wordList2.toString());

这样就可以把此标签和我们以前的能力进行整合。

小结

敏感词标签的功能作用还是很大的,可以让我们根据不同的类别,进行不同的后续处理操作。

当然,最核心的还是对于标签数据的处理工作,具体可以参考:

v0.11.0-敏感词新特性:忽略无意义的字符,词标签

开源地址

为了便于大家学习,项目开源地址如下,欢迎 fork+star 鼓励一下老马~

sensitive-word

相关文章

  • 啥是敏感词?

    敏感词 敏感词 敏感词 敏感词 敏感词 敏感词 敏感词 敏感词 ** **对不起,您搜索的内容已被屏蔽…… 大部分...

  • 敏感词

    在QQ兴趣部落里点评时写了“小事应让步,对父母、子女的态度要讲原则”,居然出现系统的提示:内容中有敏感词,不允许发...

  • 敏感词

    现在的网络特别发达,言论自由也大了,但是网络关键词有时也让人无可奈何。 上次我在空间里发了个关键词“吹箫”。结果被...

  • 敏感词

    假作真时真亦假, 真为假处假成真。 皆言生变归"计划", 又叹妖顽是"元根"。 "才厚"数典轻法义, "俊山"为利...

  • 敏感词

    一个时代有一个时代的语言特色,一个地方有一个地方的敏感词。网络上既有大众追捧的热词,也有小众的忌讳。婚丧嫁娶不...

  • 敏感词

    一个词,是一个娃 本无高低贵贱 有些娃 被穿上“敏感”的外衣 推下深渊 求救声在山谷里回荡 2019.4.19.

  • 敏感词

    好几次遇到敏感词的问题,不知道哪些是敏感词呢?瑜伽老师说某炎,卖东西说某宝,课件中文章中出现什么词是敏感词呢?

  • 信息过滤与反垃圾

    手段: 1.文本匹配 进行敏感词过滤,维护一个敏感词列表,用户发表的信息中含有敏感词,则进行消毒处理(将敏感词转换...

  • iOS 敏感词过滤 (OC与Swift版本都有)

    iOS 敏感词过滤:用*代替敏感词 实现效果举例: 敏感词为 : 123 “哈哈123456哈哈123呵呵” 被转...

  • 关于评论功能的总结

    作为前端,相对敏感词,我更应该注意对发布内容过滤,js脚本和html标签如何过滤 敏感词的过滤应当是过滤服务器➕人...

网友评论

      本文标题:v0.12.0-敏感词/脏词词标签能力进一步增强

      本文链接:https://www.haomeiwen.com/subject/mcsogdtx.html