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