add readme and update ds
This commit is contained in:
parent
6708cd4133
commit
8b789db37c
104
readme-train.md
Normal file
104
readme-train.md
Normal 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ها را افزایش دهید.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## توسعهدهندگان
|
||||||
|
این پروژه با هدف پردازش زبان طبیعی فارسی در حوزه حقوقی توسعه داده شده است.
|
2
train.py
2
train.py
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user