# اسکریپت کلاسیفیکیشن سکشن‌های قانون این پروژه شامل یک اسکریپت پایتون (`p1_classifier.py`) برای کلاسبندی بخش‌های متنی با استفاده از یک مدل ترنسفورمر آموزش‌دیده است. این اسکریپت برای پیشنهاد مرتبط‌ترین کلاس‌ها برای هر بخش از متن طراحی شده و برای اسناد حقوقی، دسته‌بندی محتوا و وظایف مشابه در پردازش زبان طبیعی (NLP) کاربرد دارد. ## پیش‌نیازها قبل از استفاده از این اسکریپت، کتابخانه‌های زیر را نصب کنید: ```bash 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 ذخیره می‌کند. ## مثال استفاده فرض کنید داده‌های بخش‌های شما به صورت دیکشنری زیر است: ```python sections = { "1": {"content": "متن بخش اول", "other_info": {"full_path": "..."}, "qanon_title": "..."}, "2": {"content": "متن بخش دوم", "other_info": {"full_path": "..."}, "qanon_title": "..."} } ``` می‌توانید همه بخش‌ها را به شکل زیر کلاسبندی کنید: ```python from p1_classifier import do_classify result = do_classify(sections) ``` پس از اجرا، نتایج در یک فایل JSON در مسیر `./data/classification/` ذخیره می‌شود. ## ساختار خروجی برای هر بخش، یک فیلد جدید به نام `ai_codes` با نتایج کلاسیفیکیشن اضافه می‌شود: ```json "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/` ذخیره خواهد شد.