| فایل اولیهی پروژه را میتوانید از این [لینک](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]
امتیاز نهایی در بازهی **۰ تا ۱۰۰** گزارش میشود. هر پاسخ صحیح مستقیماً امتیاز شما را افزایش میدهد؛ بنابراین کیفیت بازیابی شواهد، درک محتوای چندوجهی و انتخاب دقیق گزینهی نهایی، هر سه در موفقیت راهحل شما تعیینکنندهاند.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.