| مجموعهدادهی سوال را میتوانید از [این لینک](/contest/assignments/65406/download_problem_initial_project/223477/) دانلود کنید.|
| :--: |
آزمایشگاه پردازش زبان طبیعی (*Natural Language Processing*) دانشگاه فناور اندیشان قصد توسعه یک **مجموعهدادهی فارسی (Dataset)** را دارد. اعضاء این آزمایشگاه تصمیم گرفتهاند بعد از جمعآوری مجموعهداده اقدام به پیشپردازش آنها کنند. برای انجام این کار مراحلی طراحی شدهاست که به شرح زیر است:
### پرسش اول
برای هر فایل، نسبت تعداد **نویسهای (Character)** که بیشترین فراوانی را دارد به تعداد کل نویسههای آن فایل را تعیین کنید.
#### خروجی نمونه
برای خروجی این بخش در یک فایل با نام `result_1.csv`، در ستون اول با نام `file_name` نام فایل و در ستون دوم با نام `char_ratio` نسبت تعداد نویسهای که بیشترین فراوانی را دارد به تعداد کل نویسههای آن فایل را درج کنید. (دقت داشته باشید این اعداد و نامها برای نمونه هستند و الزامی به درستی آنها نیست.)
|file_name|char_ratio|
|:-:|:-:|
|1.txt|0.2|
|2.txt|0.3|
### پرسش دوم
برای هر فایل، نسبت تعداد **کلمه** (هر کلمه عبارتی است که بین دو فاصله قرار میگیرد) که بیشترین فراوانی را دارد به تعداد کل کلمات آن فایل را تعیین کنید.
#### خروجی نمونه
برای خروجی این بخش در یک فایل با نام `result_2.csv`، در ستون اول با نام `file_name` نام فایل و در ستون دوم با نام `word_ratio` نسبت تعداد کلمهای که بیشترین فراوانی را دارد به تعداد کل کلمات آن فایل را درج کنید. (دقت داشته باشید این اعداد و نامها برای نمونه هستند و الزامی به درستی آنها نیست.)
|file_name|word_ratio|
|:-:|:-:|
|1.txt|0.2|
|2.txt|0.3|
### پرسش سوم
برای هر فایل، نسبت تعداد **خطی** (انتهای خط شامل کاراکترهای `\n` یا `\r` می شود) که بیشترین فراوانی را دارد به تعداد کل خطهای آن فایل را تعیین کنید.
#### خروجی نمونه
برای خروجی این بخش در یک فایل با نام `result_3.csv`، در ستون اول با نام `file_name` نام فایل و در ستون دوم با نام `line_ratio` نسبت تعداد خطی که بیشترین فراوانی را دارد به تعداد کل خطوط آن فایل را درج کنید. (دقت کنید در تمامی قسمتها خروجی نمونه است و الزاماً جواب درست نیستند.)
|file_name|line_ratio|
|:-:|:-:|
|1.txt|0.2|
|2.txt|0.3|
### پرسش چهارم
برای هر فایل، نسبت تعداد **خطوط کوتاه** به تعداد کل خطهای آن فایل را تعیین کنید. خط کوتاه، خطی است که **کمتر از ۱۰۰ کاراکتر** داشته باشد و انتهای خط شامل نویسههای `\n` یا `\r` میشود.
#### خروجی نمونه
برای خروجی این بخش در یک فایل با نام `result_4.csv`، در ستون اول با نام `file_name` نام فایل و در ستون دوم با نام `short_line_ratio` نسبت تعداد خطوط کوتاه به کل خطوط آن فایل را درج کنید. (دقت کنید در تمامی قسمتها خروجی نمونه است و الزاماً جواب درست نیستند.)
|file_name|short_line_ratio|
|:-:|:-:|
|1.txt|0.2|
|2.txt|0.3|
### پرسش پنجم
برای هر فایل زبان اول و دوم (دو زبانی که متن فایل با بیشترین احتمال متعلق به آن زبانهاست) و احتمال مربوط به هر کدام را تعیین کنید. (برای تشخیص زبان متن از مدل موجود در [این لینک](https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.ftz) استفاده کنید و در ورودی مدل نویسههای `\n` و `\r` را حذف کنید.)
<details class="violet">
<summary>**مثال**</summary>
برای مثال متن زیر را در نظر بگیرید:
|پردازش زبان طبیعی یک وظیفه بسیار چالش برانگیز است، مثل تفسیر شعر الا یا ایهاالساقی ادر کاسا ونا ولها|
|:-:|
این متن با احتمال 0.9036 درصد فارسی و با احتمال 0.0123 درصد عربی است.
</details>
#### خروجی نمونه
برای خروجی این بخش در یک فایل با نام `result_5.csv`، در ستون اول با نام `file_name` نام فایل و در ستون دوم با نام `1st_language` اولین پیشبینی و در ستون سوم با نام `1st_percentage` احتمال آن (اولین پیشبینی) و در ستون چهارم با نام `2nd_language` دومین پیشبینی و در ستون پنجم با نام `2nd_percentage` احتمال آن (دومین پیشبینی) را درج کنید. (دقت داشته باشید این اعداد و نامها برای نمونه هستند و الزامی به درستی آنها نیست.)
|file_name|1st_language|1st_percentage|2nd_language|2nd_percentage|
|:-:|:-:|:--:|:-:|:-:|
|1.txt|fa|0.9036|ar|0.0141|
|2.txt|fa|0.8934|ar|0.1012|
### پرسش ششم
برای هر کدام از فایلها با استفاده از مدل زبانی [HooshvareLab/gpt2-fa](https://huggingface.co/HooshvareLab/gpt2-fa) معیار **perplexity** را محاسبه کنید.
<details class="yellow">
<summary>**راهنمایی**</summary>
معیار *perplexity* به این صورت حساب میشود که از ابتدای متن شروع کرده و هر بار یک پنجره با طول حداکثر ۲۵۶ (`max_length=256`)(که البته در انتهای متن این پنجره ممکن است به خاطر گام آخر، طول کمتری داشته باشد) در نظر گرفته و با استفاده از مدل احتمال کلمه بعدی در خود متن را بهدست آورید و با استفاده از تابع هزینه `CrossEntropyLoss` مقدار **خطا (loss)** را محاسبه کنید و این کار را تا آخر متن ادامه دهید و پنجره را در هر مرحله ۶۴ (`stride=64`) واحد جلو ببرید و نهایتا از تمام خطاها میانگین بگیرید)
توضیحات بیشتر مربوط به معیار *perplexity* و نحوهی محاسبه آن را میتوانید در [این لینک](https://web.stanford.edu/~jurafsky/slp3/3.pdf) ببینید.
</details>
#### خروجی نمونه
برای خروجی این بخش در یک فایل با نام `result_6.csv`، در ستون اول با نام `file_name` نام فایل و در ستون دوم با نام `perplexity` مقدار معیار *perplexity* را درج کنید. (دقت داشته باشید این اعداد و نامها برای نمونه هستند و الزامی به درستی آنها نیست.)
|file_name|perplexity|
|:-:|:-:|
|1.txt|5.09|
|2.txt|4.54|
## خروجی نهایی
در نهایت برای ارسال پاسخ این سوال شش فایل `result_1.csv` ، `result_2.csv` ، `result_3.csv` ، `result_4.csv` ،`result_5.csv` و `result_6.csv` را فشرده (`zip`) کنید و با نام `result.zip` ارسال کنید.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.