دسته بندی : آموزشی متفرقه

معرفی Persian Swear Detector – تشخیص فحش فارسی با ML + Rule-based

فحش دادن در دنیای واقعی شاید فقط چند ثانیه طول بکشه، اما در دنیای آنلاین می‌تونه به سرعت به تجربه کاربری بد، محتوای توهین‌آمیز و حتی مشکلات حقوقی ختم بشه. برای همین داشتن یک ابزار تشخیص فحش و کلمات توهین‌آمیز به زبان فارسی همیشه یکی از نیازهای اصلی پلتفرم‌هایی مثل شبکه‌های اجتماعی، فروم‌ها و حتی بخش کامنت سایت‌هاست.

اینجا بود که پروژه Persian Swear Detector شکل گرفت؛ یک ابزار ساده ولی قدرتمند که با ترکیب روش‌های Rule-based و مدل‌های یادگیری ماشین (ML) می‌تونه به راحتی متون فارسی رو پردازش و کلمات نامناسب رو شناسایی کنه.

🚀 چه چیزهایی داره؟

  • Hybrid Detection → ترکیب Rule-based + ML برای دقت بالا
  • قابلیت شخصی‌سازی دیتاست → می‌تونی لیست کلمات فحش یا نرمال رو به راحتی گسترش بدی
  • پشتیبانی از زبان فارسی → نرمال‌سازی و پیش‌پردازش متن فارسی رو هندل می‌کنه
  • CLI Interface → یه رابط خط فرمان ساده برای تست سریع
  • Model Persistence → امکان ذخیره و لود مدل برای استفاده سریع در پروژه‌های بعدی
├── swear_detector.py         # اسکریپت اصلی
├── requirements.txt          # وابستگی‌های Python
├── dataset/
│   ├── swear_words.json      # لیست کلمات فحش
│   └── normal_words.json     # لیست کلمات نرمال
├── models/
│   └── swear_detector_model.pkl # مدل ML آموزش‌دیده
├── Dockerfile                # پشتیبانی از Docker
├── docker-compose.yml        # تنظیمات Docker Compose
└── README.md                 

🏁 شروع کار با پروژه

git clone https://github.com/ghaninia/swear_persian.git
cd swear_persian
source venv/bin/activate
pip install -r requirements.txt
python3 swear_detector.py

همچنین شما میتونید دیتاست های مربوط به پروژه رو ویرایش کنید که در پوشه dataset قرار گرفته 

آموزش یا استفاده از مدل:
اگه دیتاست آماده باشه، اولین بار که اجرا کنی مدل به صورت خودکار train میشه و اگر فایل مدل از قبل موجود باشه (models/swear_detector_model.pkl)، مستقیم لود میشه

نمونه از از خروجی :‌

{
  "text": "نمونه متن تستی",
  "processed_text": "نمونه متن تستی",
  "rule_based_detection": false,
  "ml_detection": false,
  "ml_confidence": 0.02,
  "final_prediction": false,
  "confidence": 0.02,
  "used_ml_prediction": true
}

خلاصه روند کار:

  1. آماده‌سازی داده‌ها: دو فایل JSON شامل لیست ناسزاها و کلمات/جملات عادی تهیه می‌شود. داده‌ها برچسب‌گذاری شده و برای آموزش مدل استفاده می‌شوند.
  2. تشخیص مبتنی بر قواعد:متن ورودی پیش‌پردازش می‌شود (نرمال‌سازی، حذف کاراکترهای خاص، تبدیل به حروف کوچک) و سپس بررسی می‌شود که آیا کلمه‌ای از لیست ناسزاها در متن وجود دارد یا نه. اگر باشد، متن به عنوان ناسزا علامت‌گذاری می‌شود.
  3. مدل یادگیری ماشین: مدل با استفاده از TfidfVectorizer (استخراج n-gramهای کاراکتری) و LogisticRegression آموزش می‌بیند تا الگوهای ناسزا را تشخیص دهد. اگر مدل احتمال ناسزا بودن متن را بیشتر از ۰.۵ تشخیص دهد، آن را ناسزا در نظر می‌گیرد.
  4. ترکیب نتایج:اگر روش مبتنی بر قواعد ناسزا را تشخیص دهد، نتیجه نهایی ناسزا خواهد بود. در غیر این صورت، نتیجه مدل یادگیری ماشین ملاک قرار می‌گیرد.

import joblib

model = joblib.load('swear_detector.pkl')

text = "متن ورودی شما"
result = model.predict([text])


0| از0رای

مطالب مشابه


0 دیدگاهافزودن