| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308146/) دانلود کنید.|
| :--: |
این مجموعه داده شامل فرمولاسیونهای مختلف سیمان و مقاومت فشاری متناظر با آنهاست. هدف این بخش، پیشبینی مقاومت سیمان بر اساس مواد اولیه و زمان عملآوری آن است. با تحلیل این ویژگیها، شما یک مدل برای پیشبینی دقیق مقاومت نهایی سیمان توسعه خواهید داد. این چالش فرصتی برای بهکارگیری تکنیکهای یادگیری ماشین و یادگیری عمیق در یک مسئله مهندسی واقعی است، جایی که درک رابطه بین ترکیب مواد و خواص نهایی بتن بسیار حیاتی است.

-----------------------
## معیار ارزیابی
برای ارزیابی مدل شما از معیار `R2 Score` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `R2 Score` حداقل ۰.۶ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(r2score, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
<details class="red">
<summary>
**توجه**
</summary>
در طول مسابقه امتیازی که مشاهده میکنید، فقط نتیجهی ارزیابی مدل شما روی ۳۰ درصد از دادههای آزمون است. بعد از پایان زمان مسابقه، **امتیاز نهایی** شما روی ۷۰ درصد مابقی محاسبه میشود.
این کار به منظور جلوگیری از بیشبرازش (`overfitting`) و حفظ عمومیت مدل انجام میشود تا مطمئن شویم مدلهایی که دچار بیشبرازش شدهاند، در امتیازدهی نهایی، افت میکنند
</details>
---------------------------------
## نحوهی ارسال پاسخ
پاسخ نهایی شما باید در قالب فایلی با نام **submission.csv** ارائه شود. این فایل باید شامل یک ستون با نام **Strength** باشد. در این ستون، برای هر نمونه از دادههای آزمون مشخص میکنید که مقاومت سیمان برای آن نمونه تا چه حد بوده است.
جدول زیر نمونهای از پنج سطر اول فایل خروجی مورد انتظار را نشان میدهد:
| **Strength** |
|:---------:|
| 14.99 |
| 72.99 |
| 35.3 |
| 11.85 |
| 10.76 |
برای پاسخ به این سوال ابتدا فایل نوتبوک قرار گرفته در فایل اولیه را باز کنید و سپس مراحل را مطابق آنچه که از شما خواسته شده انجام دهید. در نهایت، پس از اجرای سلول جوابساز (آخرین سلول فایل نوتبوک) فایل `result.zip` ساخته شده را ارسال نمایید.
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
سیمان بازی
| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308147/) دانلود کنید.|
| :--: |
شرکت پیشرو فینتک، «نکسوسپی» (*NexusPay*)، به سیستم پیشرفته و مبتنی بر هوش مصنوعی خود برای تشخیص تقلب افتخار میکند. مدلهای این شرکت بر روی میلیونها تراکنش آموزش دیدهاند و فعالیتهای متقلبانه را با دقتی چشمگیر شناسایی میکنند. با این حال، بخش مالی به تازگی متوجه یک ناهنجاری دائمی شده است: یک جریان کوچک و ثابت از تراکنشهای جعلی از زیر دست سیستم در میرود.
این «تراکنشهای شبح» (*fraud*) با الگوهای شناختهشده مطابقت ندارند. مبالغ آنها به طور غیرعادی بالا نیست، از کشورهای پرخطر سرچشمه نمیگیرند و هشدارهای رفتاری را که مدلهای فعلی ما برای شناسایی آنها طراحی شدهاند، فعال نمیکنند. گویی برای تحلیلهای رفتاری استاندارد ما نامرئی هستند.
شما به عنوان یک دانشمند داده در «پروژه سنتینل» استخدام شدهاید. مأموریت شما تجزیه و تحلیل یک مجموعه داده جدید است که جزئیات تراکنشها را با فرادادههای پردازش داخلی ترکیب میکند.
هدف شما ساخت یک مدل طبقهبندی است که بتواند تراکنشهای «شبح» را با **بالاترین دقت ممکن** شناسایی کند. هر درصد بهبود در دقت، از زیان مالی قابل توجهی برای شرکت جلوگیری میکند و تیمهای فعلی در رسیدن به یک راهحل بهینه به بنبست خوردهاند.
تئوری تیم داخلی داده این است که الگوی اصلی، در رفتار کاربر نیست، بلکه در **زیرساخت پردازشی** سیستم نهفته است. به همین دلیل، برخی از فرادادههای داخلی که گمان میرود کلید حل معما باشند، در این دیتاست گنجانده شدهاند.
<details class="yellow">
<summary>**دادگان**</summary>
مجموعه داده مورد استفاده شامل ویژگیهای جمعآوری شده از مشتریان است که عبارتاند از:
| *نام ستون (Column Name)* | *توضیح مختصر* |
|:----------------------------:|:-------------------------------------------------------------------------:|
| *processing_batch_id* | شماره_دسته_پردازش |
| *transaction_amount* | تعداد تراکنش |
| *user_age_days* | عمر حساب کاربر به روز |
| *ip_risk_score* | امتیاز ریسکی بودن ip |
| *transaction_speed_seconds* | تراکنش چند ثانیه طول میکشد؟ |
| *user_id* | آیدی کاربر |
| *product_category* | دستهبندی محصول |
| *payment_method* | روش پرداخت |
| *is_fraud* | ستون هدف (تراکنش شبح)
</details>
# ارزیابی
برای ارزیابی سیستم شما از فرمول زیر استفاده میگردد.
\[ \max(0, 100 \times (1 - \frac{\text{1 - Accuracy Score}}{0.01})) \]
> نکته: **فایل نهایی ارسالی برای این سوال، باید شامل دو ستون user_id , is_fraud رو باشد.**
تشخیص تقلب!
| فایل اولیهی سوال را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308148/) دانلود کنید.|
| :--: |
یک برنامه فضایی به نام «کاوشگران فضایی» وجود دارد که در آن به دنبال پیدا کردن برترین افراد علمی کشور جهت آمادهسازی برای مطالعه درباره فضا و کهکشان هستیم. در این سوال از شما خواسته شده است که از مجموعهداده مشخص شده، اطلاعات ارزشمندی برای این برنامه فضایی استخراج کنید.
|  |
| :---: |
| ارسال افراد برگزیده به فضا |
## نحوهی ارسال پاسخ
برای پاسخ به این سوال ابتدا فایل نوتبوک قرار گرفته در فایل اولیه را باز کنید و سپس مراحل را مطابق آنچه که از شما خواسته شده انجام دهید. در نهایت، پس از اجرای سلول جوابساز (آخرین سلول فایل نوتبوک) فایل `result.zip` ساخته شده را ارسال نمایید.
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
برنامه فضایی
| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308142/) دانلود کنید.|
| :--: |
در این بخش از مسابقه، با مجموعهدادهای روبهرو هستید که تصویری گسترده و چندبعدی از وضعیت تحصیلی، رفتاری و خانوادگی دانشآموزان در یک محیط آموزشی دیجیتال یا ترکیبی ارائه میدهد. وظیفه شما این است که با تحلیل این دادهها، وضعیت کلی هر دانشآموز را پیشبینی و دستهبندی کنید.
این دادهها صرفاً به نمرات و عملکرد درسی محدود نمیشوند؛ بلکه طیفی متنوع از اطلاعات را در بر میگیرند (از ویژگیهای فردی و دموگرافیک گرفته تا میزان تعامل با منابع آموزشی، و حتی بازخورد والدین نسبت به مدرسه).
هدف نهایی این است که با بهرهگیری از این دادهها، بتوانید سطح عملکرد هر دانشآموز را در یکی از سه گروه **«پایین»، «متوسط» یا «بالا»** دستهبندی کنید.

