پیش‌بینی بهترین زمان برای ارسال خبرنامه/نوتیفیکیشن

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

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

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

برای انتخاب محتوای شخصی‌سازی شده که اندپوینت‌های (Endpoint) متعددی را در قالب ویجت در اختیار کسب‌و‌کارها مشتری قرار می‌دادیم. مشکلی در حوزه انتخاب محتوای شخصی برای هر کاربر نداشتیم. ولی در زمانبندی ارسال نیازمند توسعه سرویس بودیم.

مسئله

مشتری از ما خواسته بود: فرض کن می‌خواهیم برای یک میلیون کاربر طی ۲۴ ساعت آینده تونتیفیکشن ارسال کنیم، بهترین زمان برای ارسال به هریک چه ساعتی‌ست؟

راه‌حل

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

در حوزه پیش‌بینی زمان‌های مناسب برای تعامل با کاربر کاری نکرده بودیم. در نهایت پس از سعی‌و‌خطای بسیار زیاد (بسیار زیاد) به روشی کارامد و ترکیبی از تکنیک‌های آماری و احتمالاتی و پردازش سری‌های زمانی دست یافتیم که سرویس را قادر به ارائه پیشبینی بر روی سطح تعامل کاربر با کسب‌و‌کار آنلاین شما می‌کند.

timeBasedForecast

پیاده سازی

در سرویس ما پیام‌های دریافتی به سری‌های زمانی (Time-series) تبدیل می‌شوند. به کمک الگوریتم و ساختمان‌داده‌های مناسب و گاه ابتکاری توانستیم گذشته تعامل کاربران را در حجم محدودی از حافظه با کارایی فراخوانی مطلوب نگهداری کنیم. سپس به کمک الگوریتم‌های ویژه پردازش سری‌های زمانی به حذف استثنا‌های (Anomaly) در زندگی کاربر پرداختیم. فصل‌های تکرار (Seasonality) هر کاربر را جداگانه شناسایی کردیم. برای برخی کابران تکرار در بازه‌های ۲۴ ساعت، برای برخی در بازه‌های هفتگی است. این فصل‌ها متاثر از سبک‌زندگی، شغل، طبقه اقتصادی و … برای هر فرد متفاوت و یکتاست.

فراخوانی

فراخوانی سرویس پیش‌بینی زمانی، مثل بقیه اندپوینت‌های سرویس ما بسادگی آب خوردن است. تصویر زیر یک نمونه فراخوانی و پاسخ سرویس را نمایش می‌دهد. در صورتی که بازه زمانی ذکر نشود، به صورت پیش فرض برای ۲۴ ساعت پیش رو در قاب‌های ۱ ساعته، پیش‌بینی ارائه می‌شود:

Screen Shot 2017-03-05 at 6.46.39 PM

این اندپوینت نیز بلادرنگ (Real-Time) است. x زمان پیش رو از اکنون بر حسب ساعت و y سطح تعامل کاربر با کسب‌و‌کار شماست.

تصویر زیر نمونه‌ای مقایسه‌ای از پیش بینی برای سه کاربر را نمایش می‌دهد:

Screen Shot 2017-03-05 at 6.46.32 PM

و تصویر زیر چارتی تنظیم شده بر اساس داده‌های جدول فوق است:

Screen Shot 2017-03-05 at 6.46.18 PM

آنچه در محاسبه نتایج اثر گذار است، رفتار گذشته کاربر (افرادی) رفتار جمعی کاربران نزدیک (در خوشه) و پیش‌بینی برای ساعات آینده (انفرادی).

نمونه‌هایی از پرسش‌ها:

  • ساعت ۱۰ صبح فردا برای کدام ۱۰۰ کابر نوتیفیکشن ارسال کنم که مشاهده کند؟ (بلاک نکند)
  • در ۲۴ ساعت آینده برای این ۱۰۰ کاربر چه زمان‌هایی مناسب ارسال نوتیفیکیشن است؟
  • طی ۱۲ ساعت آینده بهترین ساعت برای ارسال نوتیفیکیشن با حداکثر اثر گذاری کدام است؟

 

با ما در تماس باشید

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

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

دیالوگ تلگرامی کوتاهی که با یکی از مشتریان سرویس داشتیم ما را بر این داشت تا کیفیت خروجی‌ هر ویجت را جداگانه در اختیار مدیر سایت‌/اپ مشتری قرار دهیم.

