NEXARA Sentiment Analysis Model (مدل تحلیل احساسات نکسارا)

مدل NEXARA یک مدل مبتنی بر ترنسفورمرها برای تحلیل احساسات پنج کلاسه زبان فارسی است. این مدل با استفاده از معماری ParsBERT (نسخه Base) بر روی دیتاست‌های تلفیقی رسمی و عامیانه فارسی Fine-Tune شده است.

🎯 ویژگی‌های مدل

  • زبان: فارسی (Persian / Farsi)
  • پایه مدل: ParsBERT (BERT-base-fa)
  • نوع مسئله: دسته‌بندی متن (Text Classification / Sequence Classification)
  • تعداد کلاس‌ها: ۵ کلاسه (از بسیار منفی تا بسیار مثبت)
  • حجم پارامترها: کمتر از ۵۰۰ میلیون پارامتر

📊 دسته‌بندی کلاس‌ها (Labels Mapping)

خروجی مدل شامل ۵ کلاس عددی (بین ۰ تا ۴) است که با احساسات زیر متناظر هستند:

برچسب عددی امتیاز (Score) احساس متناظر توضیحات
0 -2 😡 بسیار منفی نارضایتی شدید، انتقاد تند، تجربه خرید یا خدمات بسیار بد
1 -1 😞 منفی نارضایتی، تجربه منفی، بیان مشکلات معمولی
2 0 😐 خنثی بدون احساس خاص، بیان اطلاعات یا واقعیت‌های بدون جهت‌گیری
3 +1 😊 مثبت رضایت نسبی، تجربه خوب، تعریف معمولی
4 +2 🤩 بسیار مثبت رضایت شدید، تحسین زیاد، ابراز وفاداری به خدمات/محصول

📦 داده‌های آموزشی (Training Data)

این مدل بر روی یک دیتاست ترکیبی بهینه با حجم ۱۸,۵۰۰ جمله آموزش دیده است:

  1. ديتاست SentiPers (۱۵,۰۰۰ جمله): شامل جملات رسمی‌تر و ساختاریافته به زبان فارسی با برچسب‌های ۵ کلاسه پیش‌فرض.
  2. دیتاست اسنپ‌فود (۳,۵۰۰ جمله گزینش‌شده): نمونه‌های چالش‌برانگیز و عامیانه استخراج‌شده از نظرات کاربران اسنپ‌فود که به صورت دستی و دقیق در مقیاس ۵ کلاسه برچسب‌گذاری شده‌اند تا درک مدل از متون عامیانه افزایش یابد.

💻 راهنمای استفاده (Quick Start)

برای استفاده از این مدل در پایتون با کتابخانه transformers می‌توانید از کد زیر استفاده کنید:

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

# مسیر بارگذاری مدل از هاب hugging face
MODEL_NAME = "MTE313/NEXARA_model" 

# بارگذاری توکنایزر و مدل
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)

# تنظیم مدل در حالت ارزیابی
model.eval()

def predict_sentiment(text):
    # پیش‌پردازش و توکنایزر
    inputs = tokenizer(
        text,
        return_tensors="pt",
        truncation=True,
        padding=True,
        max_length=512
    )
    
    # استنتاج
    with torch.no_grad():
        outputs = model(**inputs)
        predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
        
    predicted_class = torch.argmax(predictions, dim=-1).item()
    confidence = predictions[0][predicted_class].item()
    
    # نگاشت برچسب‌ها
    labels = {
        0: "😡 بسیار منفی (Very Negative)",
        1: "😞 منفی (Negative)",
        2: "😐 خنثی (Neutral)",
        3: "😊 مثبت (Positive)",
        4: "🤩 بسیار مثبت (Very Positive)"
    }
    
    return {
        "text": text,
        "label": labels[predicted_class],
        "score": predicted_class - 2, # تبدیل به مقیاس -2 تا +2
        "confidence": f"{confidence:.2%}"
    }

# تست نمونه‌ها
test_sentences = [
    "واقعا از خریدم راضی هستم، هم قیمت مناسب بود هم کیفیت عالی.",
    "غذا اصلا خوب نبود، کاملا سرد رسیده بود و طعم بدی داشت.",
    "یک کالا معمولی بود، ویژگی خاصی نداشت ولی کار راه اندازه."
]

for sentence in test_sentences:
    result = predict_sentiment(sentence)
    print(f"متن: {result['text']}")
    print(f"احساس: {result['label']} | امتیاز: {result['score']} | اطمینان: {result['confidence']}")
    print("-" * 50)

🛠️ فرآیند و تنظیمات آموزش (Training Procedure)

مدل با پارامترهای زیر بر روی دیتاست آموزشی Fine-Tune شده است:

  • Optimizer: AdamW
  • Learning Rate: 2e-5
  • Batch Size: 8
  • Epochs: 3
  • Warmup Steps: 500
  • Weight Decay: 0.01

⚠️ محدودیت‌ها و سوگیری‌ها (Limitations & Bias)

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

📄 مجوز و شرایط استفاده (License)

استفاده از این مدل برای مقاصد آموزشی، پژوهشی و کارهای غیرتجاری با ذکر منبع آزاد است. برای استفاده تجاری، لطفاً فایل مجوز مربوطه را مطالعه نمایید.

Downloads last month
68
Safetensors
Model size
0.2B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 1 Ask for provider support

Dataset used to train MTE313/NEXARA_Model

Space using MTE313/NEXARA_Model 1

Collection including MTE313/NEXARA_Model