Configuration Basics
Essential configuration options to customize Glin-Profanity behavior
Glin-Profanity offers 16+ configuration options to customize filtering behavior. This guide covers the essential settings to get started, with links to comprehensive configuration documentation.
Basic Configuration
Default Settings
import { checkProfanity } from 'glin-profanity';
// Default configuration (implicit)
const result = checkProfanity('Some text to check');
// Equivalent explicit configuration
const config = {
languages: ['english'], // Single language
allLanguages: false, // Don't check all languages
caseSensitive: false, // Case insensitive
enableContextAware: false, // Basic word matching
fuzzyMatching: true, // Enable fuzzy matching
fuzzyTolerance: 0.8, // 80% similarity threshold
autoReplace: false, // Don't auto-replace
replacementChar: '*' // Replacement character
};
const result2 = checkProfanity('Some text to check', config);from glin_profanity import Filter
# Default configuration
filter_instance = Filter()
result = filter_instance.check_profanity("Some text to check")
# Equivalent explicit configuration
explicit_filter = Filter({
"languages": ["english"], # Single language
"all_languages": False, # Don't check all languages
"case_sensitive": False, # Case insensitive
"enable_context_aware": False, # Basic word matching
"fuzzy_matching": True, # Enable fuzzy matching
"fuzzy_tolerance": 0.8, # 80% similarity threshold
"auto_replace": False, # Don't auto-replace
"replacement_char": "*" # Replacement character
})
result2 = explicit_filter.check_profanity("Some text to check")Essential Configuration Options
1. Language Selection
Choose which languages to check for profanity:
// Single language
const englishOnly = checkProfanity('text', {
languages: ['english']
});
// Multiple languages
const multiLang = checkProfanity('text', {
languages: ['english', 'spanish', 'french']
});
// All 23 supported languages
const allLanguages = checkProfanity('text', {
allLanguages: true
});# Single language
english_filter = Filter({"languages": ["english"]})
# Multiple languages
multi_filter = Filter({"languages": ["english", "spanish", "french"]})
# All 23 supported languages
all_filter = Filter({"all_languages": True})Supported Languages:
english, spanish, french, german, italian, portuguese, russian,
japanese, korean, chinese, arabic, hindi, turkish, polish,
dutch, swedish, norwegian, danish, finnish, czech, hungarian,
romanian, bulgarian2. Context-Aware Filtering
Enable intelligent sentiment analysis:
const contextAware = checkProfanity('This is fucking awesome!', {
enableContextAware: true,
languages: ['english']
});
console.log(contextAware.containsProfanity); // false (positive context)
console.log(contextAware.contextAnalysis);
// {
// sentiment: 'positive',
// confidence: 0.85,
// domain: 'general',
// reasonNotFlagged: 'positive_context'
// }context_filter = Filter({
"enable_context_aware": True,
"languages": ["english"]
})
result = context_filter.check_profanity("This is fucking awesome!")
print(result["contains_profanity"]) # False (positive context)
print(result["context_analysis"])
# {
# 'sentiment': 'positive',
# 'confidence': 0.85,
# 'domain': 'general',
# 'reason_not_flagged': 'positive_context'
# }Context-Aware Benefits: Reduces false positives by 60-80% in gaming, entertainment, and casual conversation contexts.
3. Fuzzy Matching
Handle character substitution and typos:
// Enable fuzzy matching for obfuscated words
const fuzzyConfig = {
fuzzyMatching: true,
fuzzyTolerance: 0.8, // 80% similarity required
enableObfuscationDetection: true
};
// Catches: sh1t, s**t, sh!t, etc.
const obfuscated = checkProfanity('What a sh1t day', fuzzyConfig);
console.log(obfuscated.containsProfanity); // true
console.log(obfuscated.detectedWords); // ['sh1t']# Enable fuzzy matching for obfuscated words
fuzzy_filter = Filter({
"fuzzy_matching": True,
"fuzzy_tolerance": 0.8, # 80% similarity required
"enable_obfuscation_detection": True
})
# Catches: sh1t, s**t, sh!t, etc.
result = fuzzy_filter.check_profanity("What a sh1t day")
print(result["contains_profanity"]) # True
print(result["detected_words"]) # ['sh1t']4. Auto-Replace Profanity
Automatically clean text:
const autoReplace = checkProfanity('This is damn good!', {
autoReplace: true,
replacementChar: '●',
preserveLength: true
});
console.log(autoReplace.cleanText); // "This is ●●●● good!"
console.log(autoReplace.originalWords); // ['damn']auto_filter = Filter({
"auto_replace": True,
"replacement_char": "●",
"preserve_length": True
})
result = auto_filter.check_profanity("This is damn good!")
print(result["clean_text"]) # "This is ●●●● good!"
print(result["original_words"]) # ['damn']5. Severity Filtering
Filter by profanity severity levels:
// Only flag moderate and severe profanity
const severityFilter = checkProfanity('What the hell is this damn thing?', {
severityFilter: 'MODERATE', // MILD | MODERATE | SEVERE
returnSeverity: true
});
console.log(severityFilter.detectedWords);
// [{ word: 'hell', severity: 'MILD' }, { word: 'damn', severity: 'MILD' }]
console.log(severityFilter.containsProfanity); // false (only MILD found)severity_filter = Filter({
"severity_filter": "MODERATE", # MILD | MODERATE | SEVERE
"return_severity": True
})
result = severity_filter.check_profanity("What the hell is this damn thing?")
print(result["detected_words"])
# [{'word': 'hell', 'severity': 'MILD'}, {'word': 'damn', 'severity': 'MILD'}]
print(result["contains_profanity"]) # False (only MILD found)Configuration Profiles
Strict Filtering (Social Media)
const strictConfig = {
languages: ['english'],
enableContextAware: false, // No context analysis
fuzzyMatching: true,
severityFilter: 'MILD', // Flag everything
autoReplace: true,
caseSensitive: false
};strict_config = {
"languages": ["english"],
"enable_context_aware": False, # No context analysis
"fuzzy_matching": True,
"severity_filter": "MILD", # Flag everything
"auto_replace": True,
"case_sensitive": False
}Lenient Filtering (Gaming/Entertainment)
const lenientConfig = {
languages: ['english'],
enableContextAware: true, // Context analysis enabled
enableWhitelisting: true,
customWhitelist: ['gaming', 'movie'],
severityFilter: 'SEVERE', // Only severe profanity
fuzzyTolerance: 0.9 // Higher tolerance
};lenient_config = {
"languages": ["english"],
"enable_context_aware": True, # Context analysis enabled
"enable_whitelisting": True,
"custom_whitelist": ["gaming", "movie"],
"severity_filter": "SEVERE", # Only severe profanity
"fuzzy_tolerance": 0.9 # Higher tolerance
}Balanced Filtering (General Use)
const balancedConfig = {
languages: ['english', 'spanish'],
enableContextAware: true,
severityFilter: 'MODERATE',
fuzzyMatching: true,
autoReplace: false, // Manual handling
returnConfidence: true
};balanced_config = {
"languages": ["english", "spanish"],
"enable_context_aware": True,
"severity_filter": "MODERATE",
"fuzzy_matching": True,
"auto_replace": False, # Manual handling
"return_confidence": True
}Environment-Based Configuration
Set different configs for different environments:
const getConfig = () => {
const isDev = process.env.NODE_ENV === 'development';
const isProduction = process.env.NODE_ENV === 'production';
if (isDev) {
return {
languages: ['english'],
enableContextAware: true,
logLevel: 'DEBUG' // Extra logging in dev
};
}
if (isProduction) {
return {
languages: ['english', 'spanish', 'french'],
enableContextAware: true,
enableCaching: true, // Performance optimization
severityFilter: 'MODERATE'
};
}
return {}; // Default config
};
const result = checkProfanity('text', getConfig());import os
def get_config():
env = os.getenv('ENVIRONMENT', 'development')
if env == 'development':
return {
"languages": ["english"],
"enable_context_aware": True,
"log_level": "DEBUG" # Extra logging in dev
}
if env == 'production':
return {
"languages": ["english", "spanish", "french"],
"enable_context_aware": True,
"enable_caching": True, # Performance optimization
"severity_filter": "MODERATE"
}
return {} # Default config
filter_instance = Filter(get_config())Validation and Testing
Validate your configuration:
import { validateConfig, checkProfanity } from 'glin-profanity';
const config = {
languages: ['english', 'invalid-lang'], // Invalid language
fuzzyTolerance: 1.5, // Invalid range (0-1)
enableContextAware: 'true' // Wrong type (should be boolean)
};
// Validate configuration
const validation = validateConfig(config);
console.log(validation);
// {
// valid: false,
// errors: [
// 'Invalid language: invalid-lang',
// 'fuzzyTolerance must be between 0 and 1',
// 'enableContextAware must be boolean'
// ],
// correctedConfig: { /* auto-corrected version */ }
// }from glin_profanity import Filter, validate_config
config = {
"languages": ["english", "invalid-lang"], # Invalid language
"fuzzy_tolerance": 1.5, # Invalid range (0-1)
"enable_context_aware": "true" # Wrong type (should be bool)
}
# Validate configuration
validation = validate_config(config)
print(validation)
# {
# 'valid': False,
# 'errors': [
# 'Invalid language: invalid-lang',
# 'fuzzy_tolerance must be between 0 and 1',
# 'enable_context_aware must be boolean'
# ],
# 'corrected_config': { /* auto-corrected version */ }
# }Configuration Validation: Always validate configurations in development to catch issues early. Invalid configs will fall back to defaults but may not behave as expected.
What's Next?
📖 Complete Configuration Reference
All 16+ configuration options with examples
🧠 Context-Aware Configuration
Advanced sentiment and domain settings
🌍 Multi-Language Setup
Language-specific configuration options
⚡ Performance Optimization
Caching and performance configuration
Pro Tip: Start with context-aware filtering enabled and adjust severity levels based on your specific use case. Most applications benefit from MODERATE severity filtering with context awareness.