طراحان و مدیران سایت از این پس می‌توانند کارایی تک تک ویجت‌های سرویس را زیر نظر گرفته و اثر بخشی تغییرات را در خروجی سرویس مشاهده کنند.

ConversionRate

کیفیت کارکرد ویجت‌ها در اندپوینت metrics/ به نمایش در می‌آید:

{
 “serverPort”:”3100″,
   “serverClass”:”Gold”,
   “serverVersion”:”2.9″,
   “percentUsedMemory”:8,
   “usedMemoryMB”:507,
   “usedMemory”:107941392,
   “maxMemoryMB”:4096,
   “freeDiskSpace”:31595282432,
   “freeDiskSpaceMB”:30131,
   “freeDiskSpaceGB”:29,
   “totalUsers”:15304932,
   “totalItems”:9361,
   “numProcessors”:4,
   “hostName”:”recommenderir.dev.local”,
   “isReady”:true,
   “totalRequests”:2423431,
   “lastHourRequests”:51767,
   “totalClientErrors”:52,
   “totalServerErrors”:1719,
   “allThreadsCpuTime”:33425162000,
   “avgErr”:0.0,
   “uptimeVerbose”:”0:01:22:45″,
   “threadCount”:230,
   “loadAvg”:3.0775390625,
   “osName”:”Mac OS X”,
   “osVersion”:”10.x”,
   “osArch”:”x86_64″,
   “statsAndMetrics”:[

{
“endpointName”:”SimilarityServlet”,
“totalRequests”:”233933″,
“lastHourRequests”:”5149″,
“averageMicroSecond”:”511″,
“lastHourAverageMicroSecond”:”511″,
“maxMicroSecond”:”6276″,
“lastHourMaxMicroSecond”:”2103″,
“totalClientErrors”:”38″,
“totalServerErrors”:”751″
},
{
“endpointName”:”TrendDetectionMidTimeServlet”,
“totalRequests”:”102692″,
“lastHourRequests”:”2697″,
“averageMicroSecond”:”491″,
“lastHourAverageMicroSecond”:”537″,
“maxMicroSecond”:”5709″,
“lastHourMaxMicroSecond”:”2314″,
“totalClientErrors”:”0″,
“totalServerErrors”:”0″
},
{
“endpointName”:”MostPopularItemsServlet”,
“totalRequests”:”534208″,
“lastHourRequests”:”1300″,
“averageMicroSecond”:”510″,
“lastHourAverageMicroSecond”:”560″,
“maxMicroSecond”:”6833″,
“lastHourMaxMicroSecond”:”1493″,
“totalClientErrors”:”0″,
“totalServerErrors”:”240″
},
{
“endpointName”:”RecommendServlet”,
“totalRequests”:”5493975″,
“lastHourRequests”:”13935″,
“averageMicroSecond”:”385″,
“lastHourAverageMicroSecond”:”494″,
“maxMicroSecond”:”9454″,
“lastHourMaxMicroSecond”:”521″,
“totalClientErrors”:”14″,
“totalServerErrors”:”728″
},


],
“hitRates”:{
      “recommendHitRate”:0.3770491803278688,
      “similarityHitRate”:0.29213483146067415,
      “trendHitRate”:0.27749576988155666,
      “mostPopularHitRate”:0.21428571428571427

      
   }
}

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

افزوده شدن بخش HitRate به سرویس در شناسایی مناسب‌ترین ویجت در هر صفحه از سایت و اپلیکیشن نیز کمک شایانی می‌کند. به کمک این داده‌ها می‌توان سایت/اپ را برای کسب بالاترین میزان نرخ تبدیل پیکربندی نمود.

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

در تولید خروجی بالا از دیتاست آزمایشی با تولید رفتار کاربر به صورت اتفاقی استفاده شده است.

شخصی‌سازی چیدمان محتوا

در اغلب سایت‌های مدرن چید‌مان آیتم‌ها و محتوا بر اساس علاقمندی کاربر یا دیگر پارامتر‌ها محاسبه می‌شود. دوران نمایش محتوا به شکل یکسان به تمام کاربران، مدت‌هاست که سپری شده است. هر کاربر باید بر اساس سلیقه و اولویت‌های خود محتوا را مشاهده نماید.

