Text Classification
Transformers
Safetensors
PyTorch
Persian
bert
sentiment-analysis
parsbert
persian
text-embeddings-inference
Instructions to use MTE313/NEXARA_Model with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use MTE313/NEXARA_Model with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="MTE313/NEXARA_Model")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("MTE313/NEXARA_Model") model = AutoModelForSequenceClassification.from_pretrained("MTE313/NEXARA_Model") - Notebooks
- Google Colab
- Kaggle
File size: 6,624 Bytes
43815ee da9ddeb 43815ee da9ddeb 43815ee da9ddeb f667f94 da9ddeb f667f94 da9ddeb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | ---
language:
- fa
license: mit
tags:
- sentiment-analysis
- text-classification
- parsbert
- pytorch
- transformers
- persian
datasets:
- MTE313/SnappFood_dataset_advanced
metrics:
- accuracy
- f1
- precision
- recall
pipeline_tag: text-classification
widget:
- text: "کیفیت غذا فوقالعاده بود و ارسال بسیار سریع انجام شد."
- text: "غذا خیلی بد بود و سرد رسیده بود."
- text: "سفارش معمولی بود، چیز خاصی نداشت."
---
# 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` میتوانید از کد زیر استفاده کنید:
```python
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)
استفاده از این مدل برای مقاصد آموزشی، پژوهشی و کارهای غیرتجاری با ذکر منبع آزاد است. برای استفاده تجاری، لطفاً فایل مجوز مربوطه را مطالعه نمایید.
|