ValX Package Documentation
Package documentation for ValX, a Python package for handling text-cleaning tasks, including profanity and PII. Now includes hate speech detection and offensive language detection using AI.
Changelog
0.2.5 (Latest): Introduced enhanced flexibility for profanity filtering:
Added
custom_words_list
parameter todetect_profanity
andremove_profanity
for user-defined profanity lists.Support for standalone custom lists by setting
language=None
.Support for combined lists (built-in language + custom list).
New helper function
load_custom_profanity_from_file(filepath)
to load custom words from a file.detect_profanity
output now specifies profanity source (e.g., "Custom", "Custom + English").
0.2.4: Fixed compatibility issues with
scikit-learn
versions1.3.0
and up. Also removed dependency forscikit-learn 1.2.2
as it is no longer needed, older versions and newer versions are now compatible. Please read this issue for more information: https://github.com/Infinitode/ValX/issues/10.2.3: Created new detection patterns for sensitive information, and created a new optional
info_type
parameter to control sensitive information detection and removal.0.2.2: Refactored
detect_profanity
function to return more information about the found profanities. Also removed unnecessary printing in functions.0.2.1: Updated project PYPI description.
0.2.0: Created a new function, to automatically remove detected hate speech or offensive speech from text.
0.1.8 - 0.1.9: Updated docstrings.
0.1.7: Added AI models to ValX for hate speech detection.
0.1.1 - 0.1.6: Fixed errors in code, and created several functions for text cleaning.
0.1.0: Initial release.
Installation
You can install ValX using PyPi, please make sure that you are using Python 3.6 or later before installing ValX:
pip install valx
List of supported languages for profanity detection and removal
Below is a complete list of all the available supported languages for ValX's profanity detection and removal functions which are valid values for language
:
All
Arabic
Czech
Danish
German
English
Esperanto
Persian
Finnish
Filipino
French
French (CA)
Hindi
Hungarian
Italian
Japanese
Kabyle
Korean
Dutch
Norwegian
Polish
Portuguese
Russian
Swedish
Thai
Klingon
Turkish
Chinese
Example Usage
Profanity Detection
from valx import detect_profanity
sample_text = [
"This is a sample text containing some profanity like bad word 1, bad word 2, and bad word 3.",
"This line doesn't contain any profanity.",
"But this one has another, just in another language: bad word 4."
]
# Detect profanity
results = detect_profanity(sample_text, language='English')
print("Profanity Evaluation Results", results)
Profanity Removal
from valx import remove_profanity
sample_text = [
"This is a sample text containing some profanity like bad word 1, bad word 2, and bad word 3.",
"This line doesn't contain any profanity.",
"But this one has another, just in another language: bad word 4."
]
# Remove profanity
removed = remove_profanity(sample_text, "text_cleaned.txt", language="English")
PII Detection
from valx import detect_sensitive_information
sample_text = [
"Please contact john.doe@example.com or call 555-123-4567 for more information.",
"We will need your credit card number to complete the transaction: 1234-5678-9012-3456.",
"My social security number is 123-45-6789 and my ID number is AB123456.",
"Our office address is 123 Main St, Anytown, USA. Please visit us!",
"Your IP address is 192.168.1.1. Please don't share it with anyone."
]
# Detect sensitive information
detected_information = detect_sensitive_information(sample_text)
PII Removal
from valx import remove_sensitive_information
sample_text = [
"Please contact john.doe@example.com or call 555-123-4567 for more information.",
"We will need your credit card number to complete the transaction: 1234-5678-9012-3456.",
"My social security number is 123-45-6789 and my ID number is AB123456.",
"Our office address is 123 Main St, Anytown, USA. Please visit us!",
"Your IP address is 192.168.1.1. Please don't share it with anyone."
]
# Detect sensitive information
cleaned_information = remove_sensitive_information(sample_text)
Hate Speech Detection
from valx import detect_hate_speech
# Detect hate speech or offensive language
outcome_of_detection = detect_hate_speech("You are stupid.")
Remove Hate Speech
from valx import detect_hate_speech
sample_text = [
"This is a sample text containing some profanity like bad word 1, bad word 2, and bad word 3.",
"This line doesn't contain any profanity.",
"But this one has another, just in another language: bad word 4."
]
# Remove hate speech or offensive language
cleaned_text = remove_hate_speech(sample_text)
Custom Profanity Filtering
ValX allows for flexible profanity filtering using custom word lists.
from valx import detect_profanity, remove_profanity, load_custom_profanity_from_file
# Example: Create a dummy custom profanity file
with open("custom_profanity.txt", "w") as f:
f.write("# This is a comment and will be ignored\n")
f.write("sillyword1\n")
f.write(" \n") # Empty line, ignored
f.write("sillyword2\n")
f.write("custombadword\n")
sample_text_custom = [
"This text contains a sillyword1.",
"Another line with sillyword2 and also a standard badword.",
"This custombadword should be caught."
]
# 1. Using custom_words_list directly (standalone)
custom_list_direct = ["sillyword1", "custombadword"]
detected_custom_direct = detect_profanity(sample_text_custom, language=None, custom_words_list=custom_list_direct)
print("Detected with direct custom list (standalone):", detected_custom_direct)
# Expected: Detects "sillyword1" and "custombadword" with source "Custom"
# 2. Loading custom words from a file
loaded_custom_list = load_custom_profanity_from_file("custom_profanity.txt")
print(f"Loaded custom words: {loaded_custom_list}") # Expected: ['sillyword1', 'sillyword2', 'custombadword']
# 3. Using loaded custom list with a built-in language (English)
detected_custom_combined = detect_profanity(sample_text_custom, language="English", custom_words_list=loaded_custom_list)
print("Detected with loaded custom list + English:", detected_custom_combined)
# Expected: Detects "sillyword1", "sillyword2", "custombadword" (Source: Custom + English or Custom)
# and "badword" (Source: English)
# 4. Removing profanity using a custom list
cleaned_text_custom = remove_profanity(sample_text_custom, language=None, custom_words_list=loaded_custom_list)
print("Text after removing profanity with custom list:", cleaned_text_custom)
# Expected: "sillyword1", "sillyword2", "custombadword" are removed.
# Clean up dummy file (optional)
import os
os.remove("custom_profanity.txt")
Last updated
Was this helpful?