Flair_NER/readme-train.md

105 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# آموزش مدل 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ها را افزایش دهید.
---
## توسعه‌دهندگان
این پروژه با هدف پردازش زبان طبیعی فارسی در حوزه حقوقی توسعه داده شده است.