Go to file
2025-08-21 17:31:56 +03:30
.vscode send Flair project to git2 2024-09-18 20:05:06 +03:30
data just ref and org dataset 2025-08-19 18:03:20 +03:30
images Add a picture of project structure to README.md file 2025-06-30 18:07:21 +03:30
log اضافه شدن دیتاست تست - نسخه اولیه 2025-07-14 16:32:11 +03:30
ner_api ner regulation latest edits 2024-12-01 18:33:40 +03:30
resource send Flair project to git2 2024-09-18 20:05:06 +03:30
trained plot loss diagram + ds editions + ... 2025-07-20 16:35:35 +03:30
.gitignore Merge branch 2025-07-22 16:29:52 +03:30
al_ner.py send Flair project to git2 2024-09-18 20:05:06 +03:30
check_tokenizer.py send Flair project to git2 2024-09-18 20:05:06 +03:30
classifier.py send Flair project to git2 2024-09-18 20:05:06 +03:30
data_helper.py send Flair project to git2 2024-09-18 20:05:06 +03:30
do_ner_for_list_of_sections.py ner regulation latest edits 2024-12-01 18:33:40 +03:30
do_ner_reg.py ner regulation latest edits 2024-12-01 18:33:40 +03:30
do_ner_task.py send Flair project to git2 2024-09-18 20:05:06 +03:30
evaluate_model.py edit dataset 2025-07-22 20:41:44 +03:30
find_law.py ner regulation latest edits 2024-12-01 18:33:40 +03:30
flair_fine_tune.py send Flair project to git2 2024-09-18 20:05:06 +03:30
flair_linker.py send Flair project to git2 2024-09-18 20:05:06 +03:30
funcs.py اضافه شدن دیتاست تست - نسخه اولیه 2025-07-14 16:32:11 +03:30
functions.py send Flair project to git2 2024-09-18 20:05:06 +03:30
general_functions.py send Flair project to git2 2024-09-18 20:05:06 +03:30
inf2.py send Flair project to git2 2024-09-18 20:05:06 +03:30
inference.py remove some test files 2025-07-23 15:04:17 +03:30
mail.py send Flair project to git2 2024-09-18 20:05:06 +03:30
ner_proccess.py ner regulation latest edits 2024-12-01 18:33:40 +03:30
normalizer.py remove some test files 2025-07-23 15:04:17 +03:30
old-README.md rename readme files 2025-08-21 15:12:06 +03:30
README.md rename readme files 2025-08-21 15:12:06 +03:30
relation_update.py ner regulation latest edits 2024-12-01 18:33:40 +03:30
relation.py send Flair project to git2 2024-09-18 20:05:06 +03:30
requierments.txt insert some comments in code 2025-08-17 15:23:20 +03:30
services.py send Flair project to git2 2024-09-18 20:05:06 +03:30
similarity.py send Flair project to git2 2024-09-18 20:05:06 +03:30
sp_ner.py send Flair project to git2 2024-09-18 20:05:06 +03:30
temp.py try to train old orgcatorg model 2025-07-17 16:44:16 +03:30
test_inf.py send Flair project to git2 2024-09-18 20:05:06 +03:30
test.py send Flair project to git2 2024-09-18 20:05:06 +03:30
tokenizer.py Remove additional [] in two regex codes where doens't needed! 2025-06-30 18:24:43 +03:30
train_comments.txt ner documentation 2025-08-17 16:55:36 +03:30
train_log_plotter.py ner documentation 2025-08-17 16:55:36 +03:30
train_main.bash ایجاد بش و تغییرات جزئی 2025-03-08 16:29:17 +03:30
train.py comment 2025-08-21 17:31:56 +03:30

آموزش مدل NER فارسی با Flair

این پروژه برای آموزش یک مدل تشخیص موجودیت‌های نامدار (NER) روی داده‌های حقوقی به زبان فارسی طراحی شده است.
کد موجود از کتابخانه Flair برای آموزش و ریزتنظیم (Fine-tune) مدل‌های مبتنی بر ترانسفورمر استفاده می‌کند.


ویژگی‌ها

  • پشتیبانی از زبان فارسی
  • استفاده از مدل‌های از پیش آموزش‌دیده (Pretrained Transformers)
  • ذخیره نتایج آموزش و ارزیابی به صورت فایل
  • قابلیت تست مدل آموزش‌دیده روی داده‌های جدید

پیش‌نیازها

قبل از اجرای کد، نیاز است پکیج‌های زیر نصب شده باشند:

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

اجرای آموزش

برای آموزش مدل، کافی است کد اصلی اجرا شود:

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ها را افزایش دهید.

توسعه‌دهندگان

این پروژه با هدف پردازش زبان طبیعی فارسی در حوزه حقوقی توسعه داده شده است.