------------
## معیار ارزیابی
برای ارزیابی مدل شما از معیار `F1 Score` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `F1 Score` حداقل ۰.۷ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(f1 score, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
<details class="red">
<summary>
**توجه**
</summary>
در طول مسابقه امتیازی که مشاهده میکنید، فقط نتیجهی ارزیابی مدل شما روی ۳۰ درصد از دادههای آزمون است. بعد از پایان زمان مسابقه، **امتیاز نهایی** شما روی ۷۰ درصد مابقی محاسبه میشود.
این کار به منظور جلوگیری از بیشبرازش (`overfitting`) و حفظ عمومیت مدل انجام میشود تا مطمئن شویم مدلهایی که دچار بیشبرازش شدهاند، در امتیازدهی نهایی، افت میکنند.
</details>
------------
## نحوهی ارسال پاسخ
وظیفه شما این است که با استفاده از دادههای آموزش، مدلی بسازید که بتواند سطح هر دانشآموز در مجموعهی آزمایش پیشبینی کند. خروجی نهایی شما باید یک فایل با نام **submission.csv** باشد که تنها شامل یک ستون به نام **Class** است. در این فایل، برای هر دانشآموز در مجموعهی آزمایش باید سطح عملکرد (پایین، متوسط یا بالا) پیشبینی شده باشد.
توجه داشته باشید که **ترتیب سطرهای فایل خروجی باید دقیقاً مطابق با ترتیب دانشآموزان در مجموعهی test باشد**. نمونهای از فایل خروجی نهایی به شرح زیر است:
| **Class** |
|:---------:|
| M |
| M |
| L |
| H |
برای پاسخ به این سوال ابتدا فایل نوتبوک قرار گرفته در فایل اولیه را باز کنید و سپس مراحل را مطابق آنچه که از شما خواسته شده انجام دهید. در نهایت، پس از اجرای سلول جوابساز (آخرین سلول فایل نوتبوک) فایل `result.zip` ساخته شده را ارسال نمایید.
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
پشت نیمکت چی میگذره؟
| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308149/) دانلود کنید.|
| :--: |
در این بخش از مسابقه، با دادههایی واقعی از محیطهای صنعتی سروکار دارید. این دادهها توسط سنسورهای صنعتی ثبت شدهاند که عملکرد آنها گاهی دچار اختلال یا نویز میشود. بروز خطا در این نوع سامانهها امری طبیعی است و تشخیص بهموقع این پدیدهها از اهمیت بالایی برخوردار است.
هدف شما در این مرحله، شناسایی دادههای غیرعادی از میان دادههای عادی است؛ مسئلهای که در دنیای واقعی کاربردهای فراوانی در پایش سلامت تجهیزات، پیشبینی خرابیها و افزایش ایمنی صنعتی دارد.