در راستای پاسخگویی به این نیازمندی کسب‌وکار‌های آنلاین به توسعه چند سرویس (ٍEnd-point) جدید نمودیم.
تصویر زیر را ملاحظه کنید. در سمت راست سایتی/اپلیکیشنی را نمایش می‌دهد که فارغ از سلیقه کاربران به آن‌ها آیتم‌هایی را نمایش می‌دهد. در این مدل چیدمان آیتم‌ها به صورت پیش‌فرض تعیین شده و به ازای تک تک کاربران تغییری مشاهده نمی‌شود.

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

ToBeArrangedItems

 

فراخوانی چنین خدمتی بر روی سرویس ما (recommender.ir) بسیار آسان است. تصویر زیر چگونگی بکارگیری این خدمت جدید را نمایش می‌دهد:

 

ToBeArrangedItems2

کاربرد‌های این خدمت جدید موارد زیر است:

  • مرتب‌سازی چیدمان محتوا در باکس‌های کناری سایت (اخبار و …)
  • مرتب‌سازی چیدمان محتوا در صفحه اصلی
  • مرتب‌سازی چیدمان محتوا در صفحه محتوا (صفحه کالا)
  • مرتب‌سازی چیدمان محتوا در اسکرین محدود موبایل
  • مرتب‌سازی و اولویت‌بندی نمایش نوتیفیکشن به کاربر
  • مرتب‌سازی محتوا در خبر‌نامه
  • و موارد بسیار دیگر…

شخصی‌سازی بلادرنگ در ابعاد بزرگ

پیرو پاسخگویی به نیاز‌های متعالی مشتریان recommender.ir که از بهترین کسب‌و‌کار‌های آنلاین ایران هستند،‌ به سمت توسعه سرویس‌های جانبی و تکمیلی و اصلاحاتی بر معماری پیش رفتیم.  API خدمات ما، در ساعات پیک بازدید چند‌میلیون فراخوانی در ساعت را پاسخگویی می‌کند. تمام این مدت زمان پاسخگویی سرویس‌های ما می‌بایست کمتر از ۱۰۰ میلی‌ثانیه باقی بماند. کنترل چنین بار کاری متغیری نیازمند توسعه ابزار‌هایی قابل اعتماد و سازگار با اکوسیستم خدمات ما بود.
از سویی خرابی در تجهیزات سخت‌افزاری، شبکه و زیرساخت نرم‌افزاری امری غیر قابل اجتناب است. لذا می‌بایست برای بازیابی از خطا روش‌هایی منطبق با استاندارد‌های بالای ارائه دهندگان خدمات ارائه می‌کردیم.

همچنین از آنجا که هر ماه ریلیز جدید ارائه می‌کنیم (recommender.ir هر سال ۱۲ نسخه جدید در پایان هر ماه شمسی ارائه می‌کند) می‌بایست به روزآوری‌ مکرر سرویس‌های متعدد مشتریان را بدون توقف و به صورت پیوسته و آرام انجام می‌دادیم. و چنین نیازمندی‌هایی ما را به سمت طراحی و توسعه معماری جدید و توسعه ابزار‌هایی تکمیلی جدید راهنمایی کرد.

توزیع‌شدگی (Distribution) و مقیاس‌پذیری خطی (Linear Scalability) راهکاری مدرن و متداول در پاسخگویی به چنین نیاز‌هایی‌ست.

recommender.ir از ابتدا (سال ۱۳۹۱) مبتنی بر معماری ریزسرویس (Microservices) توسعه یافته است. در آخرین نسخه‌های recommender.ir نیز از طیف متنوعی از ریز‌سرویس‌ها برای برپایی ارکستری بزرگ متشکل از ده‌ها(بدون محدودیت) ماشین و مقادیر بیشتری ریزسرویس‌های متنوع بهره می‌بریم.

