敏感词过滤golang
生活随笔
收集整理的這篇文章主要介紹了
敏感词过滤golang
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?用golang寫了敏感詞過濾的工具,主要用來檢測用戶昵稱中是否存在敏感詞,同時提供剔除轉移字符的功能。
可以先將敏感詞庫存放在一個map中,敏感詞可以參考這里:https://github.com/fwwdn/sensitive-stop-words
將map和昵稱傳入,程序會檢查昵稱的每一個子串,判斷是否在map敏感詞庫中。復雜度O(len(name)^2)
package utilimport ("github.com/pkg/errors""strings")type filter struct {data stringmaxLimitLen 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 }?
總結
以上是生活随笔為你收集整理的敏感词过滤golang的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NO.2_python_scrapy_反
- 下一篇: plsql 记录型变量