add readme and update ds

This commit is contained in:
init_mahdi 2025-08-21 15:06:49 +03:30
parent 6708cd4133
commit 8b789db37c
2 changed files with 105 additions and 1 deletions

104
readme-train.md Normal file
View File

@ -0,0 +1,104 @@
# آموزش مدل NER فارسی با Flair
این پروژه برای آموزش یک مدل تشخیص موجودیت‌های نامدار (NER) روی داده‌های حقوقی به زبان فارسی طراحی شده است.
کد موجود از کتابخانه **Flair** برای آموزش و ریزتنظیم (Fine-tune) مدل‌های مبتنی بر ترانسفورمر استفاده می‌کند.
---
## ویژگی‌ها
- پشتیبانی از زبان فارسی
- استفاده از مدل‌های از پیش آموزش‌دیده (Pretrained Transformers)
- ذخیره نتایج آموزش و ارزیابی به صورت فایل
- قابلیت تست مدل آموزش‌دیده روی داده‌های جدید
---
## پیش‌نیازها
قبل از اجرای کد، نیاز است پکیج‌های زیر نصب شده باشند:
```bash
pip install flair transformers torch
```
---
## تنظیمات اولیه
سه پارامتر اصلی آموزش در ابتدای کد تعریف شده‌اند:
- **LEARNING_RATE**: نرخ یادگیری (مثال: `0.65e-4`)
- **MINI_BATCH_SIZE**: سایز مینی‌بچ (مثال: `8`)
- **MAX_EPOCHS**: حداکثر تعداد تکرار آموزش (مثال: `100`)
---
## ساختار داده‌ها
داده‌ها باید در پوشه `./data/` قرار گیرند و فرمت آن به صورت ستونی (ColumnCorpus) باشد:
```
token label
```
مثال:
```
علی B-PER
به O
دادگاه B-ORG
رفت O
```
---
## متدهای اصلی
### `main_train(model: str) -> bool`
- **ورودی**: نام مدل ترانسفورمر (مثل: `"HooshvareLab/bert-fa-base-uncased-ner-peyma"`)
- **خروجی**: مقدار بولین (موفقیت یا شکست)
- **عملکرد**:
1. بارگذاری داده‌ها و آماده‌سازی فرهنگ برچسب‌ها
2. بارگذاری و پیکربندی embeddingها
3. ایجاد مدل NER با SequenceTagger
4. آموزش مدل با استفاده از Flair ModelTrainer
5. ذخیره مدل و نتایج آموزش
6. تست مدل روی داده جدید
7. ارزیابی عملکرد و محاسبه F1
---
## اجرای آموزش
برای آموزش مدل، کافی است کد اصلی اجرا شود:
```bash
python train.py
```
مدل خروجی در پوشه `./taggers/` ذخیره خواهد شد. نام مدل شامل تاریخ و ساعت آموزش است.
---
## سناریوی تست
پس از پایان آموزش:
1. یک تست سریع روی یک ورودی ساده با استفاده از `inference.py` انجام می‌شود.
2. ارزیابی مدل با `evaluate_model.py` اجرا می‌شود.
3. نتایج در فایل `test-result.txt` ذخیره می‌گردد.
---
## خروجی‌ها
- مدل آموزش‌دیده در پوشه `./taggers/`
- فایل `test-result.txt` شامل نتایج آموزش و ارزیابی
- لاگ آموزش برای رسم نمودار
---
## نکات مهم
- این کد برای داده‌های **حقوقی** طراحی شده است اما می‌توان آن را روی سایر داده‌های فارسی نیز استفاده کرد.
- در صورت قطع آموزش، اجرای دوباره فرآیند باعث ایجاد مدل جدید با نام متفاوت می‌شود.
- برای بهبود نتایج، می‌توانید:
- نرخ یادگیری (Learning Rate) را تغییر دهید.
- سایز مینی‌بچ (Mini Batch Size) را بزرگ‌تر کنید.
- تعداد epochها را افزایش دهید.
---
## توسعه‌دهندگان
این پروژه با هدف پردازش زبان طبیعی فارسی در حوزه حقوقی توسعه داده شده است.

View File

@ -43,7 +43,7 @@ def main_train(model):
#آدرس فایل دیتاست اینجا تنظیم شود #آدرس فایل دیتاست اینجا تنظیم شود
corpus = ColumnCorpus(data_folder, columns, corpus = ColumnCorpus(data_folder, columns,
#train_file = 'peyma_train.txt') #train_file = 'peyma_train.txt')
train_file = 'DATASET140402_no_aref2.txt', # qavanin 36K tokens train_file = 'DATASET140402_ref_org_filtered.txt', # qavanin 36K tokens
# test_file = 'test_ds_new.txt', # test 110 sections - 6.7K # test_file = 'test_ds_new.txt', # test 110 sections - 6.7K
#dev_file = 'dev split 2.txt' #dev_file = 'dev split 2.txt'
#max_sentence_length=500 #max_sentence_length=500