انواع ریزسرویس‌هایی که توسط تیم توسعه recommender.ir توسعه یافته‌ عبارتند از:

  1. ریزسرویس‌های رکامندر (‌recommender.ir) در سه کلاس طلایی، نقره‌ای و برنزی، و دو گروه کلی تجارت‌الکترونیک و ارائه محتوا که هر دو گروه از API خارجی یکسان بهره‌ می‌برند
  2. ریزسرویس‌های کامنتوم (commentum.ir) که وظیفه تحلیل بلادرنگ متن کامنت‌های محاوره‌ای کاربران فارسی زبان و همچنین اسختراج کلید‌واژه ها را بر عهده دارد
  3. ریز‌سرویس‌های هلیو (helio.ir) که قادر به شناسایی شکل‌گیری پدیده‌های گوناگون و آنومالی در انبوه داده‌های دیگر سرویس‌ها هستند
  4. ریز‌سرویس‌ هایپراسپیس (hyperspace.ir) که وظیفه نمایه‌سازی(Data Visualization) از داده‌های دیگر سرویس‌ها را بر عهده دارد
  5. ریزسرویس‌های پراکسی (Proxy) ، و کش (API-Cache)
  6. ریز‌سرویس تنظیم بار (Load Balancer) که به برقراری توازن و کشسانی کمک می‌کند
  7. ریزسرویس تکثیر (Replicator) برای کپی داده‌ها و انتقال به سامانه‌های ذخیره‌سازی یا ساخت مدل رپلیکیشن
  8. ریز سرویس کانوکس (convex.ir) که در حال توسعه است و به کمک موارد ۱و ۲ به ارائه برخی تحلیل‌های شخصی از محتوا می‌پردازد

تمامی ریزسرویس‌های یاد شده به تناسب نیاز مشتری همچون قطعات لگو (Lego) در یکدیگر پلاگ شده و سرویس مورد نیاز مشتری در حوزه شخصی‌سازی تامین می‌گردد.

این خدمات در بهترین ترکیب قادر به ارائه کیفیت مطلوب (فارغ از ابعاد بار) و فراهم ساختن نهایت قابلیت دسترسی (High Availability) هستند. همچنین به روز آوری بدون توقف کارکرد سرویس را برای فراهم ساختن سطحی بسیار متعالی از هوشمندی و شخصی‌سازی خدمات در ابعاد بزرگ، ممکن می‌سازند.

تصویر زیر به چگونگی تبادل اطلاعات بین برخی از ریز‌سرویس‌های یاد شده در مدل‌های ‌‌B2B و  B2C اشاره می‌کند‌(سرویس‌های زیرساخت داده و شبکه نمایش داده نشده‌اند):

allprojects

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

screen-shot-2016-11-19-at-10-03-13-pm

 

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

zerosecondupgradetime

خوشحالیم که توانسته‌ایم بخشی از نیاز‌های شخصی‌سازی بزرگان اینترنت ایران را در زیر سایه سنگین تحریم‌های فناوری تامین کنیم.

پیشنهاد‌های مبتنی بر مکان(داخل محدوده)

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

طی ماه گذشته فیچر جدیدی پیاده‌سازی کردیم که امکان Geo-Fencing را به recommender.ir افزود. توسط این فیچر شما می‌توانید به تغداد نامحدود فضاهایی همچون هایپرمارکت، محله، خیابان، کوچه، پاساژ، استادیوم و … را تعریف کنید. این فرایند توسط اعلام طول و عرض جغرافیایی رئوس مکان‌های یاد شده انجام می‌گیرد. سپس می‌توانید آیتم‌هایی را نیز به یک یا چند محدوده اختصاص دهید. هر آیتم می‌تواند به هیچ یا چندین محدوده (indoor) منتسب شود.

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

تصویر زیر نمونه‌ای تمثیلی از نحوه کارکرد این فیچر است:

geofencing01

 

پنل نمایش داده‌ها

برای نمایش بهتر خروجی‌ سرویس‌ها به کمک سعید، یک دوست و همکار قدیمی مشغول توسعه یک پروژه به اسم هایپرسپیس (hyperspace.ir) شدیم. البته ۱۰۰ درصد کار اجرا رو سعید انجام می‌ده. چون نمایش‌ داده‌ها (Data Visualization) حوزه تخصصی اونه. به کمک بهترین فناوری‌ها مشغول توسعه است. پلیمر‌گوگل، d3.js و svg و همه چیزای خوبی که برای ساختن یک داشبورد حرفه‌ای نمایش‌داده‌ها انتظار میره رو به کار گرفته. نتیجه‌ اولین نمونه‌ها کاملا راضی کننده است.

این تصویر به بخشی از خروجی سرویس اشاره می‌کنه:

hyperspace-00

 

هایپرسپیس پنل مدریتی تمام سرویس‌های سوییت recommender.ir رو تشکیل می‌ده. همچنین نقطه اینتگرشن سناریو‌های کلان بیزنیس هم به شمار میاد.

تحلیل فارسی محاوره‌ای

