در این سوال عملیات EDA روی یک مجموعهداده فارسی و انگلیسی انجام میشود.
![توضیح تصویر](https://quera.org/qbox/view/WZCK5K3tcO/1_mhWZ6BhAKaaVNEwBN_rkJw.jpeg)
# مجموعهداده
| مجموعه داده سوال را میتوانید از [این لینک](/contest/assignments/64356/download_problem_initial_project/219298/) دانلود کنید.|
| :--: |
هنگامی که این فایل را از حالت فشرده خارج کنید، فایل `qoura_questions.csv` و `shereno.csv` در اختیار شما خواهد بود.
فایل `shereno.csv` دارای ۴۴۰۰ سطر و ۴ ستون میباشد و جزییات آن در جدول زیر آمدهاست:
| نام ستون | توضیحات ستون |
|:----------|:------------------:|
| Poem | متن شعر |
| Poet | شاعر |
| Title | نام شعر |
| Book | کتاب |
فایل `qoura_questions.csv` دارای ۱۹۰۳ سطر و ۱ ستون میباشد و جزییات آن در جدول زیر آمدهاست:
| نام ستون | توضیحات ستون |
|:----------|:------------------:|
| question | سوال |
# صورت مسئله
1. تعداد کلمات منحصر به فرد (یکتا) در هر سوال (ستون ` question`) در `qoura_questions.csv` را پیدا کنید سپس مجموع تعداد کلمات منحصر به فرد در هر سوال را ارسال کنید.
مثال ۱: جمله ?Why do I not lose weight when I throw up دارای ۹ کلمه یکتا میباشد.
مثال ۲: جمله Hi, my name is Ali.\nmy cousin's name is Ali too! دارای ۸ کلمه یکتا میباشد.
```
3453
```
2. ابتدا مجموع تعداد رقمهای موجود در ستون سوال (` question`) در فایل `qoura_questions.csv` و سپس تعداد رقم موجود در ستون متن شعر (`Poem`) در فایل `shereno.csv` را بهدست آورید.
مثال۱: جمله Are there any good horror movies in 2016 دارای ۴ رقم است.
```
412 532
```
3. با استفاده از فایل `stopwords.txt` تعداد stopwordهای استفاده شده در متن شعر (`Poem`) در فایل `shereno.csv` را بهدست آورید.
```
3423
```
# خروجی
برای ارسال پاسخ، جواب هر سوال را مشابه مثال، در یک سطر از یک فایل `text` بنویسید. در نهایت یک فایل سه خطی با نام **`output.txt`** را برای ما بارگذاری کنید.
**در صورتی که جواب سوالی را نمیدانید در سطر مربوطه ۱- وارد کنید.**
## نمونه خروجی ۱
```
3453
412 532
3423
```
<details class="violet">
<summary>**توضیحات**</summary>
در خط _i_ ام جواب سوال _i_ ام نوشته شدهاست.
</details>
## نمونه خروجی ۲
```
3256
-1
-1
```
<details class="violet">
<summary>**توضیحات**</summary>
چون پاسخ سوال دوم و سوم را نمیدانستید، به جای آن عدد ۱- نوشتهاید!
</details>
<details class="red">
<summary>
**هشدار** 😱
</summary>
فراموش نکنید که **قبل از پایان زمان مسابقه**، **بایستی** تمامی کدهای این مسابقه را از قسمت **بارگذاری کُد** برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیحات قسمت **بارگذاری کُد**، خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهند شد.
</details>
تحلیل داده اکتشافی (قسمت اول)
در این سوال عملیات EDA روی یک مجموعهداده سوالات انگلیسی انجام می شود.
![توضیح تصویر](https://quera.org/qbox/view/WZCK5K3tcO/1_mhWZ6BhAKaaVNEwBN_rkJw.jpeg)
# مجموعه داده
| مجموعه داده سوال را میتوانید از [این لینک](/contest/assignments/64356/download_problem_initial_project/219299/) دانلود کنید. دقت کنید این مجموعه سوال همان فایل `qoura_questions.csv` در سوال قبل است.|
| :--: |
# صورت مسئله
1. تعداد کلماتی که با m شروع میشوند، با t تمام می شوند و طول آنها بیشتر از ۴ کاراکتر است را بهدست آورید.
<details class="red">
<summary>**توجه**</summary>
دقت کنید وجود علامتهای نگارشی در پایان کلمات ایرادی ندارد و کلمات در این حالت نیز شمارش میشوند. همچنین بزرگی و کوچکی حروف مهم نیست.
</details>
```
43
```
2. مجموع تعداد ایموجی های متن را بهدست آورید.
```
66
```
3. ۵ کلمه پر تکرار و تعداد تکرار آنها را با با ترتیب نزولی بهدست آورید.
```
the:14715 of:6742 and:6517 a:4805 to:4707
```
4. تعداد کلماتی که فقط یک بار در کل متن تکرار شدهاند را بهدست آورید.
```
2342
```
# خروجی
برای ارسال پاسخ، جواب هر سوال را مشابه مثال، در یک سطر از یک فایل `text` بنویسید. در نهایت یک فایل چهار خطی با نام **`output.txt`** را برای ما بارگذاری کنید.
\**در صورتی که جواب سوالی را نمیدانید در سطر مربوطه ۱- وارد کنید.**
## نمونه خروجی ۱
```
43
66
the:14715 of:6742 and:6517 a:4805 to:4707
2342
```
<details class="violet">
<summary>**توضیحات**</summary>
در خط _i_ ام جواب سوال _i_ ام نوشته شدهاست.
</details>
## نمونه خروجی ۲
```
3256
1000
-1
-1
```
<details class="violet">
<summary>**توضیحات**</summary>
چون پاسخ سوال سوم و چهارم را نمیدانستید، به جای آن عدد ۱- نوشتهاید!
</details>
<details class="red">
<summary>
**هشدار 😱**
</summary>
فراموش نکنید که **قبل از پایان زمان مسابقه**، **بایستی** تمامی کدهای این مسابقه را از قسمت **بارگذاری کُد** برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیحات قسمت **بارگذاری کُد**، خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهند شد.</details>**
تحلیل داده اکتشافی (قسمت دوم)
تعدادی چکیدهی مقاله از دو شاخهی مختلف «آمار در یادگیری ماشین» و «آمار کاربردی» به همراه برچسب شاخهی آنها در اختیار شما قرار گرفته است. شما باید یک دستهبند ساده آموزش دهید که بتواند با ورودی گرفتن چکیده، موضوع مقاله را پیشبینی کند.
شما میتوانید از هر کتابخانه پایتونی برای حل این سوال استفاده کنید. دقت کنید که کد نفرات برتر مورد بررسی قرار خواهد گرفت.
# مجموعهیداده
|میتوانید مجموعهدادهی مربوط به این مسئله را از [این لینک](/contest/assignments/64356/download_problem_initial_project/219300/) دانلود کنید.|
| :--: |
هنگامی که این فایل را از حالت فشرده خارج کنید، دو فایل `train.csv` و `test.csv`در اختیار شما قرار میگیرد. فایل آموزش شامل دو ستون به شرح زیر است:
| نام ستون | توضیحات ستون |
|:----------|:------------------:|
| `abstract` | چکیده |
| `category` | برچسب شاخهی مقاله که شامل یکی از دو مقدار `ML` یا `Applied` میباشد|
فایل آزمون (دادههای آزمایش) تنها شامل ستون `abstract` است.
# صورت مسئله
از فایل `train.csv` برای پیشبینی موضوع مقاله با استفاده از چکیده آن و آموزش مدل استفاده کنید و از فایل `test.csv` برای آزمایش مدل شما در سیستم داوری استفاده میشود.
# ارزیابی
ارزیابی عملکرد بر اساس دقت (`accuracy`) بر روی دادههای آزمایش خواهد بود؛ یعنی تعداد نمونههای درست دستهبندی شده تقسیم بر تعداد کل نمونهها میشود. در نهایت امتیاز شما از این سوال طبق رابطهی زیر محاسبه میشود:
$$score = \begin{cases}
0 & accuracy<0.6 \\
accuracy \times 100 & accuracy\geq 0.6
\end{cases}.
$$
|**داوری این سوال قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از مجموعه داده آزمایش (`test`) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات، از ۱۰۰ درصد مجموعه داده آزمایش استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (`overfit`) روی مجموعه داده آزمایش انجام میشود.**|
| :--: |
# خروجی
پیشبینیهای مدل خود بر روی دادگان آزمایش (`test.csv`) را در فایلی با نام `output.csv` قرار دهید.
این فایل باید شامل یک ستون `prediction` باشد. در سطر `i` ام از این ستون باید پیشبینی مدل شما روی دادهی با اندیس `i` باشد. بعد از آمادهسازی فایل `output.csv`، آن را برای ما بارگذاری کنید.
## نمونه خروجی فایل `output.csv` (فقط پنج خط اول به همراه نام ستون)
| prediction |
|:----------:|
| ML |
| Applied |
| Applied |
| ML |
| ML |
<details class="yellow">
<summary>
**توجه**
</summary>
با توجه به تعداد بسیار کم دادگان آموزش، پیشنهاد میشود که از مدلهای عمیق استفاده نکنید.
استفاده از وزن مدلهای از پیش آموزش دیده (pretrained) برای تسهیل آموزش مدل خود، در سوالات مانعی ندارد.
</details>
<details class="red">
<summary>
**هشدار** 😱
</summary>
فراموش نکنید که **قبل از پایان زمان مسابقه**، **بایستی** تمامی کدهای این مسابقه را از قسمت **بارگذاری کُد** برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیحات قسمت **بارگذاری کُد**، خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهند شد.
</details>
کدام آمار؟
در این سوال ما یک مجموعه دادهی خبری داریم که دارای ۲۳ زیر مجموعه خبری است. شما باید مدلی بسازید که از این مجموعه داده استفاده کند و برای تخمین زیر مجموعه خبر مورد استفاده قرار گیرد.
شما میتوانید از هر کتابخانه پایتونی برای حل این سوال استفاده کنید. دقت کنید که کد نفرات برتر مورد بررسی قرار خواهد گرفت.
# مجموعه داده
| مجموعه داده سوال را میتوانید از [این](https://drive.google.com/file/d/1ljAg7S4y9t5b77pgQsLJJ6ITskcZn669/view?usp=sharing) یا [این](http://llm.quera.org/data.zip) لینک دانلود کنید.|
| :--: |
هنگامی که این فایل را از حالت فشرده خارج کنید فایل آموزش (`train.csv`) و آزمایش (`test.csv`) را مشاهده میکنید. فایل آموزش، دارای ساختار زیر است:
| نام ستون | توضیحات ستون |
|:----------:|:------------------:|
| title | عنوان خبر |
| subgroup | زیرگروه خبر |
| abstract | خلاصه خبر |
| body | مشروح خبر |
تنها تفاوت مجموعه داده آموزش با آزمایش در این است که مجموعه داده آزمایش، ستون`subgroup` را ندارند.
# صورت مسئله
با استفاده از مجموعه داده آموزش، یک مُدل برای پیشبینی زیرگروه خبر (ستون `subgroup`) هر سطر آموزش دهید.
# ارزیابی
برای ارزیابی پاسخ شما از معیار *F1* استفاده خواهد شد. این معیار به صورت زیر تعریف میشود:
$$F_1 = 2 \times \frac{precision \times recall}{precision + recall}$$
ولی به دلیل اینکه ستون پیشبینی دارای بیش از ۲ کلاس است ما از معیاری به نام *Weighted F1* استفاده میکنیم که *F1* میانگین وزنی کلاس ها را محاسبه میکند.
برای مطالعه بیشتر در مورد این معیار میتوانید به [این منبع](https://towardsdatascience.com/micro-macro-weighted-averages-of-f1-score-clearly-explained-b603420b292f#33e1) مراجعه کنید.
| **داوری این سوال قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از مجموعه داده آزمایش (`test`) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات، از ۱۰۰ درصد مجموعه داده آزمایش استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (`overfit`) روی مجموعه داده آزمایش انجام میشود.** |
| :--: |
# خروجی
پیشبینیهای مدل خود بر روی دادگان آزمایش (`test.csv`) را در فایلی با نام `output.csv` قرار دهید.
این فایل باید دارای یک ستون به اسم `subgroup` باشد.(بزرگ و کوچک بودن حروف نام ستون رعایت شود) که ردیف i ام هر ستون، پیشبینی شما برای نظر ردیف i ام از فایل `test.csv` باشد. بعد از آمادهسازی فایل `output.csv`، آن را برای ما بارگذاری کنید.
## نمونه خروجی فایل `output.csv` (فقط چهار خط اول به همراه نام ستون)
| subgroup |
|:------------:|
| اجتماعی|
| اجتماعی|
| سیاسی|
|اقتصادی|
<details class="yellow">
<summary>
**توجه**
</summary>
حتما فایل `output.csv` باید دارای ۱۰۱۹۵۰ سطر (بدون در نظر گرفتن `header`) و یک ستون باشد.
استفاده از وزن مدلهای از پیش آموزش دیده (pretrained) برای تسهیل آموزش مدل خود، در سوالات مانعی ندارد.
</details>
<details class="red">
<summary>
**هشدار** 😱
</summary>
فراموش نکنید که **قبل از پایان زمان مسابقه**، **بایستی** تمامی کدهای این مسابقه را از قسمت **بارگذاری کُد** برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیحات قسمت **بارگذاری کُد**، خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهند شد.
</details>
اخبار ایران و جهان
بخشی از فهم زبان طبیعی توسط مدلهای هوش مصنوعی را میتوان فهم آنها از زمان در بستر متن دانست. در این سوال به وظیفهای برای بررسی فهم مدلها از جهت زمان در متون طبیعی میپردازیم. فرض کنید دو پاراگراف متوالی از یک کتاب داده شده باشند. هدف تشخیص آن است که ترتیب دو پاراگراف درست است یا خیر.
شما میتوانید از هر کتابخانه پایتونی برای حل این سوال استفاده کنید. دقت کنید که کد نفرات برتر مورد بررسی قرار خواهد گرفت.
# مجموعهداده
|میتوانید مجموعهدادهی مربوط به این مسئله را از [این لینک](/contest/assignments/64356/download_problem_initial_project/219302/) دانلود کنید.|
| :--: |
هنگامی که این فایل را از حالت فشرده خارج کنید، سه فایل `train.csv`، `val.csv`و `test.csv` در اختیار شما قرار میگیرد. فایل آموزش و اعتبارسنجی شامل سه ستون به شرح زیر هستند:
| نام ستون | توضیحات ستون |
|:----------|:------------------:|
| `paragraph 1` | پاراگراف اول |
| `paragraph 2` | پاراگراف دوم |
| `label` | برچسب، یکی از دو مقدار `correct` یا `reverse`|
فایل آزمون (دادگان آزمایش) تنها شامل دو ستون اول است.
# صورت مسئله
از فایل `train.csv` و `val.csv`برای آموزش و ارزیابی مدل استفاده کنید و از فایل `test.csv` برای آزمایش مدل شما در سیستم داوری استفاده میشود.
# ارزیابی
ارزیابی عملکرد بر اساس دقت (`accuracy`) بر روی دادههای آزمایش خواهد بود؛ یعنی تعداد نمونههای درست دستهبندی شده تقسیم بر تعداد کل نمونهها میشود. در نهایت امتیاز شما از این سوال طبق رابطهی زیر محاسبه میشود:
$$score = \begin{cases}
0 & accuracy<0.6 \\
accuracy \times 100 & accuracy\geq 0.6
\end{cases}.
$$
|**داوری این سوال قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از مجموعه داده آزمایش (`test`) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات، از ۱۰۰ درصد مجموعه داده آزمایش استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (`overfit`) روی مجموعه داده آزمایش انجام میشود.** |
| :--: |
# خروجی
پیشبینیهای مدل خود بر روی دادگان آزمایش (`test.csv`) را در فایلی با نام `output.csv` قرار دهید.
این فایل باید شامل یک ستون `prediction` باشد. در سطر `i` ام از این ستون باید پیشبینی مدل شما روی دادهی با اندیس `i` باشد. بعد از آمادهسازی فایل `output.csv`، آن را برای ما بارگذاری کنید.
## نام ستون و پنج خط از نمونه خروجی فایل `output.csv`
| prediction |
|:----------:|
| reverse |
| correct |
| correct |
| reverse |
| reverse |
<details class="yellow">
<summary>
**توجه**
</summary>
استفاده از وزن مدلهای از پیش آموزش دیده (pretrained) برای تسهیل آموزش مدل خود، در سوالات مانعی ندارد.
</details>
<details class="red">
<summary>
**هشدار** 😱
</summary>
فراموش نکنید که **قبل از پایان زمان مسابقه**، **بایستی** تمامی کدهای این مسابقه را از قسمت **بارگذاری کُد** برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیحات قسمت **بارگذاری کُد**، خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهند شد.
</details>
تشخیص جهت زمان
بهمنظور جلوگیری از هر گونه تقلب و شبهههای احتمالی که منجر به ضایع شدن حق شما شود، شما بایستی که فایل کد هر سوال را ( فایل `.py`) در قالب **یک** فایل زیپ در اینجا بارگذاری نمایید.
## در صورتی که پس از پایان زمان مسابقه، این فایل توسط شما بارگذاری نشده باشد، شما از جدول مسابقات **حذف** خواهید شد.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید, بایستی که از قسمت `file` و زیرقسمت `Download` خروجی `.py` را دریافت و آن را ارسال کنید. ارسال فایلهای `jupyter` مانند `.ipynb` مورد قبول واقع نخواهند شد و **فقط فایل `.py`** پذیرفته میشود.
بنابراین بهازای هر سوال (که به آن پاسخ دادهاید) ، یک فایل کد به نام آن سوال ایجاد و تمامی کدهای مربوط به آن سوال را در آن قرار دهید. در نهایت، همه فایلها را زیپ کرده و در این قسمت **فقط یک فایل زیپ** ارسال کنید.
یعنی پنج فایل `q1.py` و `q2.py` و `q3.py` و `q4.py`و `q5.py` را زیپ کرده و فقط همان یک فایل زیپ را در این سوال آپلود کنید.
# توجه: از ارسال دادهها بپرهیزید!