چطور نشان نظرات کاربران خود را با استفاده از ماشین لرنینگ تحلیل می‌کند؟

استفاده نشان از مدل SVM برای دسته‌بندی نظرات کاربران

افزایش روزافزون کاربران نقشه و مسیریاب نشان باعث شده هر روز به تعداد فیدبک‌هایی که از کاربرها دریافت می‌کنیم هم اضافه بشه. از اونجایی که این فیدبک‌ها شامل نظرها و پیشنهادهای کاربرها در مورد بخش‌های مختلف اپلیکیشن می‌شه، برای ما از اهمیت زیادی برخورداره. از طریق بررسی اون‌هاست که می‌تونیم عملکرد اپلیکیشن رو بهبود بدیم،‌ تجربه کاربری رو بهتر کنیم و به نقاط قوت و ضعف اپلیکیشن پی ببریم. ما با بررسی و پاسخ به فیدبک‌ها، می‌تونیم نیازهای واقعی کاربرها رو بسنجیم و رضایت اون‌ها رو جلب کنیم.

شرح مساله

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

از اونجایی که برای بررسی تمام فیدبک‌ها زمان زیادی مورد نیازه، ما با در نظر گرفتن پارامترهای زیر، الگوریتمی رو برای دسته‌بندی اون‌ها پیاده‌سازی کردیم:

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

تعیین جنس داده‌ها

ما برای شناسایی انواع فیدبک‌هایی که کاربرها ارسال می‌کنن، از تجربه و تخصص تیم پشتیبانی و همچنین قابلیت‌های اصلی اپلیکیشن استفاده می‌کنیم و با تحلیل دقیق فیدبک‌ها، تونستیم ۶ دسته اصلی زیر رو شناسایی کنیم:

۱. مشکل ترافیک: هرگونه مشکلات مرتبط با پیش‌بینی و تشخیص ترافیک، راه‌های عبور و مسیریابی.

۲. مشکل اپلیکیشن: مشکلات مربوط به عملکرد و عملیات اپلیکیشن مثل خطاها، خروج ناگهانی از اپلیکیشن و غیره.

۳. مشکل GPS: مشکلات مرتبط با عملکرد GPS و دقت مکان‌یابی.

۴. پیشنهاد: پیشنهادات و ایده‌های بهبود و ارتقای اپلیکیشن.

۵. نارضایتی: فیدبک‌هایی که نارضایتی کاربر رو نشون می‌ده.

۶. تشکر: فیدبک‌ها و نظرات شامل کلمات تحسین‌آمیز و قدردانی.

حالا هر فیدبک می‌تونه در یک یا چند دسته اصلی قرار بگیره. ما با شناسایی دسته‌های مختلف، به دنبال یک مجموعه داده برچسب‌خورده هستیم تا بتونیم یک الگوریتم نظارت‌شده (supervised) رو بر روی این داده‌ها آموزش بدیم. برای این مجموعه داده برچسب‌خورده نیاز به تعداد کافی نمونه از هر دسته داریم.

روش پیشنهادی ما

پس از جمع‌آوری و برچسب‌گذاری داده‌ها، نوبت به پیش‌پردازش داده‌های متنی‌‌ می‌شه. هدف از این مرحله، پاکسازی متن به‌منظور حذف اطلاعات اضافی و کاهش میزان نویز در داده‌هاست. برای مرحله پیش‌پردازش، باید گام‌های زیر رو برداریم:

  • حدف نویز: ممکنه در فیدبک‌های ارسالی، با کاراکترهای اضافی،‌ نمادها و اطلاعات غیر ضروری روبه‌رو بشیم که باعث کاهش دقت مدل بشن. با حذف این نویزها، با داده‌های قابل‌فهم‌تری سروکار داریم.
  • یکسان‌سازی داده‌ها: با تبدیل اعداد انگلیسی به فارسی و یکدست‌سازی داده‌ها در شکل اصلی، متن‌های مختلف در یک قالب یکنواخت قرار می‌گیرن. این کار باعث کاهش ابهام در معانی کلمات و افزایش تشخیص‌پذیری مدل می‌شه.
  • حذف استاپ‌وردها (stopword): استاپ‌وردها کلماتی مثل حروف اضافه هستن که معمولا معنی خاصی ندارن و حذف اون‌ها باعث می‌شه تا مدل بتونه دقت و تمرکز بیشتری روی ویژگی‌های معنادار در داده‌ها بذاره.

با پیش‌برد این مرحله، وارد مرحله بعدی یعنی استخراج ویژگی‌های متنی‌ می‌شیم. این کار از طریق روش TF-IDF انجام می‌شه. در این روش می‌تونیم کلمات یک متن رو بر اساس اهمیتی که دارن، در متن نشون بدیم. این روش، دو مفهوم اصلی‌ رو شامل می‌شه:

1.Term-Frequency

این مفهوم، تعداد تکرار یک کلمه در متن رو نشون می‌ده. هر چقدر این تکرار در متن بیشتر به چشم‌بخوره، TF عدد بالاتری رو نشون می‌ده.

