تحلیل احساس نظرات


با اپلیکیشن اسنپ‌‌فود به راحتی می‌توانید با چند کلیک ساده، رستوران‌ها، کافه‌ها و شیرینی‌فروشی‌های نزدیک خودتان را جست‌و‌جو و از تجربه سفارش آسان اسنپ‌فود لذت ببرید. 😋

توضیح تصویر

فروشندگان می‌توانند اقلام خوراکی خود را در اسنپ‌فود قرار دهند تا کاربران با بررسی قیمت و عکس خوراکی‌ها و نظرات کاربران دیگر، خوراکی مورد نظر خود را انتخاب کنند.

شما به عنوان یک سفارش‌دهنده غذا، می‌توانید از نظرات دیگر مشتریان راجع به کیفیت یک رستوران آگاه شوید. به‌عنوان مثال، می‌توانید میزان لذیذ و خوشمزه بودن قرمه‌سبزی یک یا چند رستوران را با توجه به نظرات ثبت‌شده سفارش‌دهندگان پیشین بسنجید.

توضیح تصویر

سپس، خودتان نیز می‌توانید تجربه‌تان راجع به سفارش را با دیگران به اشتراک بگذارید. پس از دیدگاه سفارش‌دهنده، نظرات بسیار پراهمیت هستند.

از دیدگاه اسنپ‌فود نیز نظرات بسیار مهم هستند زیرا می‌تواند عملکرد همکاران (رستوران‌ها، تولید‌کنندگان غذا و پیک) را از طریق آن رصد کند تا بتواند میزان رضایت مشتریان را افزایش دهد. 😎

در این سوال می‌خواهیم به اسنپ‌فود در تحلیل احساس موجود در نظرات، کمک کنیم. 🤗

دادگان🔗

دادگان این مسئله را می‌توانید از این لینک دانلود کنید. هنگامی که این فایل را از حالت فشرده خارج کنید. پوشه 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×100)50)×4 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
Plain text
توجه

حتما فایل output.csv باید دارای ۱۴,۰۰۰ سطر (بدون در نظر گرفتن header) و یک ستون باشد.

همچنین نام ستون‌ بایستی بدون space در قبل و بعد از نام آن، باشند. در غیر این صورت، سیستم داوری نمره‌ای به شما نخواهد داد.

هشدار 😱

فراموش نکنید که قبل از پایان زمان مسابقه، بایستی تمامی کد‌های این مسابقه را از قسمت بارگذاری کُد برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی ‌کنید.

توجه داشته باشید که اگر از jupter notebook استفاده می کنید بایستی همانند توضیحات قسمت بارگذاری کُد، خروجی .py را دریافت و برای ارسال در نظر بگیرید. ارسال فایل‌های jupyter همانند ‍‍.ipynb مورد قبول واقع نخواهند شد.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.