A Python module for detecting and filtering profanity using Google's Gemini API
Project description
Gemini Profanity Filter
A Python module for detecting and filtering profanity in text using Google's Gemini API. The module can identify standard and obfuscated profanity across multiple languages.
Features
- Detects standard profanity in multiple languages
- Identifies obfuscated profanity (character substitutions, leetspeak, etc.)
- Handles stretched or repeated characters
- Detects deliberately fragmented words
- Works with mixed case patterns
- Processes context-sensitive profanity
- Language-specific profanity patterns including Cyrillic, Asian scripts, etc.
Installation
pip install gemini-profanity-filter
Usage
from profanity_filter import ProfanityFilter
import pandas as pd
import traceback
def run_batch_tests(pf):
test_inputs = [
"Ebl@NiShe nahui ti che delaesh?",
"kon4ennyj ublYd0k idi nax",
"ty dur@k ili 4to?",
"suka bly@t idi v sr@ku",
"govn0ed pozornyj",
"pid0rasina ti proklyataya",
"naxui idi s etim",
"zh0p0lik bl9t",
"mraz0ta gnid@",
"hohol eb@n@y",
"4mo bly@dsk@ya",
"d@un ubly@dnij",
"pizd@nutij shelobok",
"ebanut@ya ovca",
"k@kazec ebanij",
"g0vni4e ty prost@k",
"nax d@unish4e",
"ni4ego ti ne ponim@esh",
"s0sni d@",
"nahu9 provalis"
]
rows = []
for i, text in enumerate(test_inputs, 1):
try:
result = pf.filter_text(text)
if result and result.detected_profanity:
for entry in result.detected_profanity:
rows.append({
"Тест #": i,
"Текст": text,
"Оригинал": entry.original_form,
"Нормализовано": entry.normalized_form,
"Метод": entry.detection_method,
"Уверенность": round(entry.confidence_score, 2),
"Объяснение": entry.reasoning[:100] + "..." if entry.reasoning else ""
})
else:
rows.append({
"Тест #": i,
"Текст": text,
"Оригинал": "-",
"Нормализовано": "-",
"Метод": "-",
"Уверенность": 0,
"Объяснение": "Нецензурная лексика не найдена"
})
except Exception as e:
rows.append({
"Тест #": i,
"Текст": text,
"Оригинал": "❌ Ошибка",
"Нормализовано": "-",
"Метод": "-",
"Уверенность": 0,
"Объяснение": str(e)
})
df = pd.DataFrame(rows)
print("\n=== Сводка по результатам ===\n")
print(df.to_string(index=False))
def main():
try:
print("=== Запуск авто-тестов ===")
api_key = "AIzaSyCs3Bbjq_7PeGTAEHJkkSsUtYZvj4Fbbwo"
pf = ProfanityFilter(api_key)
run_batch_tests(pf)
except Exception as e:
print(f"❌ Ошибка: {e}")
traceback.print_exc()
if __name__ == "__main__":
main()
Requirements
- Python 3.7 or higher
- Google GenerativeAI Python library
- A valid Google Gemini API key
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gemini_profanity_filter-0.6.0.tar.gz.
File metadata
- Download URL: gemini_profanity_filter-0.6.0.tar.gz
- Upload date:
- Size: 20.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc50d2e99047a3b2858094a575430b90eebf95dfcabc0599b6683e1884d2b7f0
|
|
| MD5 |
6c3523125b326e2fd2a32945cd392304
|
|
| BLAKE2b-256 |
38ed57e0ed8f5abf1d11bec9f2eea146e0e54bee9906d45b625d70c7e4a4cb4c
|
File details
Details for the file gemini_profanity_filter-0.6.0-py3-none-any.whl.
File metadata
- Download URL: gemini_profanity_filter-0.6.0-py3-none-any.whl
- Upload date:
- Size: 20.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ed198592c84c5a01f68c39c6dea6503da06d943a3eef7c925f48f89d3ce7410
|
|
| MD5 |
33db6ef9ac56643fc7dba1c500b34669
|
|
| BLAKE2b-256 |
94e77c594314403d39c735218560f3f4645809a5c93b3dfa3a64646dcf75c9d4
|