Documentation ¶
Index ¶
- Variables
- func Censor(s string) string
- func ExtractProfanity(s string) string
- func IsProfane(s string) bool
- type ProfanityDetector
- func (g *ProfanityDetector) Censor(s string) string
- func (g *ProfanityDetector) ExtractProfanities(s string) ([]string, []int)
- func (g *ProfanityDetector) ExtractProfanity(s string) string
- func (g *ProfanityDetector) IsProfane(s string) bool
- func (g *ProfanityDetector) WithCustomCharacterReplacements(characterReplacements map[rune]rune) *ProfanityDetector
- func (g *ProfanityDetector) WithCustomDictionary(profanities, falsePositives, falseNegatives []string) *ProfanityDetector
- func (g *ProfanityDetector) WithSanitizeAccents(sanitize bool) *ProfanityDetector
- func (g *ProfanityDetector) WithSanitizeLeetSpeak(sanitize bool) *ProfanityDetector
- func (g *ProfanityDetector) WithSanitizeSpaces(sanitize bool) *ProfanityDetector
- func (g *ProfanityDetector) WithSanitizeSpecialCharacters(sanitize bool) *ProfanityDetector
Constants ¶
This section is empty.
Variables ¶
var DefaultCharacterReplacements = map[rune]rune{
'0': 'o',
'1': 'i',
'3': 'e',
'4': 'a',
'5': 's',
'7': 'l',
'$': 's',
'!': 'i',
'+': 't',
'#': 'h',
'@': 'a',
'<': 'c',
'-': ' ',
'_': ' ',
'|': ' ',
'.': ' ',
',': ' ',
'(': ' ',
')': ' ',
'>': ' ',
'"': ' ',
'`': ' ',
'~': ' ',
'*': ' ',
'&': ' ',
'%': ' ',
'?': ' ',
}
DefaultCharacterReplacements is the mapping of all characters that are replaced by other characters before attempting to find a profanity.
var DefaultFalseNegatives = []string{
"asshole",
"dumbass",
"nigger",
}
DefaultFalseNegatives is a list of profanities that are checked for before the DefaultFalsePositives are removed
This is reserved for words that may be incorrectly filtered as false positives.
Alternatively, words that are long, or that should mark a string as profane no what the context is or whether the word is part of another word can also be included.
Note that there is a test that prevents words from being in both DefaultProfanities and DefaultFalseNegatives,
var DefaultFalsePositives = []string{
"analy",
"arsenal",
"assassin",
"assaying",
"assert",
"assign",
"assimil",
"assist",
"associat",
"assum",
"assur",
"banal",
"basement",
"bass",
"butth",
"butto",
"butter",
"cass",
"canvass",
"circum",
"clitheroe",
"cockburn",
"cocktail",
"cumber",
"cumbing",
"cumulat",
"dickvandyke",
"document",
"evaluate",
"exclusive",
"expensive",
"explain",
"expression",
"grape",
"grass",
"harass",
"hass",
"horniman",
"hotwater",
"identit",
"kassa",
"kassi",
"lass",
"leafage",
"libshitz",
"magnacumlaude",
"mass",
"mocha",
"pass",
"penistone",
"phoebe",
"phoenix",
"pushit",
"sassy",
"saturday",
"scrap",
"serfage",
"sexist",
"shoe",
"scunthorpe",
"shitake",
"stitch",
"sussex",
"therapist",
"tysongay",
"wass",
"wharfage",
}
DefaultFalsePositives is a list of words that may wrongly trigger the DefaultProfanities
var DefaultProfanities = []string{
"anal",
"anus",
"arse",
"ass",
"ballsack",
"balls",
"bastard",
"bitch",
"btch",
"biatch",
"blowjob",
"bollock",
"bollok",
"boner",
"boob",
"bugger",
"butt",
"choad",
"clitoris",
"cock",
"coon",
"crap",
"cum",
"cunt",
"dick",
"dildo",
"douchebag",
"dyke",
"fag",
"feck",
"fellate",
"fellatio",
"felching",
"fuck",
"fudgepacker",
"flange",
"gtfo",
"hoe",
"horny",
"incest",
"jerk",
"jizz",
"labia",
"masturbat",
"muff",
"naked",
"nazi",
"nigga",
"niggu",
"nipple",
"nips",
"nude",
"pedophile",
"penis",
"piss",
"poop",
"porn",
"prick",
"prostitut",
"pube",
"pussie",
"pussy",
"queer",
"rape",
"rapist",
"retard",
"rimjob",
"scrotum",
"sex",
"shit",
"slut",
"spunk",
"stfu",
"suckmy",
"tits",
"tittie",
"titty",
"turd",
"twat",
"vagina",
"wank",
"whore",
}
DefaultProfanities is a list of profanities that are checked after the DefaultFalsePositives are removed
Note that some words that would normally be in this list may be in DefaultFalseNegatives
var ItalianProfanities = []string{
"bastardo",
"bastardi",
"bastarda",
"bastarde",
"bernarda",
"bischero",
"bischera",
"bocchino",
"bordello",
"cacare",
"cagare",
"cagata",
"cagate",
"caghetta",
"cagone",
"cazzata",
"cazzone",
"cazzo",
"cesso",
"ciucciata",
"cogliona",
"coglione",
"cornuto",
"cristo",
"cretina",
"cretino",
"culattone",
"culattona",
"culo",
"deficiente",
"figa",
"fottuta",
"fottuto",
"frocio",
"frocetto",
"gesu",
"imbecil",
"incazzare",
"incazzato",
"incazzati",
"maronna",
"merda",
"merdina",
"merdona",
"merdaccia",
"mignotta",
"mignottona",
"mignottone",
"mortacci",
"negro",
"negra",
"pippa",
"pippona",
"pippone",
"pippaccia",
"pirla",
"pompino",
"porco",
"puttana",
"puttanon",
"puttaniere",
"puttanate",
"rompiballe",
"rompipalle",
"rompicoglioni",
"scazzi",
"scemo",
"scopare",
"scopata",
"stronzata",
"stronzo",
"troia",
"troione",
"trombata",
"vaffanculo",
"zoccola",
}
Functions ¶
func Censor ¶
Censor takes in a string (word or sentence) and tries to censor all profanities found.
Uses the default ProfanityDetector
func ExtractProfanity ¶
ExtractProfanity takes in a string (word or sentence) and look for profanities. Returns the first profanity found, or an empty string if none are found
Uses the default ProfanityDetector
Types ¶
type ProfanityDetector ¶
type ProfanityDetector struct {
// contains filtered or unexported fields
}
ProfanityDetector contains the dictionaries as well as the configuration for determining how profanity detection is handled
func NewProfanityDetector ¶
func NewProfanityDetector() *ProfanityDetector
NewProfanityDetector creates a new ProfanityDetector
func (*ProfanityDetector) Censor ¶
func (g *ProfanityDetector) Censor(s string) string
Censor takes in a string (word or sentence) and tries to censor all profanities found.
func (*ProfanityDetector) ExtractProfanities ¶
func (g *ProfanityDetector) ExtractProfanities(s string) ([]string, []int)
func (*ProfanityDetector) ExtractProfanity ¶
func (g *ProfanityDetector) ExtractProfanity(s string) string
ExtractProfanity takes in a string (word or sentence) and look for profanities. Returns the first profanity found, or an empty string if none are found
func (*ProfanityDetector) IsProfane ¶
func (g *ProfanityDetector) IsProfane(s string) bool
IsProfane takes in a string (word or sentence) and look for profanities. Returns a boolean
func (*ProfanityDetector) WithCustomCharacterReplacements ¶
func (g *ProfanityDetector) WithCustomCharacterReplacements(characterReplacements map[rune]rune) *ProfanityDetector
WithCustomCharacterReplacements allows configuring characters that to be replaced by other characters.
Note that all entries that have the value ' ' are considered as special characters while all entries with a value that is not ' ' are considered as leet speak.
Defaults to DefaultCharacterReplacements
func (*ProfanityDetector) WithCustomDictionary ¶
func (g *ProfanityDetector) WithCustomDictionary(profanities, falsePositives, falseNegatives []string) *ProfanityDetector
WithCustomDictionary allows configuring whether the sanitization process should also take into account custom profanities, false positives and false negatives dictionaries.
func (*ProfanityDetector) WithSanitizeAccents ¶
func (g *ProfanityDetector) WithSanitizeAccents(sanitize bool) *ProfanityDetector
WithSanitizeAccents allows configuring of whether the sanitization process should also take into account accents. By default, this is set to true, but since this adds a bit of overhead, you may disable it if your use case is time-sensitive or if the input doesn't involve accents (i.e. if the input can never contain special characters)
func (*ProfanityDetector) WithSanitizeLeetSpeak ¶
func (g *ProfanityDetector) WithSanitizeLeetSpeak(sanitize bool) *ProfanityDetector
WithSanitizeLeetSpeak allows configuring whether the sanitization process should also take into account leetspeak
Leetspeak characters are characters to be replaced by non-' ' values in the characterReplacements map. For instance, '4' is replaced by 'a' and '3' is replaced by 'e', which means that "4sshol3" would be sanitized to "asshole", which would be detected as a profanity.
By default, this is set to true.
func (*ProfanityDetector) WithSanitizeSpaces ¶
func (g *ProfanityDetector) WithSanitizeSpaces(sanitize bool) *ProfanityDetector
WithSanitizeSpaces allows configuring whether the sanitization process should also take into account spaces
func (*ProfanityDetector) WithSanitizeSpecialCharacters ¶
func (g *ProfanityDetector) WithSanitizeSpecialCharacters(sanitize bool) *ProfanityDetector
WithSanitizeSpecialCharacters allows configuring whether the sanitization process should also take into account special characters.
Special characters are characters that are part of the characterReplacements map (DefaultCharacterReplacements by default) and are to be removed during the sanitization step.
For instance, "fu_ck" would be sanitized to "fuck", which would be detected as a profanity.
By default, this is set to true.