قبلا هم از کامنتوم نوشتم. این سرویس به کمک recommender.ir میاد تا تحلیل کامنت‌های عجیب‌ و غریب کاربرای ایرانی در محیط‌های آنلاین رو ممکن کنه.
تصاویر زیر رو ملاحظه کنید:

نمونه اول:
samplecomments1

نمونه دوم:

samplecomments2

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

photo_2016-11-16_15-17-18

در تصویر بالا بهبود‌های حاصل در شناسایی کلید‌واژه‌های چند سیلابی را نیز مشاهده می‌کنید.

این سرویس قرار بود تنها در خدمت recommender.ir به ارائه خدمت بپردازد. ولی پس از پیشرفت‌های اولیه به این نتیجه رسیدیم که برای کسب‌و‌کارهایی که فارغ از رکامندر به سامانه تحلیل کامنت‌های محاوره‌ای کاربران فارسی زبان نیاز دارند، به صورت مستقل سرویس بدهد.

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

سعی کردیم همچنان سرعت و کیفیت‌ رو در حد استاندارد‌های جهانی (۱۰۰ میلی‌ثانیه) حفظ کنیم. هر کامنت در زمانی کمتر از ۱۰۰ میلی‌ثانیه پردازش شده و نتایج در اختیار سایت فراخواننده قرار می‌گیره.

این سرویس مستقل از زیان است.

کامنتوم بخشی از سوییت recommender.ir است.

نسخه ۲.۷ رکامندر با قابلیت‌هایی کم‌نظیر آماده شد

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

فراز و نشیب‌های آیتم‌/ویژگی‌های معمولی(غیر داغ)

نسخه ۲.۷ قابلیت‌های کم نظیری در زمینه نظارت بر فراز و نشیب علایق کاربران و استفاده حداکثری از گرایشات حداقلی کاربران دارد. تا قبل از نسخه ۲.۷ قادر به معرفی داغ ترین آیتم‌های کسب‌و‌کار در بازه‌های زمانی گوناگون بودیم. از این پس می‌توانید آیتم‌های میانی (غیر محبوب) کسب و کار خود را نیز رصد و مقایسه کنید. این مقایسه در سطوح کالا و ویژگی‌های کالا صورت می‌پذیرد.

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

مثال:

دستور زیر آیتم‌های ۱۰ الی ۱۴ را به لیست آیتم‌های تحت نظارت می‌افزاید. این آیتم‌ها ممکن است از بین هزاران آیتم انتخاب شده باشند:

supervisedItemsAdd/item10/item11/item12/item13/item14/item25/item34/item46/item22/item29

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

supervisedTrendLongTime:
[[“item12”,136.0],[“item10”,120.0],[“item13”,117.0],[“item11”,116.0],[“item14”,110.0] ,[“item34”,58.0],[“item46”,47.0],[“item29”,37.0],[“item25”,36.0],[“item22”,24.0]]

supervisedTrendMidTime:
[[“item34”,15.0],[“item11”,14.0],[“item12”,14.0],[“item46”,12.0],[“item25”,10.0],
[“item10”,8.0],[“item14”,8.0],[“item22”,7.0],[“item13”,7.0],[“item29”,5.0]]

 

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

supervisedTermsAdd/White/Black

supervisedTermTrendLongTime:

[["White",1258.0],["Black",1027.0]]

supervisedTermTrendShortTime:

[["Black",56.0],["White",44.0]]

چند سطر بالا بیانگر این موضوع هستند که رنگ مشکی دربازه زمانی طولانی محبوب بوده ولی در کوتاه مدت گرایش کاربران به سمت رنگ سفید است…

تصویر زیر به حوزه تحت پوشش کاربرد‌های جدید می‌پردازد. در نسخه ۲.۷ تمامی کالا‌ها بدون اغماض تحت رصد بلادرنگ قرار می‌گیرند:

trenddetection-expanation-copy

پیشنهاد‌هایی جذاب برای آخرین ثانیه‌ها

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

فرصتی برای راهنمایی وی در جهت هر چه غنی تر ساختن سبد خرید که منجر به افزایش رضایت وی و همچنین افزایش سود‌آوری می‌شود.

برای این آخرین ثانیه‌ها کاربرد‌هایی کم‌نظیر توسعه داده‌ایم. این کاربرد بر اساس وابستگی‌کالاها به یکدیگر (از نظر تقدم و تاخر در خرید) و همبستگی (Correlation) آیتم‌های قبلا خریداری شده عمل ‌می‌کند.

 

