با اپلیکیشن اسنپفود به راحتی میتوانید با چند کلیک ساده، رستورانها، کافهها و شیرینیفروشیهای نزدیک خودتان را جستوجو و از تجربه سفارش آسان اسنپفود لذت ببرید. 😋
![توضیح تصویر](QMedia Not Supported)
فروشندگان میتوانند اقلام خوراکی خود را در اسنپفود قرار دهند تا کاربران با بررسی قیمت و عکس خوراکیها و نظرات کاربران دیگر، خوراکی مورد نظر خود را انتخاب کنند.
شما به عنوان یک سفارشدهنده غذا، میتوانید از نظرات دیگر مشتریان راجع به کیفیت یک رستوران آگاه شوید. بهعنوان مثال، میتوانید میزان لذیذ و خوشمزه بودن قرمهسبزی یک یا چند رستوران را با توجه به نظرات ثبتشده سفارشدهندگان پیشین بسنجید.
سپس، خودتان نیز میتوانید تجربهتان راجع به سفارش را با دیگران به اشتراک بگذارید. پس از دیدگاه سفارشدهنده، نظرات بسیار پراهمیت هستند.
از دیدگاه اسنپفود نیز نظرات بسیار مهم هستند زیرا میتواند عملکرد همکاران (رستورانها، تولیدکنندگان غذا و پیک) را از طریق آن رصد کند تا بتواند میزان رضایت مشتریان را افزایش دهد. 😎
در این سوال میخواهیم به اسنپفود در تحلیل احساس موجود در نظرات، کمک کنیم. 🤗
دادگان
دادگان این مسئله را میتوانید از این لینک دانلود کنید. هنگامی که این فایل را از حالت فشرده خارج کنید. پوشه comments
را میبینید. در صورتی که وارد این پوشه شوید، فایل آموزش (train.csv
) و آزمایش (test.csv
) را مشاهده میکنید. فایل آموزش، دارای ساختار زیر (با دو ستون) اس:
نام ستون | توضیحات ستون |
---|---|
comment | نظر یک مشتری راجع به یک سفارش |
date | زمان ثبت نظر |
عمده نظرات موجود در ستون comment
به زبان فارسی هستند؛ اما تعداد محدودی از نظرات وجود دارند که به زبان انگلیسی ثبت شدهاند. مدیریت این چالش بخشی از فرایند حل مسئله است.
همچنین تنها تفاوت دادگان آموزش با آزمایش در این است که دادگان آزمایش، ستون date
ندارند.
نداشتن برچسب
دادگان آموزش و آزمایش هیچگونه برچسبی ندارند. همانطور که در بخش بعدی (صورت مسئله) خواهید دید، شما خودتان باید برچسب هر نظر را مشخص کنید.
محرمانگی
به دلیل رعایت محرمانگی دادگان، از انتشار نام فرد نظردهنده، شناسه سفارش و اطلاعات رستوران/کافه/شیرینیفروشی مربوطه، معذوریم! 😉
توجه
به علت فارسی بودن متن نظرات، ممکن است نرمافزار اکسل در نمایش آن با مشکل مواجه شود. بر فرض اینکه از زبان پایتون استفاده میکنید، کتابخانه پانداس در بارگذاری متون فارسی به شما میتواند کمک کند.
صورت مسئله
اسنپفود از شما میخواهد positive
یا negative
بودن نظرات را مشخص کنید. دسته positive
نظراتی را نشان میدهد که ثبتکننده نظر، از سفارش خود راضی بوده و احساس مثبتی از تعامل با اسنپفود و همکارانش بهدست آوردهاست. در مقابل، دسته negative
نظراتی را نشان میدهد که ثبتکننده آن احساس خوبی از سفارش خود نداشتهاست.
شما بایستی که با استفاده از دادگان آموزش، بتوانید مُدلی بسازید که احتمال positive
بودن احساس نظرات موجود در دادگان آزمایش (test.csv
) را شناسایی کند.
راهنمایی
شاید یکی از روشهای زیر، بتواند به شما در حل این مسئله کمک بکند:
- ابتدا با استفاده از یادگیری بدوننظارت (
unsupervised
)، نظرات فایلtrain.csv
را به دو دستهpositive
وnegative
گروهبندی کنید، سپس با روشهای یادگیری نظارتشده (supervised
)، مدلی را آموزش دهید که بتواند احتمالpositive
بودن یک نظر را تخمین بزند. - خودتان و یا با استفاده از روشهای قانونمند (
rule-based
) مانندweak supervision
اقدام به برچسبزدن همه یا قسمتی از دادگان آموزش بکنید، سپس با روشهای یادگیری نظارتشده (supervised
)، مدلی را آموزش دهید که بتواند احتمالpositive
بودن یک نظر را تخمین بزند. - یا استفاده از هر روش دیگر که مرتبط با تحلیل داده/متن، یادگیری ماشین و عمیق است.
ارزیابی
امتیاز نهایی مُدل شما تابعی از سطح زیر ناحیه نمودار ROC
است. برای مطالعه بیشتر در مورد این نمودار میتوانید ویکیپدیا یا راهنمای کوتاه نکات و ترفندهای یادگیری ماشین را مطالعه کنید.
امتیاز نهایی مدل شما، طبق فرمول زیر محاسبه میشود: $$ score = ((AUCROC\times100)-50) \times4$$
توضیحات
علت استفاده از این فرمول برای امتیازدهی، این است که اگر به صورت تصادفی برای نظرات عددی پیشبینی کنید، auc_roc
مدل شما ۰.۵ خواهد بود. بنابراین تنها مدلهایی پذیرفته میشوند که دارای auc_roc
بیشتر از ۰.۵ باشند. توجه داشته باشید که بیشترین امتیاز ممکن از این سوال ۲۰۰ و کمترین امتیاز ممکن، صفر است.
خروجی
پیشبینیهای مدل خود بر روی دادگان آزمایش (test.csv
) را در فایلی با نام output.csv
قرار دهید. این فایل باید دارای یک ستون به اسم prediction
باشد که ردیف i ام ستون prediction
، پیشبینی شما (احتمال positive
بودن نظر - عددی بین صفر و یک) برای نظر ردیف i ام از فایل test.csv
باشد (دقت کنید که ستون باید حتما دارای header
باشد). بعد از آمادهسازی فایل output.csv
، آن را برای ما بارگذاری کنید.
نمونه خروجی فایل output.csv
(فقط سه خط اول به همراه نام ستون)
prediction
0.723
0.516
0.281
توجه
حتما فایل output.csv
باید دارای ۱۴,۰۰۰ سطر (بدون در نظر گرفتن header
) و یک ستون باشد.
همچنین نام ستون بایستی بدون space
در قبل و بعد از نام آن، باشند. در غیر این صورت، سیستم داوری نمرهای به شما نخواهد داد.
هشدار 😱
فراموش نکنید که قبل از پایان زمان مسابقه، بایستی تمامی کدهای این مسابقه را از قسمت بارگذاری کُد برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از jupter notebook
استفاده می کنید بایستی همانند توضیحات قسمت بارگذاری کُد، خروجی .py
را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای jupyter
همانند .ipynb
مورد قبول واقع نخواهند شد.
ارسال پاسخ برای این سؤال