sensitivewords

package module
v0.0.0-...-58bbe2f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 15, 2023 License: MIT Imports: 3 Imported by: 1

README

SensitiveWords

golang实现DFA算法的敏感词查找、过滤替换、敏感词匹配检测

用法


package main

import (
	"fmt"

	"github.com/feiin/sensitivewords"
)

func main() {
    sensitive := sensitivewords.New()
    /*
     * keywords.txt:
     * 尼玛
     * 哈哈
     */
    sensitive.LoadFromFile("./keywords.txt") 
    
	sensitive.AddWord("测试")
	sensitive.AddWords("+q", "+v")

	s, keyword := sensitive.Find("测试啊+q/+v,尼玛,哈哈")
	fmt.Printf("Find:%v, %v\n", s, keyword) //true,测试
	s, results := sensitive.FindAll("测试啊+q/+v,尼玛,哈哈")
	fmt.Printf("FindAll:%v, %v\n", s, results) //true, [测试 +q +v 尼玛 哈哈哈]
	s, results = sensitive.FindAny("测试啊+q/+v,尼玛,哈哈", 3)
	fmt.Printf("FindAny:%v, %v\n", s, results) //true, [测试 +q +v]

	s = sensitive.Check("测试啊+q/+v,尼玛,哈哈")
	fmt.Printf("Check: %v\n", s) //true

	str := sensitive.Filter("测试啊+q/+v,尼玛,哈哈")
	fmt.Printf("Filter:%v\n", str) //**啊**/**,**,**
}


Documentation

Overview

Package sensitivewords golang实现DFA算法的敏感词查找、过滤替换、敏感词匹配检测

Example
package main

import (
	"fmt"

	"github.com/feiin/sensitivewords"
)

func main() {
	sensitive := sensitivewords.New()
	sensitive.LoadFromFile("./keywords.txt")
	sensitive.AddWord("测试")
	sensitive.AddWords("+q", "+v")

	s, keyword := sensitive.Find("测试啊+q/+v,尼玛,哈哈")
	fmt.Printf("%v,%v\n", s, keyword)
}
Output:

true,测试

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type SensitiveWords

type SensitiveWords struct {
	// contains filtered or unexported fields
}

func New

func New() *SensitiveWords

New 返回敏感词库实例

Example
package main

import (
	"fmt"

	"github.com/feiin/sensitivewords"
)

func main() {
	sensitive := sensitivewords.New()
	sensitive.AddWord("test")
	fmt.Printf("ok")
}
Output:

ok

func (*SensitiveWords) AddWord

func (sensitiveWords *SensitiveWords) AddWord(word string)

AddWord 添加敏感词

Example
package main

import (
	"github.com/feiin/sensitivewords"
)

var sensitive *sensitivewords.SensitiveWords = sensitivewords.New()

func main() {

	sensitive.AddWord("测试")
}
Output:

func (*SensitiveWords) AddWords

func (sensitiveWords *SensitiveWords) AddWords(words ...string)

AddWords 添加敏感词数组

Example
package main

import (
	"github.com/feiin/sensitivewords"
)

var sensitive *sensitivewords.SensitiveWords = sensitivewords.New()

func main() {

	sensitive.AddWords("测试", "fuc")
}
Output:

func (*SensitiveWords) Check

func (sensitiveWords *SensitiveWords) Check(input string) (sensitive bool)

Check 是否包含敏感词

Example
package main

import (
	"fmt"

	"github.com/feiin/sensitivewords"
)

var sensitive *sensitivewords.SensitiveWords = sensitivewords.New()

func main() {

	find := sensitive.Check("测试")
	fmt.Printf("%v", find)
}
Output:

true

func (*SensitiveWords) Filter

func (sensitiveWords *SensitiveWords) Filter(input string) string

Filter 过滤敏感词为*

func (*SensitiveWords) Find

func (sensitiveWords *SensitiveWords) Find(input string) (sensitive bool, keyword string)

Find 查找敏感词,找到第一个就退出

Example
package main

import (
	"fmt"

	"github.com/feiin/sensitivewords"
)

var sensitive *sensitivewords.SensitiveWords = sensitivewords.New()

func main() {

	sensitive.AddWord("测试")
	s, keyword := sensitive.Find("测试啊+q/+v,尼玛,哈哈")
	fmt.Printf("%v,%v\n", s, keyword) //true, 测试
}
Output:

true,测试

func (*SensitiveWords) FindAll

func (sensitiveWords *SensitiveWords) FindAll(input string) (sensitive bool, results []string)

FindAll 查找ALL敏感词

Example
package main

import (
	"fmt"

	"github.com/feiin/sensitivewords"
)

var sensitive *sensitivewords.SensitiveWords = sensitivewords.New()

func main() {

	sensitive.AddWords("测试", "尼玛")
	s, results := sensitive.FindAll("测试啊+q/+v,尼玛,哈哈")
	fmt.Printf("%v,%v\n", s, results)
}
Output:

true,[测试 尼玛]

func (*SensitiveWords) FindAny

func (sensitiveWords *SensitiveWords) FindAny(input string, count int) (sensitive bool, results []string)

FindAny 找到N个敏感词才退出

Example
package main

import (
	"fmt"

	"github.com/feiin/sensitivewords"
)

var sensitive *sensitivewords.SensitiveWords = sensitivewords.New()

func main() {

	sensitive.AddWords("测试", "尼玛", "哈哈", "+q", "+v")
	s, results := sensitive.FindAny("测试啊+q/+v,尼玛,哈哈", 4)
	fmt.Printf("%v,%v\n", s, results)
}
Output:

true,[测试 +q +v 尼玛]

func (*SensitiveWords) Load

func (sensitiveWords *SensitiveWords) Load(rd io.Reader) error

Load 加载敏感词

Example
package main

import (
	"os"

	"github.com/feiin/sensitivewords"
)

var sensitive *sensitivewords.SensitiveWords = sensitivewords.New()

func main() {

	// 读取文件、网络请求等等
	fs, _ := os.Open("path")
	defer fs.Close()
	sensitive.Load(fs)
}
Output:

func (*SensitiveWords) LoadFromFile

func (sensitiveWords *SensitiveWords) LoadFromFile(path string) error

LoadFromFile 加载敏感词库文件

Example
package main

import (
	"github.com/feiin/sensitivewords"
)

var sensitive *sensitivewords.SensitiveWords = sensitivewords.New()

func main() {

	sensitive.LoadFromFile("./keywords.txt")
}
Output:

type TrieNode

type TrieNode struct {
	IsEnd    bool
	Children map[rune]*TrieNode
}

TrieNode 树节点

type TrieTree

type TrieTree struct {
	Root *TrieNode
}

TrieTree Trie树

func NewTrieTree

func NewTrieTree() *TrieTree

NewTrieTree

func (*TrieTree) Add

func (tree *TrieTree) Add(word string)

Add 添加敏感词

func (*TrieTree) AddWords

func (tree *TrieTree) AddWords(words ...string)

AddWords 添加敏感词数组

func (*TrieTree) Filter

func (tree *TrieTree) Filter(input string) string

Filter 过滤敏感词为*

func (*TrieTree) Find

func (tree *TrieTree) Find(input string) (sensitive bool, keyword string)

Find 查找敏感词,找到第一个就退出

func (*TrieTree) FindAll

func (tree *TrieTree) FindAll(input string) (sensitive bool, results []string)

FindAll 查找ALL敏感词

func (*TrieTree) FindAny

func (tree *TrieTree) FindAny(input string, count int) (sensitive bool, results []string)

FindAny 找到N个敏感词才退出

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL