Skip to content

Commit 8ec4c65

Browse files
authored
Update README.fa.md
1 parent 7e91e34 commit 8ec4c65

1 file changed

Lines changed: 86 additions & 40 deletions

File tree

README.fa.md

Lines changed: 86 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -26,79 +26,125 @@ pip install PerSent
2626
## ساختار
2727
### **توابع تحلیل نظرات**
2828

29-
$$train(train_csv, test_size=0.2, vector_size=100, window=5)$$
29+
```train(train_csv, test_size=0.2, vector_size=100, window=5)```
3030

31-
متدی برای آموزش مدل هست که یک مسیر از یک فایل CSV شامل ستون های :
31+
| Parameter | Data Type | Default Value | Description | Optional/Required |
32+
|--------------|-----------|---------------|-----------------------------------------------------------------------------|-------------------|
33+
| `train_csv` | str | - | Path to CSV file containing training data with `body` and `recommendation_status` columns | Required |
34+
| `test_size` | float | 0.2 | Proportion of test data (between 0.0 and 1.0) | Optional |
35+
| `vector_size`| int | 100 | Output vector dimension for Word2Vec model (embedding size) | Optional |
36+
| `window` | int | 5 | Context window size for Word2Vec model | Optional |
3237

33-
1- body
3438

35-
2- recommendation_status
36-
37-
میگیره که ستون دوم باید یکی از مقادیر زیر رو داشته باشه :
39+
ستون دوم باید یکی از مقادیر زیر رو داشته باشه :
3840
- no_idea
3941
- recommended
4042
- not_recommended
4143
-
42-
و اگه غیر این null و NaN باشه تبدیل به no_idea میشه و روی دقت مدل آموزشی شما تاثیر میذاره. آرگومان های دیگه اختیاری هست :
43-
44-
- test_size : درصد تشکیل دهنده موارد تست از داده های آموزش
45-
- vector_size : اندازه بردار کلمات
46-
- window : اندازه پنجره تشخیص contex
47-
44+
و اگه غیر این null و NaN باشه تبدیل به no_idea میشه و روی دقت مدل آموزشی شما تاثیر میذاره.
4845
خروجی این تابع ، دقت به دست آمده از داده های تست هست.
4946

5047
---
5148

52-
$$predict(text)$$
49+
```train(train_csv, test_size=0.2, vector_size=100, window=5)```
50+
51+
| Parameter | Data Type | Default Value | Description | Optional/Required |
52+
|--------------|-----------|---------------|-----------------------------------------------------------------------------|-------------------|
53+
| `train_csv` | str | - | Path to CSV file containing training data with `body` and `recommendation_status` columns | Required |
54+
| `test_size` | float | 0.2 | Proportion of test data (between 0.0 and 1.0) | Optional |
55+
| `vector_size`| int | 100 | Output vector dimension for Word2Vec model (embedding size) | Optional |
56+
| `window` | int | 5 | Context window size for Word2Vec model | Optional |
5357

5458
تابع اصلی که باهاش کار داریم که یک text میگیره و یکی از مقادیر "not_recommended", "recommended", "no_idea" رو با توجه به تحلیلی که روی متن انجام داده برمیگردونه.
5559

5660
---
5761

58-
$$save_model()$$
59-
60-
$$load_model()$$
62+
```saveModel()```
63+
64+
```loadModel()```
6165

6266
این دو تابع برای بارگیری و بارگذاری مدل هست که مدل ها توی پوشه model ذخیره میشن و هروقت مدل جدیدی رو آموزش بدیم ، اونجا میتونیم پیداش کنیم.
6367

6468
---
6569

66-
$$csvPredict(input_csv, output_path, summary_path=None, text_column=0)$$
70+
```analyzeCSV(input_csv, output_path, summary_path=None, text_column=0)```
6771

72+
| Parameter | Data Type | Default Value | Description | Optional/Required |
73+
|----------------|-----------------|---------------|-----------------------------------------------------------------------------|-------------------|
74+
| `input_csv` | str | - | Path to input CSV file containing comments to analyze | Required |
75+
| `output_path` | str | - | Path where analyzed results CSV will be saved | Required |
76+
| `summary_path` | str or None | None | Optional path to save summary statistics CSV | Optional |
77+
| `text_column` | int or str | 0 | Column index (int) or name (str) containing the text to analyze | Optional |
78+
6879
تابعی که برای پردازش گروهی از نظرات ذخیره شده توی یک فایل csv به کار میره. اگه فایل تک ستونه باشه نیازی به مشخص کردن ستون text_column نداریم وگرنه باید اسم ستون یا اندیس ستون (شروع از صفر و حتی اعداد منفی ) رو به عنوان آرگومان ارسال کنیم. ورودی ما input_csv و مسیر ذخیره خروجی output_path هست که خروجی شامل دو ستون هست که ستون اول نظرات و ستون دوم وضعیت پیشنهاد شدن recommendation اون نظر هست. اگر خواستیم یه خلاصه کلی از نظرات مثل تعداد کل ، تعداد پیشنهاد شده ها ، تعداد پیشنهاد نشده ها و تعداد بدون ایده ها و همچنین دقت مدل رو داشته باشیم باید به summary_path هم مسیر بدیم. این تابع پردازش و تحلیل رو انجام و فایل نهایی رو ذخیره میکنه ، علاوه بر اون دیتافریمی رو هم برمیگردونه.
6980

7081

7182
---
7283

7384
### **توابع تحلیل احساسات**
7485

75-
$$load_weighted_lexicon(csv_file, word_col=0, emotion_col=1, weight_col=2)$$
86+
```loadLex(csv_file, word_col=0, emotion_col=1, weight_col=2)```
87+
88+
| Parameter | Data Type | Default Value | Description | Optional/Required |
89+
|----------------|-----------------|---------------|-----------------------------------------------------------------------------|-------------------|
90+
| `csv_file` | str | - | Path to CSV lexicon file | Required |
91+
| `word_col` | int or str | 0 | Column index (int) or name (str) containing words | Optional |
92+
| `emotion_col` | int or str | 1 | Column index (int) or name (str) containing emotion labels | Optional |
93+
| `weight_col` | int or str | 2 | Column index (int) or name (str) containing weight values | Optional |
7694

7795
برای خوندن فایل csv حاوی سه ستون کلیدواژه ها ، حس (شادی ، غم ، عصبانیت ، ترس ، نفرت و آرامش) و ستون وزن حس هست. که شماره ستون ها اختیاری هست. و شما باید مسیر فایل رو به عنوان آرگومان مشخص کنید. کلمات باید نسبت به حسی که دارن وزن بگیرن وگرنه وزن 1 میگیرن و این روی دقت مدل تون تاثیر میذاره.
7896

7997
---
8098

81-
$$train_from_csv(train_csv, text_col='text', emotion_col='sentiment', weight_col='weight')$$
99+
```train(train_csv, text_col='text', emotion_col='sentiment', weight_col='weight')```
100+
101+
| Parameter | Data Type | Default Value | Description | Optional/Required |
102+
|----------------|-----------------|---------------|-----------------------------------------------------------------------------|-------------------|
103+
| `train_csv` | str | - | Path to training CSV file | Required |
104+
| `text_col` | str or int | 'text' | Column name/index containing text data | Optional |
105+
| `emotion_col` | str or int | 'emotion' | Column name/index containing emotion labels | Optional |
106+
| `weight_col` | str or int | 'weight' | Column name/index containing weight values | Optional |
82107

83108
برای آموزش مدل از این تابع استفاده میکنیم و ساختار فایل csv مثل بخش قبل هست که گفتم و باید اسم ستون ها رو هم مشخص کنیم ( در صورت نیاز چون اختیاری هست)
84109

85110
---
86111

87-
$$save_model(model_name='weighted_sentiment_model')$$
112+
```saveModel(model_name='weighted_sentiment_model')```
113+
114+
| Parameter | Type | Default Value | Description | Optional/Required |
115+
|--------------|-------|-----------------------------|-----------------------------------------------------------------------------|-------------------|
116+
| `model_name` | str | 'weighted_sentiment_model' | Base filename for saving model (without extension) | Optional |
117+
118+
119+
```loadModel(model_name='weighted_sentiment_model')```
120+
121+
| Parameter | Type | Default Value | Description | Optional/Required |
122+
|--------------|-------|-----------------------------|-----------------------------------------------------------------------------|-------------------|
123+
| `model_name` | str | 'weighted_sentiment_model' | Base filename of model to load (without extension) | Optional |
88124

89-
$$load_model(model_name='weighted_sentiment_model')$$
90125

91126
ذخیره و بازیابی مدل که مثل همون لود و سیوی هست که بالاتر گفتم و مدل ها هم توی همون پوشه model ذخیره میشن.
92127

93128
---
94129

95-
$$analyze_text(text)$$
130+
```analyzeText(text)```
131+
132+
| Parameter | Type | Description | Optional/Required |
133+
|-----------|------|--------------------------------------|-------------------|
134+
| `text` | str | Persian text to analyze | Required |
96135

97136
تابع تحلیل تک ورودی هست که متنی رو میگیره و با توجه آموزش های مدل ، متن رو تحلیل میکنه و درصدی از حس های گفته شده رو برمیگردونه. کاربردش هم پایین تر گفته شده.
98137

99138
---
100139

101-
$$analyze_csv(input_csv, output_csv, text_col='text', output_col='sentiment_analysis')$$
140+
```analyzeCSV(input_csv, output_csv, text_col='text', output_col='sentiment_analysis')```
141+
142+
| Parameter | Type | Default Value | Description | Optional/Required |
143+
|---------------------|---------------|------------------------|-----------------------------------------------------------------------------|-------------------|
144+
| `input_csv` | str | - | Path to input CSV file containing text to analyze | Required |
145+
| `output_csv` | str | - | Path to save analyzed results | Required |
146+
| `text_col` | str/int | 'text' | Column name/index containing text to analyze | Optional |
147+
| `output_col` | str | 'sentiment_analysis' | Column name for output results | Optional |
102148

103149
متدی که برای تحلیل مجموعه ای از متون ذخیره شده توی یک فایل csv به کار میره و مسیر فایل ورودی و همچنین مسیر ذخیره خروجی رو میگیره. و اسم ستون ها هم اختیاری هستند. در صورت موفق بودن True و در غیر این صورت False برمیگردونه.
104150

@@ -136,11 +182,11 @@ analyzer = CommentAnalyzer()
136182
analyzer.train("train.csv")
137183

138184
# بارگذاری مدل از پیش آموزش دیده
139-
analyzer.load_model()
185+
analyzer.loadModel()
140186

141187
# پیش‌بینی متن
142188
text = "کیفیت عالی داشت"
143-
result = analyzer.predict(text)
189+
result = analyzer.analyzeText(text)
144190
print(f"احساس متن: {result}")
145191

146192
# خروجی: احساس متن: recommended
@@ -152,18 +198,18 @@ print(f"احساس متن: {result}")
152198

