MTE313 commited on
Commit
da9ddeb
·
verified ·
1 Parent(s): bed8219

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +151 -0
README.md CHANGED
@@ -1,3 +1,154 @@
1
  ---
 
 
2
  license: mit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ language:
3
+ - fa
4
  license: mit
5
+ tags:
6
+ - sentiment-analysis
7
+ - text-classification
8
+ - parsbert
9
+ - pytorch
10
+ - transformers
11
+ - persian
12
+ datasets:
13
+ - MTE313/SnappFood_dataset_advanced
14
+ metrics:
15
+ - accuracy
16
+ - f1
17
+ - precision
18
+ - recall
19
+ pipeline_tag: text-classification
20
+ widget:
21
+ - text: "کیفیت غذا فوق‌العاده بود و ارسال بسیار سریع انجام شد."
22
+ - text: "غذا خیلی بد بود و سرد رسیده بود."
23
+ - text: "سفارش معمولی بود، چیز خاصی نداشت."
24
  ---
25
+
26
+ # NEXARA Sentiment Analysis Model (مدل تحلیل احساسات نکسارا)
27
+
28
+ مدل **NEXARA** یک مدل مبتنی بر ترنسفورمرها برای **تحلیل احساسات پنج کلاسه زبان فارسی** است. این مدل با استفاده از معماری **ParsBERT** (نسخه Base) بر روی دیتاست‌های تلفیقی رسمی و عامیانه فارسی Fine-Tune شده است.
29
+
30
+ ## 🎯 ویژگی‌های مدل
31
+
32
+ - **زبان:** فارسی (Persian / Farsi)
33
+ - **پایه مدل:** ParsBERT (BERT-base-fa)
34
+ - **نوع مسئله:** دسته‌بندی متن (Text Classification / Sequence Classification)
35
+ - **تعداد کلاس‌ها:** ۵ کلاسه (از بسیار منفی تا بسیار مثبت)
36
+ - **حجم پارامترها:** کمتر از ۵۰۰ میلیون پارامتر
37
+
38
+ ---
39
+
40
+ ## 📊 دسته‌بندی کلاس‌ها (Labels Mapping)
41
+
42
+ خروجی مدل شامل ۵ کلاس عددی (بین ۰ تا ۴) است که با احساسات زیر متناظر هستند:
43
+
44
+ | برچسب عددی | امتیاز (Score) | احساس متناظر | توضیحات |
45
+ |:---:|:---:|:---:|:---|
46
+ | **0** | **-2** | 😡 بسیار منفی | نارضایتی شدید، انتقاد تند، تجربه خرید یا خدمات بسیار بد |
47
+ | **1** | **-1** | 😞 منفی | نارضایتی، تجربه منفی، بیان مشکلات معمولی |
48
+ | **2** | **0** | 😐 خنثی | بدون احساس خاص، بیان اطلاعات یا واقعیت‌های بدون جهت‌گیری |
49
+ | **3** | **+1** | 😊 مثبت | رضایت نسبی، تجربه خوب، تعریف معمولی |
50
+ | **4** | **+2** | 🤩 بسیار مثبت | رضایت شدید، تحسین زیاد، ابراز وفاداری به خدمات/محصول |
51
+
52
+ ---
53
+
54
+ ## 📦 داده‌های آموزشی (Training Data)
55
+
56
+ این مدل بر روی یک دیتاست ترکیبی بهینه با حجم **۱۸,۵۰۰ جمله** آموزش دیده است:
57
+ 1. **ديتاست SentiPers (۱۵,۰۰۰ جمله):** شامل جملات رسمی‌تر و ساختاریافته به زبان فارسی با برچسب‌های ۵ کلاسه پیش‌فرض.
58
+ 2. **دیتاست اسنپ‌فود (۳,۵۰۰ جمله گزینش‌شده):** نمونه‌های چالش‌برانگیز و عامیانه استخراج‌شده از نظرات کاربران اسنپ‌فود که به صورت دستی و دقیق در مقیاس ۵ کلاسه برچسب‌گذاری شده‌اند تا درک مدل از متون عامیانه افزایش یابد.
59
+
60
+ ---
61
+
62
+ ## 💻 راهنمای استفاده (Quick Start)
63
+
64
+ برای استفاده از این مدل در پایتون با کتابخانه `transformers` می‌توانید از کد زیر استفاده کنید:
65
+
66
+ ```python
67
+ from transformers import AutoTokenizer, AutoModelForSequenceClassification
68
+ import torch
69
+
70
+ # مسیر بارگذاری مدل از هاب Hugging Face
71
+ # جایگزین کنید با آدرس دقیق مدل در اکانت خود: "username/NEXARA_model"
72
+ MODEL_NAME = "MTE313/NEXARA_model"
73
+
74
+ # بارگذاری توکنایزر و مدل
75
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
76
+ model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)
77
+
78
+ # تنظیم مدل در حالت ارزیابی
79
+ model.eval()
80
+
81
+ def predict_sentiment(text):
82
+ # پیش‌پردازش و توکنایزر
83
+ inputs = tokenizer(
84
+ text,
85
+ return_tensors="pt",
86
+ truncation=True,
87
+ padding=True,
88
+ max_length=512
89
+ )
90
+
91
+ # استنتاج
92
+ with torch.no_grad():
93
+ outputs = model(**inputs)
94
+ predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
95
+
96
+ predicted_class = torch.argmax(predictions, dim=-1).item()
97
+ confidence = predictions[0][predicted_class].item()
98
+
99
+ # نگاشت برچسب‌ها
100
+ labels = {
101
+ 0: "😡 بسیار منفی (Very Negative)",
102
+ 1: "😞 منفی (Negative)",
103
+ 2: "😐 خنثی (Neutral)",
104
+ 3: "😊 مثبت (Positive)",
105
+ 4: "🤩 بسیار مثبت (Very Positive)"
106
+ }
107
+
108
+ return {
109
+ "text": text,
110
+ "label": labels[predicted_class],
111
+ "score": predicted_class - 2, # تبدیل به مقیاس -2 تا +2
112
+ "confidence": f"{confidence:.2%}"
113
+ }
114
+
115
+ # تست نمونه‌ها
116
+ test_sentences = [
117
+ "واقعا از خریدم راضی هستم، هم قیمت مناسب بود هم کیفیت عالی.",
118
+ "غذا اصلا خوب نبود، کاملا سرد رسیده بود و طعم بدی داشت.",
119
+ "یک کالا معمولی بود، ویژگی خاصی نداشت ولی کار راه اندازه."
120
+ ]
121
+
122
+ for sentence in test_sentences:
123
+ result = predict_sentiment(sentence)
124
+ print(f"متن: {result['text']}")
125
+ print(f"احساس: {result['label']} | امتیاز: {result['score']} | اطمینان: {result['confidence']}")
126
+ print("-" * 50)
127
+ ```
128
+
129
+ ---
130
+
131
+ ## 🛠️ فرآیند و تنظیمات آموزش (Training Procedure)
132
+
133
+ مدل با پارامترهای زیر بر روی دیتاست آموزشی Fine-Tune شده است:
134
+
135
+ - **Optimizer:** AdamW
136
+ - **Learning Rate:** 2e-5 (یا مقدار متناسب اعمال شده)
137
+ - **Batch Size:** 16 (یا 32 بسته به سخت‌افزار)
138
+ - **Epochs:** 3
139
+ - **Warmup Steps:** 500
140
+ - **Weight Decay:** 0.01
141
+
142
+ ---
143
+
144
+ ## ⚠️ محدودیت‌ها و سوگیری‌ها (Limitations & Bias)
145
+
146
+ - مدل به شدت تحت تاثیر کیفیت متون ورودی است. در برخی جملات بسیار کوتاه عامیانه یا جملات دارای کنایه (Sarcasm)، ممکن است دقت مدل کاهش یابد.
147
+ - توصیه‌ می‌شود قبل از ارسال متن به مدل، فرآیند پیش‌پردازش ساده مانند نرمال‌سازی نویسه‌ها (ی و ک فارسی) را انجام دهید تا بهترین نتایج حاصل شود.
148
+
149
+ ---
150
+
151
+ ## 📄 مجوز و شرایط استفاده (License)
152
+
153
+ استفاده از این مدل برای مقاصد آموزشی، پژوهشی و کارهای غیرتجاری با ذکر منبع آزاد است. برای استفاده تجاری، لطفاً فایل مجوز مربوطه را مطالعه نمایید.
154
+