敏感词过滤golang

敏感词过滤golangnbsp 用 golang 写了敏感词过滤的工具 主要用来检测用户昵称中是否存在敏感词 同时提供剔除转移字符的功能 可以先将敏感词库存放在一个 map 中 敏感词可以参考这里 https github com fwwdn sensitive stop words 将 map 和昵称传入 程序会检查昵称的每一个子串 判断是否在 map 敏感词库中 复杂度 O len name 2 packageutil

 用golang写了敏感词过滤的工具,主要用来检测用户昵称中是否存在敏感词,同时提供剔除转移字符的功能。

可以先将敏感词库存放在一个map中,敏感词可以参考这里:https://github.com/fwwdn/sensitive-stop-words

将map和昵称传入,程序会检查昵称的每一个子串,判断是否在map敏感词库中。复杂度O(len(name)^2)

package util import ( "github.com/pkg/errors" "strings" ) type filter struct { data string maxLimitLen int } func NewKeywordFilter(str string, maxLimitLen int) (*filter, error) { if len(str) > maxLimitLen { return nil, errors.Errorf("长度:%d,不能超过:%d", len(str), maxLimitLen) } return &filter{ data: str, maxLimitLen: maxLimitLen, }, nil } func (f *filter) GetData() string { return f.data } func (f *filter) FilterKeywords(keywords map[string]bool) (err error) { if keywords == nil { return } for i := 0; i < len(f.data); i++ { for j := i + 1; j <= len(f.data); j++ { subStr := f.data[i:j] if _, found := keywords[subStr]; found { err = errors.Errorf("昵称违规,建议修改") } } } return } func (f *filter) TrimAllCharset(ch []string) (err error) { if ch == nil { return } for _, c := range ch { f.data = strings.Replace(f.data, c, "", -1) } if len(f.data) == 0 { err = errors.New("剔除相关转移字符后,数据长度为0.") return } return } 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219513.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:23
下一篇 2026年3月17日 下午10:23


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号