153199
حالا میخوایم یک سری نظرات رو که توی یک فایل csv قرار داره تحلیل کنیم. شکل کلی تابع به این صورت هست :
154200
``` bash
155-
csvPredict(input_csv, output_path, summary_path=None, text_column=0)
201+
analyzeCSV(input_csv, output_path, summary_path=None, text_column=0)
156202
```
157203
که مسیر خلاصه (summary_path) و ستون نظرات (text_column) اختیاری هستند.
158204
برای مثال ما میخوایم یک فایل csv تک ستونه رو تحلیل کنیم :
159205
``` bash
160206
from PerSent import CommentAnalyzer
161207
# نمونه‌سازی تحلیلگر
162208
analyzer = CommentAnalyzer()
163-
analyzer.load_model()
209+
analyzer.loadModel()
164210

165211
# تحلیل فایل
166-
analyzer.csvPredict(
212+
analyzer.analyzeCSV(
167213
input_csv="comments.csv",
168214
output_path="resultsss.csv"
169215
)
@@ -184,24 +230,24 @@ from PerSent import CommentAnalyzer
184230

185231
# نمونه‌سازی تحلیلگر
186232
analyzer = CommentAnalyzer()
187-
analyzer.load_model()
233+
analyzer.loadModel()
188234

189235
# روش‌های مختلف فراخوانی تابع:
190236

191237
# 1. استفاده از اندیس ستون (شمارش از 0)
192-
analyzer.csvPredict("comments.csv", "results.csv", None , 0) # ستون اول
238+
analyzer.analyzeCSV("comments.csv", "results.csv", None , 0) # ستون اول
193239

194240
# 2. استفاده از اندیس منفی (شمارش از آخر)
195-
analyzer.csvPredict("comments.csv", "results.csv", None , -1) # ستون آخر
241+
analyzer.analyzeCSV("comments.csv", "results.csv", None , -1) # ستون آخر
196242

197243
# 3. استفاده از نام ستون
198-
analyzer.csvPredict("comments.csv", "results.csv", None , "نظرات") # ستون با سرستون نظرات
244+
analyzer.analyzeCSV("comments.csv", "results.csv", None , "نظرات") # ستون با سرستون نظرات
199245

200246
# 4. استفاده از خلاصه سازی بدون مشخص کردن ستون (فایل تک ستون)
201-
analyzer.csvPredict("comments.csv", "results.csv" , "summary_path.csv")
247+
analyzer.analyzeCSV("comments.csv", "results.csv" , "summary_path.csv")
202248

203249
# 5. استفاده از خلاصه سازی به همراه مشخص کردن ستون
204-
analyzer.csvPredict("comments.csv", "results.csv" , "summary_path.csv", 2)
250+
analyzer.analyzeCSV("comments.csv", "results.csv" , "summary_path.csv", 2)
205251

206252
```
207253

@@ -214,11 +260,11 @@ analyzer.csvPredict("comments.csv", "results.csv" , "summary_path.csv", 2)
214260
from PerSent import SentimentAnalyzer
215261

216262
analyzer = SentimentAnalyzer()
217-
analyzer.load_model()
263+
analyzer.loadModel()
218264

219265
sample_text = "امتحانم رو خراب کردم. احساس می‌کنم یک شکست خورده‌ی تمام عیارم."
220266

221-
result = analyzer.analyze_text(text)
267+
result = analyzer.analyzeText(text)
222268
for emotion, score in sorted(result.items(), key=lambda x: x[1], reverse=True):
223269
print(f"{emotion}: {score:.2f}%")
224270

@@ -236,7 +282,7 @@ for emotion, score in sorted(result.items(), key=lambda x: x[1], reverse=True):
236282
237283
اگر بخوایم مدل آموزش دیده خودمون رو داشته باشیم از دستور زیر استفاده میکنیم :
238284
``` bash
239-
analyzer.train_from_csv('emotion_dataset.csv)
285+
analyzer.train('emotion_dataset.csv)
240286
```
241287
فایل باید حاوی سه ستون زیر باشه :
242288
1- ستون کلیدواژه
@@ -245,13 +291,13 @@ analyzer.train_from_csv('emotion_dataset.csv)
245291
246292
و دو دستور زیر برای بارگیری و بارگذاری مدل هست :
247293
``` bash
248-
analyzer.save_model("weighted_sentiment_model_name")
249-
analyzer.load_model("weighted_sentiment_model_name")
294+
analyzer.saveModel("weighted_sentiment_model_name")
295+
analyzer.loadModel("weighted_sentiment_model_name")
250296
```
251297
252298
و همچنین برای تحلیل یک فایل csv پر از جملات فارسی از این بخش استفاده می کنیم :
253299
``` bash
254-
analyzer.analyze_csv("input_csv" , "output_csv")
300+
analyzer.analyzeCSV("input_csv" , "output_csv")
255301
```
256302
257303

0 commit comments

Comments
 (0)