-----------------------
## معیار ارزیابی
برای ارزیابی مدل شما از معیار `F1 Score` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `F1 Score` حداقل ۰.۵۵ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(f1 score, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
<details class="red">
<summary>
**توجه**
</summary>
در طول مسابقه امتیازی که مشاهده میکنید، فقط نتیجهی ارزیابی مدل شما روی ۳۰ درصد از دادههای آزمون است. بعد از پایان زمان مسابقه، **امتیاز نهایی** شما روی ۷۰ درصد مابقی محاسبه میشود.
این کار به منظور جلوگیری از بیشبرازش (`overfitting`) و حفظ عمومیت مدل انجام میشود تا مطمئن شویم مدلهایی که دچار بیشبرازش شدهاند، در امتیازدهی نهایی، افت میکنند.
</details>
---------------------------------
## نحوهی ارسال پاسخ
پاسخ نهایی شما باید در قالب فایلی با نام **submission.csv** ارائه شود. این فایل باید شامل یک ستون با نام **is_anomaly** باشد. در این ستون، برای هر نمونه از دادههای آزمون مشخص میکنید که آیا آن نمونه غیرعادی است یا خیر:
+ اگر نمونهای **غیرعادی** باشد، مقدار **۱** در آن ردیف قرار دهید.
+ و اگر **عادی** باشد، مقدار **۰** در آن ردیف قرار دهید.
جدول زیر نمونهای از پنج سطر اول فایل خروجی مورد انتظار را نشان میدهد:
| **is_anomaly** |
|:---------:|
| 0 |
| 0 |
| 1 |
| 0 |
| 1 |
برای پاسخ به این سوال ابتدا فایل نوتبوک قرار گرفته در فایل اولیه را باز کنید و سپس مراحل را مطابق آنچه که از شما خواسته شده انجام دهید. در نهایت، پس از اجرای سلول جوابساز (آخرین سلول فایل نوتبوک) فایل `result.zip` ساخته شده را ارسال نمایید.
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
نویز مشکوک
| فایل اولیهی تمرین را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308143/) دانلود کنید. |
| :--: |
شما به تازگی به عنوان مدیر ورزشی باشگاه فوتبال ریشهدار و پرطرفدار **«آذرخش»** انتخاب شدهاید. فصلی که گذشت، فصل پر فراز و نشیبی برای آذرخش بود. با وجود کسب سهمیه لیگ قهرمانان، هیئت مدیره برای رهایی از فشارهای ناشی از قوانین **«بازی جوانمردانه مالی» (Financial Fair Play)** و تامین بودجه لازم برای نوسازی زیرساختهای باشگاه، مجبور به فروش دو ستاره کلیدی تیم شد.
با فروش این دو بازیکن، مبلغ قابل توجهی به حساب باشگاه واریز شده، اما هواداران خشمگین و نگران آینده تیم هستند. شبکههای اجتماعی پر از هشتگهای اعتراضی شده و فشار رسانهها برای معرفی جانشینان این دو بازیکن به اوج خود رسیده است. در اولین کنفرانس خبری، شما با این وعده که «آذرخش قدرتمندتر از همیشه بازخواهد گشت» سعی در آرام کردن اوضاع داشتید.