complementaccesories

برای فراخوانی این کاربرد کافیست آيتم‌هایی که کاربر در کارت خرید خود قرار داده است، به سرویس اعلام‌ نموده و فهرستی از آیتم‌های تکمیلی دریافت کنید. بفرض اینکه مشتری آيتم‌های ۳۶، ۲۴، ۵۰ و ۶۸ را در کارت خرید خود قرار داده است، ۱۰ آیتم پیشنهاد شده، بالاترین شانس تکمیل کارت خرید وی را دارا هستند:

 

mostDependentItems/item36/item24/item50/item68

[["item43",1.0],["item55",1.0],["item21",1.0],["item12",1.0],["item14",1.0],["item35",1.0]
,["item69",0.42910236],["item09",0.42357954],["item11",0.40323222],["item45",0.3912821]]

 

افزایش پایداری و بروز‌رسانی های بدون توفف

از این پس قادریم سرویس مشتری را بدون حتی یک ثانیه قطعی، بروز آوری کنیم. همچنین حوادثی همچون قطع برق و خرابی سخت افزار، در کارکرد سرویس خللی وارد نمی ‌سازد.  این نسخه از بهبود‌هایی اساسی در زمینه توازن بار (Load Balancing) و قابلیت دسترسی (High Availability) پویا بهره می‌برد. مدیریت پیکربندی و تغییرات در سمت سرویس ما انجام می‌پذیرد. لذا کسب و کار شما تنها به فراخوانی پیوسته کاربرد‌ها می‌پردازد.

تصویر زیر چگونگی پیکربندی سرویس‌ها در هنگام بهره‌برداری از قابلیت جدید است:

lbha

ترجمه کامنت به علاقمندی/عدم علاقمندی

در بسیاری موارد کاربران اینترنتی با نوشتن کامنت علاقه/عدم‌علاقه خود نسبت به یک کالا یا محتوا را اعلام می‌کنند. با فراخوانی کارکرد جدید comment می‌توانید کامنت‌های کاربران را نیز به علاقمندی ترجمه کنید. به مثال زیر توجه کنید:

comment_analysis%db%b2

کامنتوم از ابتدای مرداد به ارائه خدمت می‌پردازد. بهبودی که در نسخه ۲.۷ رکامندر انجام شد، دریافت کامنت‌ها توسط رکامندر و ارجاع آن به کامنتوم بود. در نسخه‌های قبل کامنت مستقیما به کامنتوم ارسال می‌شد.

 

لطفا نظرات و پیشنهادات خود را با ما در میان بگذارید.

کامنتوم، راه‌حلی برای تحلیل کامنت و ترجمه‌ آن به علاقمندی

پیرو همکاری در یک پروژه تحقیقاتی با کتابخانه ملی، به تحلیل و درک کامنت‌ کاربران علاقمند شده بودم. لذا در سال ۹۳ چهار دامنه برای پروژه‌هایی به دو نام کامنتوم و داکیومنتوم رجیستر کردم. همزمان یکی از دانشجویان دانشگاه شهیدبهشتی (همکلاسی) بر پایان نامه‌ای با موضوع Opinion Spam Detection کار می‌کرد. در آنزمان یکسال از عمر رکامندر می‌گذشت و موفقیت‌های کوچکی حاصل شده بود. ارائه مشاوره به آن همکلاسی و نیاز‌های روز افزودن کاربران وب ذهنم را حسابی درگیر کرده بود. تا آن زمان رکامندر قادر بود رفتار کاربر با ماوس (شامل کلیک، اسکرول…) را به علامندی ترجمه و طیف وسیعی از کاربرد‌ها در حوزه پیش‌بینی رفتار کاربر را در اختیار قرار دهد. ولی قادر به تحلیل کامنت‌ها نبودیم.

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

تا اوایل سال ۹۵ پیشرفت‌هایی جزئی حاصل شد. چرا که رکامندر تمام انرژی تیم بسیار کوچک ما را می‌بلعید. پیرو گسترش کمی و کیفی مشتریان رکامندر، با نیاز‌های بزرگان وب ایران در حوزه تحلیل کامنت به خوبی آشنا شده بودم. پس از نسخه ۲.۶ رکامندر که در پایان تیرماه ۱۳۹۵ ریلیز شد، فرصتی اندک حاصل شد تا به دو پروژه کامنتوم و هایپرسپیس (مصور سازی داده) بیشتر بپردازیم. توسعه هایپرسپیس را به یکی از بهترین برنامه‌نویسان وب ایران سپردم… بزودی خبرهای خوبی از هایپرسپیس می‌شنوید.