2.Inverse-Document-Frequency

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

با استفاده از روش TF-IDF، تکرار و اهمیت کلمه‌ها در هر فیدبک محاسبه می‌شه. این ویژگی، برای هر کلمه در متن یک فیدبک به دست میاد و نشون می‌ده که هر کلمه چقدر اهمیت داره و تا چه میزان تاثیرگذاره.

به‌کارگیری این روش، به مدل کمک می‌کنه تا کلمات مهم و تعیین‌کننده رو در هر فیدبک شناسایی کنه و بر اساس اون‌ها،‌ تصمیم‌گیری دقیق‌تری انجام بده. به بیان دیگر، روش TF-IDF به مدل کمک می‌کنه تا اطلاعات مهم و تاثیرگذار در هر فیدبک رو با دقت بیشتری استخراج کنه.

انتخاب یک مدل یادگیری ماشین

حالا با گذر از مرحله بررسی و نمایش ویژگی‌های متنی، به مرحله بعدی در فرآیند تحلیل متن می‌رسیم: انتخاب یک مدل یادگیری ماشین مناسب.

ما با توجه به ابعاد و ویژگی‌های متنی، مدل (SVM(Support Vector Machine رو به‌عنوان یک گزینه مناسب انتخاب کردیم. SVM یک الگوریتم یادگیری ماشین‌ هست که برای دسته‌بندی و رگرسیون به کار می‌ره. در واقع، SVM با استفاده از توانایی خودش در ایجاد حاشیه (margin) بین دسته‌ها، می‌تونه به تفکیک دقیق بین دسته‌های مختلف فیدبک‌ها کمک کنه.

از طرفی،‌ SVM قابلیت کنترل پیچیدگی مدل رو داره و مقاومت خوبی در برابر برخی مشکلات ناشی از تعداد بالا و نویز در داده‌ها نشون می‌ده. این ویژگی می‌تونه به دقت و عملکرد بهتر مدل در پیش‌بینی و تحلیل متن کمک کنه.

ما در نهایت ارزیابی این مدل بر روی داده‌های تست رو با معیارهای F1-score ,Precision ,Recall انجام دادیم و مطمئن شدیم که این مدل، دقت قابل‌قبولی داره. نمودار زیر پیش‌بینی‌های مدل برای دسته‌های مختلف در یک هفته رو نشون می‌ده (با توجه به اینکه هر فیدبک می‌تونه در چند دسته قرار بگیره، مجموعه درصد دسته‌ها می‌تونه بیشتر از ۱۰۰ بشه):

نمودار درصد دسته‌های مختلف
نمودار درصد دسته‌های مختلف

به‌روزرسانی مدل

یکی از چالش‌هایی که برای کارایی مدل با اون روبه‌رو هستیم، تغییراتی‌ هست که در طول زمان در ویژگی‌های اپلیکیشن پیش میاد و باعث می‌شه جنس فیدبک‌ها تغییر کنه.

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

علاوه‌براین، با مقایسه دقت مدل جدید با نسخه قبلی، اطمینان حاصل می‌کنیم که مدل جدید پرفورمنس بهتری داره و در این صورت، با مدل قبلی جایگزین می‌شه.

در اینجا، برخورداری از یک سیستم مانیتورینگ آنلاین هم اهمیت ویژه‌ای داره. این سیستم به ما امکان می‌ده تا به‌صورت پویا دقت مدل رو در محیط عملیاتی مانیتور کنیم و هرگونه کاهش در کارایی رو به‌سرعت تشخیص بدیم. برای نمونه نمودار زیر درصد هر دسته را در روزهای مختلف رو نشون میده:

نمودار روزانه به‌ازای هر دسته
نمودار روزانه به‌ازای هر دسته

با تحلیل نتایج مانیتورینگ آنلاین، می‌تونیم اطمینان حاصل کنیم که مدل به‌درستی داده‌ها رو درک می‌کنه و توانایی پیش‌بینی دقیق رو حفظ کرده.

به‌طور کلی می‌تونیم فرآیند باز آموزش مدل رو در شکل زیر خلاصه کنیم:

چرخه باز آموزش مدل
چرخه باز آموزش مدل

دستاوردهای مدل SVM در نشان

مدلی که در نظر گرفتیم، می‌تونه با دقت قابل‌قبولی نظرات کاربرها رو دسته‌بندی کنه. استفاده از این مدل در فرآیند بررسی فیدبک‌ها، بهره‌وری سیستم رو افزایش داده و به تیم پشتیبانی اجازه می‌‌ده تا به جای صرف وقت برای تحلیل و بررسی دستی نظرات، روی بهبود ویژگی‌های اپلیکیشن و ارتقای تجربه کاربری تمرکز کنه. این سیستم می‌تونه به‌طور مستمر با داده‌های ورودی جدید به‌روز بشه و به این ترتیب، هم دقت قابل‌قبولی داشته باشه و هم با تغییرات و نیازهای متغیر کاربرها همگام‌سازی بشه.