From c75fc375defcc93886619fead4256b53b5482549 Mon Sep 17 00:00:00 2001 From: init_mahdi Date: Wed, 20 Aug 2025 17:50:19 +0330 Subject: [PATCH] some editions on classification algorithm --- data/classification-test-dataset.txt | 25 ++++ data/gold_sections_classes.txt | 202 +++++++++++++++++++++++++++ data/gold_test_sections.txt | 32 +++++ get_gold_sections_classes.py | 139 ++++++++++++++++++ sections_window_3.py | 30 ++-- 5 files changed, 418 insertions(+), 10 deletions(-) create mode 100644 data/classification-test-dataset.txt create mode 100644 data/gold_sections_classes.txt create mode 100644 data/gold_test_sections.txt create mode 100644 get_gold_sections_classes.py diff --git a/data/classification-test-dataset.txt b/data/classification-test-dataset.txt new file mode 100644 index 0000000..19545e9 --- /dev/null +++ b/data/classification-test-dataset.txt @@ -0,0 +1,25 @@ +id: qs895753 *** 'آموزش و پرورش' +id: qs3024418 *** 'حمل و نقل' +id: qs919411 *** 'آموزش عالی، پژوهش و فناوری' +id: qs3012247 *** 'حمل و نقل' +id: qs894826 *** 'آمار، برنامه و بودجه' +id: qs2652755 *** 'مسکن و شهرسازی' +id: qs3080193 *** 'برق و انرژیهای نوین' +id: qs939369 *** 'اموال و معاملات دولتی' +id: qs894037 *** 'آموزش عالی، پژوهش و فناوری' +id: qs1043309 *** 'اداری و استخدامی' +id: qs1555153 *** 'خانواده' +id: qs201910*** 'کشاورزی و دامپروری' +id: qs1636663 *** 'اداری و استخدامی' +id: qs1704019 *** 'خانواده' +id: qs1023813 *** 'انتخابات' +id: qs1860928 *** 'اطلاعات و امنیت' +id: qs925237 *** 'آمار، برنامه و بودجه' +id: qs885382 *** 'تقسیمات کشوری و مدیریت محلی' +id: qs981664 *** 'سلامت' +id: qs2699369 *** 'بانکداری' +id: qs929738 *** 'آموزش عالی، پژوهش و فناوری' +id: qs2580013 *** 'آموزش عالی، پژوهش و فناوری' +id: qs2964496 *** 'نظام قانون\u200cگذاری' +id: qs898204 *** 'میراث فرهنگی و گردشگری' +id: qs886389 *** 'نفت و گاز' \ No newline at end of file diff --git a/data/gold_sections_classes.txt b/data/gold_sections_classes.txt new file mode 100644 index 0000000..39a6cd6 --- /dev/null +++ b/data/gold_sections_classes.txt @@ -0,0 +1,202 @@ +order: 1 +id: qs1024032 +content: 5 - قضات دادگستری +best-class: {'label': 'تشکیلات و امور اداری قوه قضائیه', 'score': 0.9936880469322205} +other-classes: [{'label': 'تعزیرات حکومتی', 'score': 0.0005375723703764379}, {'label': 'کار', 'score': 0.0003763712593354285}, {'label': 'فرهنگ و هنر', 'score': 0.00034181258524768054}] + +order: 2 +id: qs895753 +content: پیشنهاد اصلاح اساسنامۀ باشگاه دانش‏پژوهان جوان (موضوع مصوبۀ شمارۀ 1696/دش مورخ 73/08/29 شورایعالی) مطرح و بدین شرح به تصویب رسید: +ماده 1 - باشگاه دانش‏ پژوهان جوان موسسه‏ای است آموزشی و پژوهشی و فرهنگی وابسته به وزارت آموزش و پرورش که با هدف شناسایی، جذب، پرورش، حمایت و هدایت دانش ‏آموزان و جوانان با استعداد کشور و اعتلای سطح آموزش و پرورش آنان از طریق تشکل بخشیدن به آنها در قالب گروههای پژوهشی و علمی تشکیل می‏گردد. (تبصرۀ مادۀ 1 به قوت خود باقی است) +- تبصرۀ مادۀ 11 اساسنامه حذف شود. +- دربارۀ مادۀ 13 مقرر شد تا تصویب «باشگاه دانش‏ پژوهان جوان» در شورای گسترش وزارت فرهنگ و آموزش‏عالی به عنوان موسسه‏ای تحقیقاتی، از نظر مقررات مالی همچون گذشته عمل شود. +best-class: {'label': 'آموزش و پرورش', 'score': 0.9785683751106262} +other-classes: [{'label': 'آموزش عالی، پژوهش و فناوری', 'score': 0.002475192304700613}, {'label': 'ورزش', 'score': 0.001294066896662116}, {'label': 'فرهنگ و هنر', 'score': 0.001037139561958611}] + +order: 3 +id: qs3024418 +content: ماده واحده - پروتکل مربوط به تشکیل شرکت سهامی مختلط امور حمل و نقل ایران و شوروی مشتمل بر یک مقدمه و سیزده ماده و یک نامه ضمیمه ‌که در تاریخ هشتم مردادماه 1349 مطابق با سی ‌ام ژوئیه 1970 در مسکو بامضاء نمایندگان دولتین رسیده تصویب و بدولت اجازه داده میشود مفاد‌ آنرا بمورد اجرا بگذارد. +best-class: {'label': 'حمل و نقل', 'score': 0.9908697009086609} +other-classes: [{'label': 'تجارت', 'score': 0.00076713552698493}, {'label': 'محیط زیست', 'score': 0.0006402519065886736}, {'label': 'مسکن و شهرسازی', 'score': 0.0006220400100573897}] + +order: 4 +id: qs919411 +content: ‌تبصره 1 - حقوق و مزایای اعضای هیأت علمی موضوع این قانون در صورتی که در دانشگاهها و موسسات آموزش عالی و پژوهشی خدمت نمایند‌ پس از طی دوره آموزش نظامی همانند سایر اعضای هیأت علمی محاسبه و از محل اعتبارات موسسه مربوط قابل پرداخت خواهد بود. دانشگاهها و‌مراکز آموزش عالی واقع در شهرستانهای غیر مرکز استان در استفاده از این نیروها از اولویت برخوردارند. +best-class: {'label': 'آموزش عالی، پژوهش و فناوری', 'score': 0.8389497399330139} +other-classes: [{'label': 'اداری و استخدامی', 'score': 0.12465595453977585}, {'label': 'ایثـارگران', 'score': 0.0026076962240040302}, {'label': 'مناطق آزاد و ویژه اقتصادی', 'score': 0.0021536240819841623}] + +order: 5 +id: qs3012247 +content: تبصره 1 - وظایف شورای هماهنگی ترافیک شهرستان و دبیرخانه آن، همچنین نحوه همکاری آن با شورای عالی هماهنگی ترافیک شهرهای کشور و شوراهای هماهنگی ترافیک استانها بر اساس آئین ‌نامه ‌ای خواهد بود که ظرف سه ماه توسط وزارت کشور و شورای عالی استانها تهیه و به تصویب هیأت وزیران می‌ رسد. +best-class: {'label': 'مسکن و شهرسازی', 'score': 0.39368194341659546} +other-classes: [{'label': 'حمل و نقل', 'score': 0.20601120591163635}, {'label': 'محیط زیست', 'score': 0.07463714480400085}, {'label': 'امور زیربنایی', 'score': 0.03668901324272156}] + +order: 6 +id: qs894826 +content: تبصره - دولت می‌ تواند متناسب با فعالیتهای درآمدی دستگاههای ذینفع اعتبارات مناسبی را در لوایح بودجه سالانه منظور نماید. +best-class: {'label': 'اموال و معاملات دولتی', 'score': 0.6347440481185913} +other-classes: [{'label': 'محاسبات عمومی', 'score': 0.06317967176437378}, {'label': 'تجارت', 'score': 0.04739636927843094}, {'label': 'آمار، برنامه و بودجه', 'score': 0.030551262199878693}] + +order: 7 +id: qs1036224 +content: ضمیمه اول +‌آرژانتین - آنگولا - اکوادر - الجزایر - اندونزی - اروگوئه - جمهوری اسلامی ایران - برزیل - بنگلادش - بنین - بولیوی - پاکستان - پرو – تانزانیا (‌جمهوری متحده) - تایلند - تونس - ترینیداد و توباگو - رومانی - زئیر - زیمبابوه - سریلانکا- سنگاپور - سودان - شیلی - عراق - غنا - فیلیپین -‌قطر - کامرون - کره جنوبی - کره شمالی (‌ جمهوری دمکراتیک مردمی) - کلمبیا - کوبا - گویان - گینه - لیبی - مالزی - مراکش - مصر - مکزیک -‌موزامبیک - نیجریه - نیکاراگوئه - ونزوئلا - ویتنام – هائی تی - هند - یوگسلاوی. +best-class: {'label': 'تجارت', 'score': 0.9575574398040771} +other-classes: [{'label': 'پولی و مالی', 'score': 0.005103009752929211}, {'label': 'حمل و نقل', 'score': 0.00494770472869277}, {'label': 'مناطق آزاد و ویژه اقتصادی', 'score': 0.004427825100719929}] + +order: 8 +id: qs2652755 +content: تبصره: مقررات فوق ناظر بر اراضی موضوع قانون تأیید واگذاریهای انجام شده توسط بنیاد مسکن انقلاب مصوب 13 /11 /58 میباشد. مشرو ط بر آنکه تاریخ پرداخت وجه طبق فیش بانکی حداکثر پایان اردیبهشت ماه 59 باشد، ضمنا در مورد اراضی واگذاری قبلی سازمانهای عمران اراضی شهری و همچنین تعیین معوض اراضی موضوع ماده 14 آئین نامه اجرائی قانون لغو مالکیت اراضی موات شهری و کیفت عمران آن و قانون اصلاحی ماده یاد شده نیز بترتیب مذکور در ماده فوق عمل خواهد شد. +best-class: {'label': 'مسکن و شهرسازی', 'score': 0.9794384241104126} +other-classes: [{'label': 'اموال و معاملات دولتی', 'score': 0.0016063132788985968}, {'label': 'فناوری اطلاعات و ارتباطات', 'score': 0.0015609604306519032}, {'label': 'کشاورزی و دامپروری', 'score': 0.0014219852164387703}] + +order: 9 +id: qs2241523 +content: نظر مجلس +‌ماده واحده - با عنایت به عموم ماده 5 قانون تبدیل شورای سرپرستی زندانها و اقدامات تأمینی و تربیتی کشور به سازمان زندانها و اقدامات تأمینی ‌و تربیتی کشور، مقصود از کلیه اموال غیر منقول، اعم از ساختمانهایی است که بعنوان زندان ساخته شده یا به این عنوان از آنها استفاده می‌ شده است. +best-class: {'label': 'کیفـری', 'score': 0.1623004823923111} +other-classes: [{'label': 'آیین دادرسی کیفری', 'score': 0.09142013639211655}, {'label': 'تعـاون', 'score': 0.07426134496927261}, {'label': 'منابع طبیعی', 'score': 0.05868076905608177}] + +order: 10 +id: qs939369 +content: تبصره 2 - حد نصابهای تعیین شده در موارد فوق متناسب با شرایط اقتصاد کشور و هماهنگ با نصابهای معاملات دولتی بنا به پیشنهاد وزارت کشور و‌با تصویب هیأت‌وزیران قابل تجدید نظر خواهد بود. +best-class: {'label': 'مسکن و شهرسازی', 'score': 0.985668420791626} +other-classes: [{'label': 'اموال و معاملات دولتی', 'score': 0.0013458902249112725}, {'label': 'امور زیربنایی', 'score': 0.0010483317309990525}, {'label': 'اطلاعات و امنیت', 'score': 0.0007038169424049556}] + +order: 11 +id: qs894037 +content: تبصره: تأیید صلاحیت عضویت افرادی که به نمایندگی از دستگاهها و مجلس شورای‏اسلامی برای عضویت در مراکز و شوراهای وابسته معرفی می‏شوند نیازی به‏طرح در شورای عالی ندارد. این‏گونه موارد با هماهنگی دبیر و رییس محترم‏شورای عالی - پس از احراز صلاحیت آنها توسط دبیرخانه از طریق مراجع‏ذی‏ربط - انجام گیرد. +best-class: {'label': 'آموزش عالی، پژوهش و فناوری', 'score': 0.7279283404350281} +other-classes: [{'label': 'اداری و استخدامی', 'score': 0.11383017152547836}, {'label': 'ایثـارگران', 'score': 0.016386963427066803}, {'label': 'انتخابات', 'score': 0.01536906324326992}] + +order: 12 +id: qs1043309 +content: تبصره 3 هیئتهای پنج نفری مذکور در این ماده میتوانند بعنوان مجازات سابقه خدمت مستخدمین را بازخرید و مستخدم مزبور را از خدمت دولت معاف کنند پرداخت وجوه در ازاء بازخرید خدمت بمستخدمین مشمول قانون استخدام کشوری و مستخدمینی که مقررات خاص در مورد نحوه بازخرید ندارند بترتیب مذکور در تبصره های ذیل ماده 120 قانون استخدام کشوری و در مورد سایر مستخدمین طبق مقررات خاص خود خواهد بود. +مفاد این تبصره در مورد کارمندانیکه قبلا بموجب آراء صادره هیئتهای پنج نفری مأمور تصفیه و پاکسازی محکوم ببازخرید ایام خدمت شده‌اند نافذ میباشد. +best-class: {'label': 'اداری و استخدامی', 'score': 0.9799197316169739} +other-classes: [{'label': 'اموال و معاملات دولتی', 'score': 0.003143214387819171}, {'label': 'ایثـارگران', 'score': 0.0014693601988255978}, {'label': 'کار', 'score': 0.0009028274216689169}] + +order: 13 +id: qs1555153 +content: تبصره 1 - نحوه دعوت از حکمین و بررسی صلاحیت آنان به عهده دادگاه مدنی خاص است که آئین نامه اجرایی آن ظرف 2 ماه توسط وزیر دادگستری تهیه و به تصویب رئیس قوه قضائیه خواهد رسید. +best-class: {'label': 'خانواده', 'score': 0.8886982202529907} +other-classes: [{'label': 'آیین دادرسی مدنی و اداری', 'score': 0.019389772787690163}, {'label': 'مـدنـی', 'score': 0.011339542455971241}, {'label': 'تعزیرات حکومتی', 'score': 0.008396834135055542}] + +order: 14 +id: qs894807 +content: 1 - شهرستان گرگان به مرکزیت شهر گرگان، شامل بخشهای مرکزی و آق‌قلا. +best-class: {'label': 'کشاورزی و دامپروری', 'score': 0.20565259456634521} +other-classes: [{'label': 'میراث فرهنگی و گردشگری', 'score': 0.10298358649015427}, {'label': 'تشکیلات و امور اداری قوه قضائیه', 'score': 0.10118027031421661}, {'label': 'تقسیمات کشوری و مدیریت محلی', 'score': 0.09374698996543884}] + +order: 15 +id: qs2737382 +content: تبصره [ 1 ] - دولت می تواند در موارد استثنائی ترتیب خاصی بدهد. +best-class: {'label': 'حمل و نقل', 'score': 0.6126694679260254} +other-classes: [{'label': 'اطلاعات و امنیت', 'score': 0.15505856275558472}, {'label': 'اموال و معاملات دولتی', 'score': 0.054363448172807693}, {'label': 'آیین دادرسی مدنی و اداری', 'score': 0.012153551913797855}] + +order: 16 +id: qs1636663 +content: تبصره 9 - کارگاههائی که مشمول کار باشند بایستی با معرفی واحدهای کاریابی و یا ادارات کار و امور اجتماعی و رعایت مقررات مربوطه نسبت به ‌استخدام افراد مذکور در این قانون اقدام نمایند. +best-class: {'label': 'ایثـارگران', 'score': 0.9862115383148193} +other-classes: [{'label': 'خانواده', 'score': 0.0010673332726582885}, {'label': 'اداری و استخدامی', 'score': 0.0008830614387989044}, {'label': 'اطلاعات و امنیت', 'score': 0.0006059008301235735}] + +order: 17 +id: qs1704019 +content: ماده 1 - به پیروی از تعالیم عالیه اسلام در جهت حفظ شوون و حقوق اجتماعی زن و کودک بی‌ سرپرست و زدودن آثار فقر از جامعه اسلامی و به ‌منظور اجرای قسمتی از اصل بیست و یکم قانون اساسی جمهوری اسلامی ایران، زنان و کودکان بی‌ سرپرستی که تحت پوشش قوانین حمایتی دیگری ‌نیستند از حمایتهای مقرر در این قانون بهره ‌مند خواهند شد. +best-class: {'label': 'خانواده', 'score': 0.8300579786300659} +other-classes: [{'label': 'تعـاون', 'score': 0.029214369133114815}, {'label': 'ایثـارگران', 'score': 0.020942725241184235}, {'label': 'امور زیربنایی', 'score': 0.00866091251373291}] + +order: 18 +id: qs1023813 +content: تبصره 3 - مهلت مقرر در تبصره 1 ماده فوق برای اولین مرحلۀ دوره دوم مجلس، یکماه قبل از روز اخذ رأی میباشد. +best-class: {'label': 'انتخابات', 'score': 0.9870384931564331} +other-classes: [{'label': 'نظام قانون\u200cگذاری', 'score': 0.0006976411677896976}, {'label': 'تشکل\u200cهای مدنی و احزاب', 'score': 0.000589211646001786}, {'label': 'آموزش عالی، پژوهش و فناوری', 'score': 0.0005724469665437937}] + +order: 19 +id: qs1988520 +content: 9 درخواست مبتنی براطلاعات مربوطه باید به مدیرکل تسلیم شود و او باید آنرا فورا» به شورای اجرایی و کلیه دولتهای عضو ارسال دارد. مدیرکل‌باید درخواست را بلادرنگ ظرف مدت حداکثر ( 12 ) ساعت پس از دریافت آن، برای دولتهای عضوی ارسال نماید که براساس قسمتهای (ب) و (پ) ‌بند ( 7 ) داوطلب ارسال کمکهای اضطراری درصورت کاربرد سلاحهای شیمیایی و یا استفاده از عوامل کنترل شیمیایی و یا استفاده از عوامل کنترل‌اغتشاش به‌عنوان یک روش جنگی شده یا درصورت تهدید جدی به کاربرد سلاحهای شیمیایی و یا تهدید جدی به کاربرد عوامل کنترل اغتشاش‌به‌عنوان یک روش جنگی علیه دولت عضو مربوطه داوطلب ارسال کمکهای انسان‌دوستانه گردیده‌اند، مدیرکل حداکثر ظرف مدت ( 24 ) ساعت بعد از‌دریافت درخواست، باید تحقیقی را برای فراهم‌آوردن اساس اقدامات بعدی آغاز نماید. تحقیقات او ظرف مدت ( 72 ) ساعت باید کامل گردد و گزارش‌مربوطه را به شورای اجرایی ارسال دارد. درصورت احتیاج به زمان بیشتر برای تکمیل تحقیقات، یک گزارش موقت در همین چهارچوب زمانی تقدیم‌می‌گردد. زمان اضافی مورد لزوم برای تحقیقات نباید از ( 72 ) ساعت تجاوز نماید. به‌هرحال ممکن‌است زمان تحقیق در دوره‌های مشابه تمدید شود.‌گزارشها در پایان هر دوره اضافی به شورای اجرایی تقدیم می‌شود. تحقیق باید متناسب و منطبق با درخواست و اطلاعات همراه درخواست، حقایق‌مربوط به درخواست و همچنین نوع و دامنه کمکهای تکمیلی و حفاظتهای مورد نیاز را مشخص کند. +best-class: {'label': 'اطلاعات و امنیت', 'score': 0.8202729821205139} +other-classes: [{'label': 'اموال و معاملات دولتی', 'score': 0.028806520625948906}, {'label': 'نظام قانون\u200cگذاری', 'score': 0.018009236082434654}, {'label': 'آیین دادرسی مدنی و اداری', 'score': 0.016855143010616302}] + +order: 20 +id: qs925237 +content: ‌الف - ماده واحده قانون سال 1352 کل کشور بشرح زیر اصلاح می‌شود: +‌بودجه سال 1352 کل کشور از حیث درآمدها و سایر منابع تأمین اعتبار بالغ بر هشتصد و بیست و چهار میلیارد و چهارصد و هفده میلیون و ششصد و‌شانزده هزار ( 000 ر 616 ر 417 ر 824 ) ریال و از حیث هزینه و سایر پرداختها بالغ بر هشتصد و بیست و چهار میلیارد و چهارصد هفده میلیون و ششصد و‌شانزده هزار ( 000 ر 616 ر 417 ر 824 ) ریال می‌باشد. +‌بودجه عمومی دولت که از لحاظ درآمدها و سایر منابع تأمین اعتبار بالغ بر پانصد و نود و هشت میلیارد و هشتصد و بیست و چهار میلیون و هشتصد و‌دوازده هزار ( 000 ر 812 ر 824 ر 598 ) ریال و از حیث هزینه‌ها و سایر پرداختها بالغ بر پانصد و نود و هشت میلیارد و هشتصد و بیست و چهار میلیون و‌هشتصد و دوازده هزار ( 000 ر 812 ر 824 ر 598 ) ریال و بشرح زیر است: + 1 - درآمد عمومی سایر منابع تأمین اعتبار بالغ بر پانصد و هشتاد میلیارد و چهار صد و شش میلیون و پانصد و نوزده هزار ( 000 ر 519 ر 406 ر 580 ) ریال ‌و هزینه‌ها و سایر پرداختها از آن محل بالغ بر پانصد و هشتاد میلیارد و چهار صد و شش میلیون و پانصد و نوزده هزار ( 000 ر 519 ر 406 ر 580 ) ریال. + 2 - درآمد اختصاصی وزارتخانه‌ها و موسسات دولتی بالغ بر هجده میلیارد و چهارصد و هجده میلیون و دویست و نود و سه هزار( 000 ر 293 ر 418 ر 18 ) ریال و هزینه‌ها و سایر پرداختها از آن محل بالغ بر هجده میلیارد و چهارصد و هجده میلیون و دویست و نود و سه هزار( 000 ر 293 ر 418 ر 18 ) ریال. +best-class: {'label': 'آمار، برنامه و بودجه', 'score': 0.9796839952468872} +other-classes: [{'label': 'محاسبات عمومی', 'score': 0.0022507922258228064}, {'label': 'میراث فرهنگی و گردشگری', 'score': 0.0011779657797887921}, {'label': 'رسانه', 'score': 0.0010122130624949932}] + +order: 21 +id: qs885382 +content: تبصره 1 - با انتزاع واحدها و شهرستانهای فوق از محدوده استان تهران و زنجان پرسنل سازمانی، وسایل و تجهیزات، بودجه و اعتبارات مربوط،‌به تناسب جمعیت و وضعیت جغرافیایی از محل امکانات قبلی کسر و به استان جدید منتقل می‌شود و اختصاص می‌یابد. ‌معاون اول رییس جمهور، وزرای کشور و امور اقتصادی و دارایی و روسای سازمانهای برنامه و بودجه و امور اداری و استخدامی کشور مسوول اجرای‌مفاد این تبصره خواهند بود. +best-class: {'label': 'کشاورزی و دامپروری', 'score': 0.28908875584602356} +other-classes: [{'label': 'اداری و استخدامی', 'score': 0.1020994633436203}, {'label': 'امور زیربنایی', 'score': 0.07972121238708496}, {'label': 'مسکن و شهرسازی', 'score': 0.07309729605913162}] + +order: 22 +id: qs999331 +content: 1 - وزارتخانه‌ها و موسسات دولتی؛ +best-class: {'label': 'مالیات', 'score': 0.9911735653877258} +other-classes: [{'label': 'پولی و مالی', 'score': 0.0009133800049312413}, {'label': 'محاسبات عمومی', 'score': 0.0005396906635724008}, {'label': 'تقسیمات کشوری و مدیریت محلی', 'score': 0.00035485552507452667}] + +order: 23 +id: qs887945 +content: نام مرکز: +best-class: {'label': 'آموزش عالی، پژوهش و فناوری', 'score': 0.6824318766593933} +other-classes: [{'label': 'فرهنگ و هنر', 'score': 0.06635166704654694}, {'label': 'امور زیربنایی', 'score': 0.03761739283800125}, {'label': 'ایثـارگران', 'score': 0.014147119596600533}] + +order: 24 +id: qs2305848 +content: فصل اول - کلیات +best-class: {'label': 'مصرف', 'score': 0.9955117106437683} +other-classes: [{'label': 'برق و انرژی\u200cهای نو', 'score': 0.00021697655029129237}, {'label': 'امور زیربنایی', 'score': 0.0002139043645001948}, {'label': 'نظام قانون\u200cگذاری', 'score': 0.00019090221030637622}] + +order: 25 +id: qs997880 +content: تبصره 1 - مرتکب هر یک از جرائم مذکور در این ماده و ماده 2 این قانون علاوه بر کیفر مقرر جز در مورد اعدام به پرداخت جزای نقدی از بیست هزار ‌ریال تا پانصد هزار ریال و محرومیت از اشتغال بکسب یا کار مربوط به مواد خوردنی یا آشامیدنی یا آرایشی یا بهداشتی از یک تا سه سال محکوم‌ خواهد شد. +best-class: {'label': 'کیفـری', 'score': 0.3877716660499573} +other-classes: [{'label': 'تعزیرات حکومتی', 'score': 0.11834141612052917}, {'label': 'محیط زیست', 'score': 0.05056145787239075}, {'label': 'مصرف', 'score': 0.04982678219676018}] + +order: 26 +id: qs2148972 +content: تبصره 1 - شرکتهای دولتی، مشمول مقررات این ماده در خصوص پاداش هیأت مدیره نیستند و تابع حکم مقرر در ماده ( 78 ) قانون مدیریت خدمات کشوری مصوب 8 /7 /1386 می‌باشند. +best-class: {'label': 'تجارت', 'score': 0.9931759238243103} +other-classes: [{'label': 'مصرف', 'score': 0.00034431260428391397}, {'label': 'پولی و مالی', 'score': 0.00034379810676909983}, {'label': 'کشاورزی و دامپروری', 'score': 0.000342945713782683}] + +order: 27 +id: qs929738 +content: تعیین سقف پرداخت حق مدیریت اعضای هیأت علمی دانشگاهها که تصدی مسوولیتهای اجرایی را برعهده دارند با هیأت دولت باشد، آقای دکتر حسن حبیبی طی گزارشی اعلام کرد که: در هیأت دولت تصویب شد سقف پرداخت فوق‏العاده مدیریت ماهانه به روسای دانشگاهها و موسسات پژوهشی براساس سقف فوق‏العاده مدیریت رئیس دانشگاه تهران در سال 1375 تعیین شود. سپس ایشان پیشنهاد کردند سقف حق مدیریت سایر مدیران دانشگاهها (غیر از روسای دانشگاهها و موسسات پژوهشی) در هیأتهای امنای دانشگاهها تعیین شود شورایعالی با این پیشنهاد موافقت کرد. +best-class: {'label': 'آموزش عالی، پژوهش و فناوری', 'score': 0.9651615619659424} +other-classes: [{'label': 'اداری و استخدامی', 'score': 0.010950649157166481}, {'label': 'مناطق آزاد و ویژه اقتصادی', 'score': 0.001785813714377582}, {'label': 'پولی و مالی', 'score': 0.0013964155223220587}] + +order: 28 +id: qs2580013 +content: ماده 1 - تعریف: +جهاد دانشگاهی نهادی انقلابی و برخاسته از انقلاب فرهنگی است که در جهت تحقق بخشیدن به اهداف انقلاب فرهنگی در چهارچوب وظایف تعیین شده زیر نظر شورایعالی انقلاب فرهنگی فعالیت میکند. +best-class: {'label': 'آموزش عالی، پژوهش و فناوری', 'score': 0.4207766354084015} +other-classes: [{'label': 'فرهنگ و هنر', 'score': 0.3619644343852997}, {'label': 'تشکل\u200cهای مدنی و احزاب', 'score': 0.03152606263756752}, {'label': 'ایثـارگران', 'score': 0.01979743130505085}] + +order: 29 +id: qs1073335 +content: بخش دوم - موافقتنامه‌ها و آیین‌نامه‌های اجرایی جدید +best-class: {'label': 'اطلاعات و امنیت', 'score': 0.4688872694969177} +other-classes: [{'label': 'اموال و معاملات دولتی', 'score': 0.1063976064324379}, {'label': 'فناوری اطلاعات و ارتباطات', 'score': 0.09718287736177444}, {'label': 'رسانه', 'score': 0.04032469913363457}] + +order: 30 +id: qs2964496 +content: چون بعقیده هیئت وزرا پروگرامی که از طرف دولت تقدیم مجلس شورای ملی میشود باید شامل اصول اقداماتی باشد که هیئت دولت در نظر دارد و ذکر جزئیات امور را در پروگرام غیر لازم میداند علیهذا فقرات ذیل را که روس مسائل و منظورات هیئت وزراء است بعنوان پرگرام تقدیم مجلی مقدس نموده خاطر نمایندگان محترم را متوجه میسازد که در ترتیب این پرگرام از ذکر فروع و نیز از پیشنهاد نمودن اموری که بآمال و آرزو نزذیکتر از حقیقت و عمل است احتراز جسته و ضمنا ذکر چند فقره مطلب را هم که از اصول است از قبیل تأسیس مجلس سنا و شورای مملکتی و نسخ قانون بیست و سوم جوزا غیر لازم دانسته اند بواسطه اینکه در جزء پرگرام هیئت وزراء سابق بمجلس مقدس اظهار شده و نمایندگان محترم بتصویب سواد مزبوره نظر خود را معلوم داشته و هیئت وزراء حاضر هم همان نظر را تعقیب خواهند نمود بلکه یک ماده از آنرا که نسخ قانون بیست و سوم جوزاباشد قبلا بموقع عمل گذاشته اند نظر بمقدمات فوق پرگرامی که هیئت حاضره مصمم به تعقیب آن میباشند از قراری است که ذیلا بنظر نمایندگان محترم میرسد: +best-class: {'label': 'نظام قانون\u200cگذاری', 'score': 0.5771964192390442} +other-classes: [{'label': 'اموال و معاملات دولتی', 'score': 0.0801292136311531}, {'label': 'اطلاعات و امنیت', 'score': 0.07213068008422852}, {'label': 'تقسیمات کشوری و مدیریت محلی', 'score': 0.048520777374506}] + +order: 31 +id: qs898204 +content: تبصره 1 - مرجع صدور، تمدید، تعلیق یا لغو مجوز تأسیس دفاتر خدمات مسافرتی وزارت راه و شهرسازی است. +best-class: {'label': 'میراث فرهنگی و گردشگری', 'score': 0.9957190155982971} +other-classes: [{'label': 'ورزش', 'score': 0.00028117874171584845}, {'label': 'تشکل\u200cهای مدنی و احزاب', 'score': 0.00023525628785137087}, {'label': 'حمل و نقل', 'score': 0.000201720860786736}] + +order: 32 +id: qs886389 +content: ماده واحده - افزایش صدور نفت خام مندرج در بند (‌الف) تبصره ( 26 ) قانون بودجه سال 1372 کل کشور از 190000 بشکه به 285000 بشکه در‌ روز تائید می‌ گردد. ‌ +best-class: {'label': 'نفت و گاز', 'score': 0.9138221740722656} +other-classes: [{'label': 'آمار، برنامه و بودجه', 'score': 0.03165408968925476}, {'label': 'تجارت', 'score': 0.006472054403275251}, {'label': 'برق و انرژی\u200cهای نو', 'score': 0.003927542362362146}] \ No newline at end of file diff --git a/data/gold_test_sections.txt b/data/gold_test_sections.txt new file mode 100644 index 0000000..03b8289 --- /dev/null +++ b/data/gold_test_sections.txt @@ -0,0 +1,32 @@ +qs2737382 +qs894826 +qs1043309 +qs894807 +qs887945 +qs1023813 +qs1988520 +qs997880 +qs919411 +qs3012247 +qs1036224 +qs1636663 +qs1704019 +qs1555153 +qs895753 +qs1024032 +qs3024418 +qs925237 +qs999331 +qs1073335 +qs2964496 +qs2652755 +qs2241523 +qs939369 +qs894037 +qs2148972 +qs885382 +qs929738 +qs886389 +qs2580013 +qs898204 +qs2305848 \ No newline at end of file diff --git a/get_gold_sections_classes.py b/get_gold_sections_classes.py new file mode 100644 index 0000000..2b04fd0 --- /dev/null +++ b/get_gold_sections_classes.py @@ -0,0 +1,139 @@ +import json +from elastic_helper import ElasticHelper + +eh_obj = ElasticHelper() +path = "/home/gpu/data_11/mj_qa_section.zip" +all_sections = eh_obj.iterateJsonFile(path, True) + +def list_classes(): + sections = ["qs2737382", "qs894826", "qs1043309", "qs894807", "qs887945", "qs1023813", "qs1988520", "qs997880", "qs919411", "qs3012247", "qs1036224", "qs1636663", "qs1704019", "qs1555153", "qs895753", "qs1024032", "qs3024418", "qs925237", "qs999331", "qs1073335", "qs2964496", "qs2652755", "qs2241523", "qs939369", "qs894037", "qs2148972", "qs885382", "qs929738", "qs886389", "qs2580013", "qs898204", "qs2305848"] + + classes_list = '' + for item in all_sections: + id = item['id'] + if not id in sections: + continue + source = item['source'] + try: + class_ = source['code-ai']['label'] + except: + class_ = 'None' + classes_list += id + " - " + class_ + "\n" + + with open('./data/classes_list.txt', 'w') as file: + file.write(classes_list.strip()) + +def classification_error_handler(): + with open('./data/all_sections_classes_new_140405.json', 'r', encoding='utf-8') as _file: + sections = json.load(_file) + + with open('./data/errors.txt', 'r', encoding='utf-8') as _file: + error_sections = _file.read() + errors = error_sections.splitlines() + + counter = 1 + for item, value in sections.items(): + id = item + if not id in errors: + continue + + errors.remove(id) + result = f'id: {id} -- best-class: {value["best-class"]["label"]}\n' + + with open('./data/errors_classes.txt', 'a', encoding='utf-8') as _file: + _file.write(result) + + print(errors) + +def find_large_sections_in_classified(): + with open('./data/all_sections_classes_new_140405.json', 'r', encoding='utf-8') as _file: + sections = json.load(_file) + + classified_ids = [item for item in sections] + classified_ids_set = set(classified_ids) + large_not_classified = [] + with open('./data/large_sections.json', 'r', encoding='utf-8') as _file: + large_sections = json.load(_file) + for item in large_sections: + if not item in classified_ids: + large_not_classified.append(item) + return large_not_classified + +def classified_sections(): + with open('./data/all_sections_classes_new_140405.json', 'r', encoding='utf-8') as _file: + classified_sections = json.load(_file) + + print(len(classified_sections)) + + eh_obj = ElasticHelper() + path = "/home/gpu/data_11/14040423/mj_qa_section.zip" + all_sections = eh_obj.iterateJsonFile(path, True) + # count = 285839 + for index, item in enumerate(all_sections): + print(index+1) + print(len(all_sections)) + classified_ids = [item for item in sections] + classified_ids_set = set(classified_ids) + large_not_classified = [] + with open('./data/large_sections.json', 'r', encoding='utf-8') as _file: + large_sections = json.load(_file) + for item in large_sections: + if not item in classified_ids: + large_not_classified.append(item) + return large_not_classified + +gold_test_sections = ["qs2737382", "qs894826", "qs1043309", "qs894807", "qs887945", "qs1023813", "qs1988520", "qs997880", "qs919411", "qs3012247", "qs1036224", "qs1636663", "qs1704019", "qs1555153", "qs895753", "qs1024032", "qs3024418", "qs925237", "qs999331", "qs1073335", "qs2964496", "qs2652755", "qs2241523", "qs939369", "qs894037", "qs2148972", "qs885382", "qs929738", "qs886389", "qs2580013", "qs898204", "qs2305848"] + +if __name__ == '__main__': + + with open('./data/all_sections_classes_new_140405.json', 'r', encoding='utf-8') as _file: + sections = json.load(_file) + + gold_sections_classes = {} + for item in sections : + if item in gold_test_sections: + gold_sections_classes[item] = sections[item] + + classes_list = '' + for item in all_sections: + id = item['id'] + if not id in gold_sections_classes: + continue + source = item['source'] + try: + content = source['content'] + except: + pass + gold_sections_classes[id]['content'] = content + # record = gold_sections_classes[item] + # record['content'] = content + + gold_sections_classes_text = '' + for index, idx in enumerate(gold_sections_classes): + gold_sections_classes_text += ''.join(f'order: {index+1}\nid: {idx}\ncontent: {gold_sections_classes[idx]["content"]}\nbest-class: {gold_sections_classes[idx]["best-class"]}\nother-classes: {gold_sections_classes[idx]["other-classes"]}\n\n') + + with open('./data/gold_sections_classes.txt', 'w') as file: + file.write(gold_sections_classes_text.strip()) + + # region large sections which send to window + faults = [] + for item in sections: + itm = sections[item] + try: + best = itm['best-class']['score'] + except: + continue + if best > 1: + print(best) + faults.append((item,best)) + + faults_text = '' + for item in faults: + faults_text += ''.join(item[0]) + '\n' + with open('./data/large_sections.txt', 'a+') as file: + file.write(faults_text.strip()) + + # endregion + + # result = classified_sections() + # print(len(result)) diff --git a/sections_window_3.py b/sections_window_3.py index 62bf9fa..53729ee 100644 --- a/sections_window_3.py +++ b/sections_window_3.py @@ -65,16 +65,16 @@ def get_class(sentences, top_k:int=4): return out def mean_classes(input_classes): - pass + all_classes = [] - for cclass in input_classes: - for item in cclass: + for cls in input_classes: + for item in cls: all_classes.append({ 'label': item['label'], 'score': item['score'] }) - # sorted_classes = sorted(all_classes, key=lambda x: x['class']) + classes_df = pd.DataFrame(all_classes) # گروه بندی بر اساس کلاس grouped_df = classes_df.groupby("label").agg( @@ -94,12 +94,14 @@ def mean_classes(input_classes): for item in top_n_classes: # تبدیل امتیاز در مبنای درصد - item['score'] = (item['score']*100)/sorted_df['score'].sum() + # item['score'] = (item['score']*100)/sorted_df['score'].sum() + item['score'] = (item['score'])/sorted_df['score'].sum() item.pop('count') return top_n_classes def get_window_classes(text): + temp_classes = [] text_classes = [] tokens = tokenizer(text)['input_ids'][1:-1] #print(len(tokens)) @@ -113,9 +115,9 @@ def get_window_classes(text): tokens_len = len(tokenizer(context_slice)['input_ids'][1:-1]) # print(f'i: {i},token-len: {tokens_len}', flush=True) results = get_class(context_slice, Top_k) - text_classes.append(results) + temp_classes.append(results) - text_classes = mean_classes(text_classes) + text_classes = mean_classes(temp_classes) else: text_classes = get_class(text, Top_k) @@ -125,7 +127,10 @@ def full_path_text_maker(full_path): """ این متد مسیر یک سکشن را می گیرد و متنی را بر اساس ترتیب بخش های آن از جزء به کل بازسازی می کند و بر می گرداند - full_path_text متن بازسازی شده از مسیر یک سکشن + Args: + full_path(list): لیستی از عناصر مشخص کننده مسیر درختی این سکشن + Returns: + full_path_text(str): متن بازسازی شده از مسیر یک سکشن """ full_path_text = "" for i, path_item in enumerate(reversed(full_path)): @@ -152,7 +157,12 @@ for index, item in enumerate(sections): source = item['source'] # اگر نوع سکشن، عنوان یا موخره یا امضاء باشد، نیازی به فرایند کلاسبندی نیست و لیست کلاس های مربوط به این سکشن را خالی قرار می دهیم - if source['other_info']['full_path'] == 'عنوان' or source['other_info']['full_path'] == 'موخره' or source['other_info']['full_path'] == 'امضاء': + if source['other_info']['full_path'] == 'عنوان' or source['other_info']['full_path'] == 'موخره' or source['other_info']['full_path'] == 'امضاء' + or source['other_info']['full_path'] == 'عنوان>موخره' + or source['other_info']['full_path'] == 'عنوان>امضاء' + or source['other_info']['full_path'] == 'موخره و امضاء سنا' + or source['other_info']['full_path'] == 'موخره و امضاء' + : new_sections_dict[id] ={ "best-class":{}, "other-classes": []} @@ -210,7 +220,7 @@ for index, item in enumerate(sections): qanon_title_list.append(qanon_title) print(f'section: {all}/{index+1}/{id}', flush=True) # ذخیره دیکشنری شناسه های قانون و کلاس های تخمین زده شده در فایل جیسون -with open('./data/all_sections_classes_new_140405.json', 'w', encoding='utf-8') as output_file: +with open('./data/all_sections_classes_new_140405---.json', 'w', encoding='utf-8') as output_file: json_data = json.dumps(new_sections_dict, indent=4, ensure_ascii=False) output_file.write(json_data)