data_processes/readme/readme-classifier-fa.md
2025-08-16 15:14:27 +03:30

3.6 KiB

اسکریپت کلاسیفیکیشن سکشن‌های قانون

این پروژه شامل یک اسکریپت پایتون (p1_classifier.py) برای کلاسبندی بخش‌های متنی با استفاده از یک مدل ترنسفورمر آموزش‌دیده است. این اسکریپت برای پیشنهاد مرتبط‌ترین کلاس‌ها برای هر بخش از متن طراحی شده و برای اسناد حقوقی، دسته‌بندی محتوا و وظایف مشابه در پردازش زبان طبیعی (NLP) کاربرد دارد.

پیش‌نیازها

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

pip install transformers pandas

همچنین به یک مدل کلاسیفیکیشن آموزش‌دیده و توکنایزر آن نیاز دارید. مسیر مدل (model_checkpoint) را در اسکریپت به مدل خودتان تغییر دهید.

نحوه عملکرد

  • اسکریپت یک مدل ترنسفورمر آموزش‌دیده را برای کلاسیفیکیشن متن بارگذاری می‌کند.
  • هر بخش از متن را پردازش می‌کند و در صورت طولانی بودن متن، آن را به پنجره‌هایی تقسیم می‌کند تا با اندازه ورودی مدل سازگار شود.
  • برای هر بخش، بهترین کلاس‌ها را پیش‌بینی و نتایج را ذخیره می‌کند.

توابع اصلی

  • get_class(sentences, top_k=4): یک جمله یا متن را کلاسیفای می‌کند و برترین کلاس‌ها را برمی‌گرداند.
  • mean_classes(input_classes): نتایج کلاس‌بندی چند پنجره از یک متن طولانی را تجمیع می‌کند.
  • get_window_classes(text): تقسیم متن‌های طولانی به پنجره و تجمیع نتایج کلاسیفیکیشن آن‌ها را مدیریت می‌کند.
  • single_section_classification(id, section_source): یک بخش را کلاسبندی کرده و بهترین و سایر کلاس‌های پیشنهادی را برمی‌گرداند.
  • do_classify(sections): همه بخش‌ها را کلاسیفای کرده و نتایج را در یک فایل JSON ذخیره می‌کند.

مثال استفاده

فرض کنید داده‌های بخش‌های شما به صورت دیکشنری زیر است:

sections = {
    "1": {"content": "متن بخش اول", "other_info": {"full_path": "..."}, "qanon_title": "..."},
    "2": {"content": "متن بخش دوم", "other_info": {"full_path": "..."}, "qanon_title": "..."}
}

می‌توانید همه بخش‌ها را به شکل زیر کلاسبندی کنید:

from p1_classifier import do_classify

result = do_classify(sections)

پس از اجرا، نتایج در یک فایل JSON در مسیر ./data/classification/ ذخیره می‌شود.

ساختار خروجی

برای هر بخش، یک فیلد جدید به نام ai_codes با نتایج کلاسیفیکیشن اضافه می‌شود:

"1": {
  "content": "متن بخش اول",
  "ai_codes": {
    "best-class": {"label": "ClassA", "score": 0.85},
    "other-classes": [
      {"label": "ClassB", "score": 0.10},
      {"label": "ClassC", "score": 0.05}
    ]
  }
}

نکات

  • مطمئن شوید مسیر مدل (model_checkpoint) صحیح است و فایل‌های مدل در دسترس هستند.
  • فایل خروجی JSON در مسیر ./data/classification/ ذخیره خواهد شد.