شما در یک پنجره نقل و انتقالات بیرحم قرار گرفتهاید. از یک سو، قوانین سفت و سخت فیرپلی مالی به شما اجازه نمیدهد تمام پول حاصل از فروش را خرج کنید. شما تنها مجاز به استفاده از **۸۰ درصد** از مجموع مبلغ فروش این دو بازیکن برای خرید بازیکنان جدید هستید. از سوی دیگر، سرمربی تیم به شدت نگران افت کیفیت تیم است. شما باید با استفاده از علم داده، دو بازیکن جدید را شناسایی و جایگزین این دو بازیکن کنید. اما این یک خرید ساده نیست. شما باید یک شاهکار مدیریتی انجام دهید. پیدا کردن جفتی از بازیکنان که نه تنها از نظر فنی شبیه به دو بازیکن از دست رفته باشند، بلکه تا حدی با توجه به گزینهها کیفیت تیم را حفظ کرده و علاوه بر آن به فکر جوانگرایی هم باشید. در نهایت شما باید سیستمی را پیادهسازی کنید که آیدی دو بازیکن فروخته شده را دریافت کرده و با توجه به ویژگیهای بازیکنان یک لیست 5تایی از آیدی جفت بازیکنانی که قادر به پر کردن جای خالی ایشان هستند را برگرداند.
----------
### **معیار ارزیابی: (`PairScore`)** 📈
ارزیابی نهایی بر اساس یک امتیاز کلی به نام `PairScore` برای بهترین جفت پیشنهادی شما انجام خواهد شد. این امتیاز ترکیبی از **چهار فاکتور کلیدی** است:
1. **شباهت پروفایل (Profile Similarity):** اینکه ویژگیهای فنی بازیکنان جدید چقدر با بازیکنان فروخته شده **با توجه به پست تخصصی آنها** همخوانی دارد.
2. **حفظ کیفیت (Quality Maintenance):** اینکه کارایی تیم در آن پست خاص تا چه حد حفظ شده یا بهبود یافته است. صرفا *OVR* کلی ملاک نیست. اگر بازیکنان پیشنهادی باعث پایین آمدن *OVR* تیم شوند امتیاز منفی دریافت میکنند در غیر اینصورت امتیاز مثبت.
3. **فاکتور جوانی (Youth Factor):** به گزینههای جوانتر و آیندهدار امتیاز **بیشتری** تعلق میگیرد و اگر بازیکنان معرفی شده باعث افزایش میانگین سنی تیم شوند، شما امتیاز منفی دریافت خواهید کرد.
4. **ارزش مالی (Financial Value):** پیدا کردن گزینههایی که نسبت به قیمتشان، کیفیت بالایی ارائه میدهند (value for money)، یک امتیاز مثبت بزرگ محسوب میشود. هرچه صرفهجویی در بودجه بیشتر، امتیاز بیشتر.
> **هزینه خرید جفت پیشنهادی شما نباید از بودجه تعیین شده تجاوز کند.**
اگرچه فرمول دقیق و وزندهی این فاکتورها نزد کمیته داوری محفوظ است، اما یک راهحل موفق، راهحلی است که در هر چهار زمینه عملکردی متقاعدکننده و متعادل از خود به نمایش بگذارد.
----------
### **خروجی**
شما در نهایت باید یک تابع به زبان برنامهنویسی پایتون را ارسال کنید. این تابع باید**آیدی 2 بازیکن به فروش رفته و دیتاست کلی (با فرمت دیتافریم)** را دریافت کرده و آیدی یک بازیکن پیشنهادی به ازای هر کدام از فروخته شدهها *return* کند. (یعنی خروجی تابع باید دو آیدی باشد.). بازیکنان پیشنهادی شما با توجه به معیار `PairScore` تیم داوری سنجیده میشوند و امتیاز میگیرند.
> نکته: اگر خارج از notebook قرار داده شده قصد نوشتن برنامه را دارید، شما باید فایلی به نام `player_recommender.py` داشته باشید که در دل این برنامه تابعی به نام `player_recommender` وجود دارد.
مدیر ورزشی «آذرخش»
| فایل اولیهی سوال را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308144/) دانلود کنید.|
| :--: |
در این سوال قرار است به توسعه بخشی از بزرگترین و کاربردیترین سیستم برای سفر بپردازیم. طاها مدیرعامل شرکت و پلتفرم آنلاین **سفرچک** از شما برای شرکت در توسعه سیستمی برای بهبود کیفیت سفر کاربران وبسایت خود دعوت میکند.
|  |
| :--: |
| رابط کاربری سفرجیب |
وبسایت سفرچک از بخشهای مختلفی برای کمک به مسافران تشکیل شده است که هرکدام خدمات منحصربهفردی به کاربران ارائه میکند. در این لحظه مهندسین نرمافزار این پلتفرم در حال طراحی بخشی به نام سفرجیب هستند تا به مسافران برای محاسبه هزینه سفر مورد نظر خود کمک کند. از شما خواسته شده تا در این ماموریت سیستمی را طراحی کنید تا هزینه اقامت هتل را برای کاربران پیشبینی کند.
**برای این مأموریت آمادهاید؟!**
## معیار ارزیابی
برای ارزیابی مدل شما از معیار `R2 Score` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `R2 Score` حداقل ۰.۵ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(r2score, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
<details class="red">
<summary>
**توجه**
</summary>
در طول مسابقه امتیازی که مشاهده میکنید، فقط نتیجهی ارزیابی مدل شما روی ۳۰ درصد از دادههای آزمون است. بعد از پایان زمان مسابقه، **امتیاز نهایی** شما روی ۷۰ درصد مابقی محاسبه میشود.
این کار به منظور جلوگیری از بیشبرازش (`overfitting`) و حفظ عمومیت مدل انجام میشود تا مطمئن شویم مدلهایی که دچار بیشبرازش شدهاند، در امتیازدهی نهایی، افت میکنند.
</details>
## نحوهی ارسال پاسخ
برای پاسخ به این سوال ابتدا فایل نوتبوک قرار گرفته در فایل اولیه را باز کنید و سپس مراحل را مطابق آنچه که از شما خواسته شده انجام دهید. در نهایت، پس از اجرای سلول جوابساز (آخرین سلول فایل نوتبوک) فایل `result.zip` ساخته شده را ارسال نمایید.
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
سفرجیب
| فایل اولیهی پروژه را میتوانید از این [لینک](https://drive.google.com/drive/folders/1H4DaaJjEEDJLMJAp-eZmrnKTxs5B4In9?usp=sharing) دانلود کنید.
|:------------------------------------------------------------------------:|
انتشارات فناوری «دانشبان» (_DaneshBan_) سالهاست مجموعهای ارزشمند از کتابهای تخصصی در حوزههای مهندسی نرمافزار، داده، زیرساخت و هوش مصنوعی منتشر میکند. هزاران متخصص برای یافتن پاسخ مسائل فنی روزمرهی خود به این کتابها مراجعه میکنند؛ اما با افزایش تعداد منابع، پیدا کردن پاسخ دقیق به یک سؤال ساده دیگر کار آسانی نیست.
یک پاسخ ممکن است در میان چند پاراگراف متن پنهان شده باشد، پاسخ سؤال دیگری فقط از روی یک جدول قابل استخراج باشد و برای بعضی پرسشها لازم باشد نمودار، معماری سیستم یا شکل فنی داخل کتاب بهدقت بررسی شود. حتی در برخی موارد، پاسخ نهایی تنها با ترکیب اطلاعات متن و تصویر به دست میآید.
تیم تحقیق و توسعهی «دانشبان» قصد دارد یک دستیار هوشمند بسازد که بتواند مانند یک پژوهشگر فنی، کتاب مرتبط را پیدا کند، محتوای آن را بخواند، جدولها و شکلها را بررسی کند و در نهایت پاسخ صحیح را از میان چهار گزینه انتخاب کند.
اینجا جایی است که شما وارد میشوید.
ماموریت شما طراحی سیستمی برای **پاسخگویی چندوجهی به سؤالهای چهارگزینهای بر اساس کتابهای فنی PDF** است. برای هر سؤال، کتاب مرجع از قبل مشخص شده و سیستم شما باید با استفاده از همان کتاب، پاسخ صحیح را از میان گزینههای `A`، `B`، `C` و `D` انتخاب کند.
این چالش فقط یک مسئلهی جستوجوی متنی ساده نیست. برخی سؤالها بر اساس متن عادی، برخی بر اساس جدولها، برخی بر اساس شکلها و نمودارها و برخی با ترکیب چند نوع شاهد طراحی شدهاند. بنابراین روشی که صرفاً متن خام PDF را استخراج کند، ممکن است برای پاسخگویی به همهی سؤالها کافی نباشد.
## مأموریت شما
شما باید سیستمی توسعه دهید که:
1. سؤال و چهار گزینهی آن را از فایل `query.csv` دریافت کند.
2. با استفاده از ستون `book_id`، کتاب PDF مرتبط را شناسایی کند.
3. شواهد لازم را از متن، جدول، شکل، نمودار یا ترکیبی از آنها استخراج کند.
4. دقیقاً یک پاسخ از میان `A`، `B`، `C` یا `D` انتخاب کند.
5. پاسخ تمام سؤالها را با ساختار تعیینشده در فایل `result.csv` ذخیره کند.
فایلهای مسئله با ساختار زیر در اختیار شما قرار میگیرند:
```
├── query.csv
├── <book_id>.pdf
├── <book_id>.pdf
└── ...
```
مجموعهی ارزیابی شامل **۲۰۰ سؤال از ۱۰ کتاب PDF** است؛ از هر کتاب دقیقاً **۲۰ سؤال** طراحی شده است.
### فایل `query.csv`
این فایل با کدگذاری `UTF-8` ارائه میشود و دقیقاً دارای ستونهای زیر است:
```
query_id,question,option_a,option_b,option_c,option_d,book_id
```
| نام ستون | توضیح |
|:----------:| ----------------------------------------------- |
| `query_id` | شناسهی عددی و یکتای هر سؤال |
| `question` | متن سؤال چهارگزینهای |
| `option_a` | گزینهی `A` |
| `option_b` | گزینهی `B` |
| `option_c` | گزینهی `C` |
| `option_d` | گزینهی `D` |
| `book_id` | نام کتاب PDF حاوی شواهد پاسخ، بدون پسوند `.pdf` |
برای دسترسی به کتاب مرتبط با هر سؤال، باید از مسیر زیر استفاده کنید:
```
user/<book_id>.pdf
```
### انواع سؤالها
سؤالهای این چالش ممکن است به یکی از شکلهای زیر باشند:
+ **متنمحور:** پاسخ مستقیماً از متن کتاب استخراج میشود.
+ **جدولمحور:** پاسخ در یک جدول یا با مقایسهی مقادیر آن مشخص میشود.
+ **شکل یا نمودارمحور:** پاسخ نیازمند بررسی یک شکل، دیاگرام، معماری یا مقدار نمایشدادهشده در تصویر است.
+ **ترکیبی:** پاسخ با ترکیب اطلاعات چند بخش، مانند متن و جدول یا متن و نمودار، به دست میآید.
> نکته: استخراج متن PDF بهتنهایی برای همهی سؤالها کافی نیست. هنگامی که سؤال به جدول، شکل، نمودار یا مقدار نمایشدادهشده اشاره میکند، لازم است صفحهی مربوطه را رندر و محتوای بصری آن را نیز بررسی کنید.
## خروجی مورد انتظار
فایل نهایی شما باید یک آرشیو ZIP با نام `submission.zip` باشد که **دقیقاً** شامل دو فایل زیر در ریشهی آرشیو است:
```
submission.zip
├── submission.ipynb
└── result.csv
```
> فایلها نباید داخل پوشهی اضافی قرار گرفته باشند. وجود یک پوشهی والد درون ZIP باعث نامعتبر شدن ساختار ارسال خواهد شد.
### فایل `submission.ipynb`
این فایل باید یک Jupyter Notebook باشد که روش مورد استفادهی شما را مستند کند. توضیحات و کدهای آن باید به اندازهای کامل باشند که داور بتواند:
+ منطق راهحل شما را درک کند؛
+ مراحل پردازش کتابها و پاسخگویی را بررسی کند؛
+ فایل `result.csv` را با استفاده از دادههای ارائهشده بازتولید کند.
### فایل `result.csv`
فایل پاسخ باید با کدگذاری `UTF-8` و دقیقاً با قالب زیر ساخته شود:
```
query_id,predicted_answer
0,C
1,B
2,D
```
قوانین فایل خروجی:
+ برای هر `query_id` موجود در `query.csv` باید دقیقاً یک سطر وجود داشته باشد.
+ هیچ شناسهای نباید حذف یا تکرار شود.
+ ستون `predicted_answer` فقط میتواند یکی از مقادیر `A`، `B`، `C` یا `D` باشد.
+ مجموعهی شناسههای موجود در خروجی باید دقیقاً با مجموعهی شناسههای فایل ورودی برابر باشد.
+ وجود شناسهی اضافی، شناسهی مفقود، پاسخ نامعتبر یا سطر تکراری باعث نامعتبر شدن ارسال میشود.
> حروف کوچک و فاصلههای اضافی اطراف پاسخ هنگام ارزیابی نرمالسازی میشوند؛ با این حال پیشنهاد میشود پاسخها دقیقاً با حروف بزرگ `A` تا `D` ثبت شوند.
## اعتبارسنجی و ارزیابی
پیش از محاسبهی امتیاز، ساختار فایل ارسالی بررسی میشود. سامانهی داوری ابتدا کنترل میکند که:
+ هر دو فایل `submission.ipynb` و `result.csv` در ریشهی ZIP وجود داشته باشند؛
+ سربرگ فایل `result.csv` صحیح باشد؛
+ تمام شناسهها دقیقاً یکبار ثبت شده باشند؛
+ پاسخ هر سؤال یکی از گزینههای مجاز باشد؛
+ هیچ شناسهی اضافی یا مفقودی وجود نداشته باشد.
در صورت وجود هرگونه خطای ساختاری، فایل مفقود، شناسهی تکراری، پاسخ نامعتبر یا مغایرت میان شناسههای ورودی و خروجی، **امتیاز نهایی برابر صفر خواهد بود**.
ارسالهای معتبر بر اساس **دقت تطابق کامل (Exact-Match Accuracy)** ارزیابی میشوند:
[Score = 100 \times \frac{\text{تعداد پاسخهای صحیح}}{\text{تعداد کل سؤالها}}]
هر سؤال وزن یکسانی دارد و پاسخ تنها زمانی صحیح محسوب میشود که گزینهی انتخابشده دقیقاً با پاسخ مرجع برابر باشد.
برای مثال، اگر سیستم شما از ۲۰۰ سؤال به ۱۶۰ سؤال پاسخ صحیح بدهد، امتیاز نهایی برابر خواهد بود با:
[Score = 100 \times \frac{160}{200} = 80]
امتیاز نهایی در بازهی **۰ تا ۱۰۰** گزارش میشود. هر پاسخ صحیح مستقیماً امتیاز شما را افزایش میدهد؛ بنابراین کیفیت بازیابی شواهد، درک محتوای چندوجهی و انتخاب دقیق گزینهی نهایی، هر سه در موفقیت راهحل شما تعیینکنندهاند.