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

3.7 KiB

اسکریپت کلاسبندی سکشن‌ها

این پروژه شامل یک اسکریپت پایتون (classification.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 classification 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/ ذخیره خواهد شد.