.vscode | ||
data | ||
images | ||
log | ||
ner_api | ||
resource | ||
trained | ||
.gitignore | ||
al_ner.py | ||
check_tokenizer.py | ||
classifier.py | ||
data_helper.py | ||
do_ner_for_list_of_sections.py | ||
do_ner_reg.py | ||
do_ner_task.py | ||
evaluate_model.py | ||
find_law.py | ||
flair_fine_tune.py | ||
flair_linker.py | ||
funcs.py | ||
functions.py | ||
general_functions.py | ||
inf2.py | ||
inference.py | ||
mail.py | ||
ner_proccess.py | ||
normalizer.py | ||
old-README.md | ||
README.md | ||
relation_update.py | ||
relation.py | ||
requierments.txt | ||
services.py | ||
similarity.py | ||
sp_ner.py | ||
temp.py | ||
test_inf.py | ||
test.py | ||
tokenizer.py | ||
train_comments.txt | ||
train_log_plotter.py | ||
train_main.bash | ||
train.py |
آموزش مدل 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"
) - خروجی: مقدار بولین (موفقیت یا شکست)
- عملکرد:
- بارگذاری دادهها و آمادهسازی فرهنگ برچسبها
- بارگذاری و پیکربندی embeddingها
- ایجاد مدل NER با SequenceTagger
- آموزش مدل با استفاده از Flair ModelTrainer
- ذخیره مدل و نتایج آموزش
- تست مدل روی داده جدید
- ارزیابی عملکرد و محاسبه F1
اجرای آموزش
برای آموزش مدل، کافی است کد اصلی اجرا شود:
python train.py
مدل خروجی در پوشه ./taggers/
ذخیره خواهد شد. نام مدل شامل تاریخ و ساعت آموزش است.
سناریوی تست
پس از پایان آموزش:
- یک تست سریع روی یک ورودی ساده با استفاده از
inference.py
انجام میشود. - ارزیابی مدل با
evaluate_model.py
اجرا میشود. - نتایج در فایل
test-result.txt
ذخیره میگردد.
خروجیها
- مدل آموزشدیده در پوشه
./taggers/
- فایل
test-result.txt
شامل نتایج آموزش و ارزیابی - لاگ آموزش برای رسم نمودار
نکات مهم
- این کد برای دادههای حقوقی طراحی شده است اما میتوان آن را روی سایر دادههای فارسی نیز استفاده کرد.
- در صورت قطع آموزش، اجرای دوباره فرآیند باعث ایجاد مدل جدید با نام متفاوت میشود.
- برای بهبود نتایج، میتوانید:
- نرخ یادگیری (Learning Rate) را تغییر دهید.
- سایز مینیبچ (Mini Batch Size) را بزرگتر کنید.
- تعداد epochها را افزایش دهید.
توسعهدهندگان
این پروژه با هدف پردازش زبان طبیعی فارسی در حوزه حقوقی توسعه داده شده است.