طی یکماه تمام ماژول‌هایی که در طول دو سال گذشته به صورت پراکنده پیرامون کامنتوم توسعه داده شده بود، یکپارچه شد. تست‌های اولیه ماورای انتظار بود.

در توسعه کامنتوم تاجایی که توانستیم از روش‌های کلاسیک پرهیز کردیم. چرا که نتایجی که از روش‌های کلاسیک حاصل می‌شد را قبلا آزموده بودیم. قصد ما ترجمه ماشینی یا ریشه یابی و کنترل صحت جملات نبود. ما به دنبال کشف ذائقه کامنت نویس بودیم. پس راهی دیگر بر گزیدیم.

تا انتهای مرداد دو محصول معرفی می‌کنیم:

۱. نسخه ۲.۷ رکامندر که به کمک کامنتوم، ارزش‌هایی عمیق تر و ماندگار تر خلق می‌کند. همچنین ۲.۷ مجهز به الگوریتم‌های طبقه بندی مشتریان (Customer Segmentation) است.

۲. نسخه اولیه کامنتوم که به صورت بلادرنگ کامنت کاربران فارسی را تحلیل نموده و به اعدادی قابل اندازه گیری بدل می‌کند.

اینتگرشنی که مدتهاست به دنبال آن بودیم آرام آرام شکل می‌گیرد:

comment_analysis-1024x663

 

در ابتدای سال ۹۴ با مساعدت شرکت محترم دیجی‌کالا، انبوهی از کامنت‌های خام کاربران در اختیار ما قرار گرفت. سعی کردیم کامنتوم مستقل از زبان / زمینه باشد. ولی نتوانستیم این وابستگی را به صفر برسانیم. لذا نسخه فعلی کامنتوم در پاسخ به نیاز‌های یک کسب و کار آنلاین (مشابه دیجی‌کالا) کارایی بالاتری به نمایش می‌گذارد.

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

با پایان شهریور استفاده صنعتی از کامنتوم را آغاز می‌کنیم.

شناسایی و پیش‌بینی محبوبیت آيتم‌ها / ویژگی‌ها (کاهش نرخ پرش)

recommender.ir برای محاسبه محبوبیت ‌آیتم‌ها/ویژگی‌ها طیف متنوعی از متد‌ها را در اختیار کاربران قرار می‌دهد. این متد‌ها عمدتا قادر به شناسایی آيتم‌هایی هستند که هم اکتون در گروه محبوبت‌ترین آیتم‌ها هستند.

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

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

trenddetection-expanation-copy-1024x684

همچنین برای شناسایی ویژگی‌هایی که در حال ترند شدن هستند سه متد دیگر در اختیار کسب‌و‌کار شما قرار دارد:

 

از تکنیک ‌های Drift Detection و Trend Detection در پیاده سازی این متد‌ها بهره گرفته‌ایم. این متد‌ها قادر به شناسایی زود‌هنگام آیتم‌ها هستند. برای بازه‌های زمانی کوتاه‌مدت، میان‌مدت و بلندمدت، بسته به نیاز کسب‌و‌کارتان قادر به فراخوانی این متد‌ها هستید.

تصویر زیر بازه‌های زمانی و نمونه‌هایی از خروجی را با ذکر مثال نمایش می‌دهد(برای مشاهده جزئیات روی تصویر کلیک کنید):termTrendDetection Expanation

مقایسه نتایج این متد‌ها با میزان فروش آیتم، سایت را در شناسایی زودهنگام اوج گرفتن نرخ پرش (Bounce Rate) نیز یاری می‌کند. خروجی‌های این متد‌ها باید با میزان فروش آیتم‌های سایت سنخیت داشته باشند. در صورتی که آيتمی در این فهرست‌ها رنک بالایی کسب کرده ولی از فروش بالایی برخوردار نیست، نرخ پرش برای آین آیتم، بیش از میزان نرمال آیتم‌های آن سایت است.

 

شناسایی اجزای محتوایی آیتم‌ها که در حال ترند شدن هستند، به کسب‌و‌کار شما امکان پیش‌بینی می‌دهد. تصویر زیر را ملاحظه کنید:

termtrends-1024x685