كيف يستخدم redBus نماذج Scikit-Learn ML لتصنيف شكاوى العملاء؟

خلفية: يتلقى redBus شكاوى من العملاء بشكل رئيسي فيما يتعلق باسترداد الأموال وإلغائها واستفسارات المشغلين وما إلى ذلك ... تصبح عملية تصنيف هذه الرسائل الإلكترونية وإعادة توجيهها إلى وكلاء / قائمة انتظار خدمة العملاء مهمة شاقة. هذا يزيد أيضا خلال أيام الذروة (وخاصة العطلات وعطلات نهاية الأسبوع).

للتحايل على (التصنيف ووضع العلامات) اتخذت هذه العملية redBus طريق التعلم الآلي. كان لدينا سنوات من البيانات الموسومة باليد والتي كانت بمثابة قاعدة المعرفة (مجموعة التدريب) لنظام التعلم الآلي. قررنا إنشاء نظام يقوم بتصنيف كل بريد إلكتروني إلى فئة من مجموعة من الفئات المحددة مسبقًا. يقوم نظام CRM لدينا (نستخدم SalesForce) بإعادة توجيه رسائل البريد الإلكتروني الواردة تلقائيًا إلى المسؤول التنفيذي عن خدمة العملاء بناءً على التصنيف الذي قام به نظام ML.

نبذة عن النظام

التقنية :

مكتبة ML: Scikit-Learn

الخوارزمية المستخدمة في التصنيف: متعدد الحدود ساذج بايزي

التفاف (لفضح التصنيف كواجهة برمجة التطبيقات): FLASK

خادم النشر: لينكس

لتوجيه بيانات المدخلات ، يتم استخدام متجه TF-IDF ولإنشاء نظام التصنيف ، يتم استخدام نموذج متعدد القيم ساذج بايزي.

تحليل ما بعد التدريب:

في الأصل تم النظر في 7 فئات. كانت الدقة باقية حول 70٪. نظرًا لأن 4 من الفئات فقط تم النظر فيها ، تم إسقاط الفئات الأخرى وتم إعادة تدريب النظام على 4 فئات فقط. كانت دقة 82 ٪. أثناء دراسة الدقة ، اكتشفنا أن هناك فئتين من الفئات تتمتع بأكثر من 90٪ من الدقة بينما هناك فئتان أقل دقة. كان هذا في المقام الأول بسبب ميزة التداخل. في أكثر الأحيان ، يتم إلغاء تذكرة / حافلة واسترداد الأموال معًا.

المنتج النهائي: يتعرض نموذج التصنيف من خلال واجهة برمجة التطبيقات. تم دمج api في نظام Salesforce ، والذي يضرب واجهة برمجة التطبيقات لكل رسالة بريد إلكتروني واردة.

ثانوية :

  1. يمكن للمسؤول التنفيذي عن خدمة العملاء الذي يبحث في مشكلة ما التحقق مما إذا كان نظام المصنف قد صنف بريدًا إلكترونيًا بشكل صحيح. هو / هي يمكن أن تعطي ملاحظات على المصنف. هذا سيكون بمثابة مدخلات إضافية لتدريب النظام وزيادة دقة أكثر.
  2. أثناء دراسة الدقة ، وجدنا أن هناك بعض المستندات التي أدى النظام وظيفة أفضل (نتيجة للخطأ البشري). تم إرسال هذا التقرير إلى فريق خدمة العملاء كإدخال إضافي لأغراض التدريب الداخلية الخاصة بهم.

التنفيذ:

عملية نشر النماذج إلى restAPI هي كما يلي ،

  1. تصدير نماذج JobLib ، Pickl
  2. برنامج نصي بيثون لتحميل النماذج وتصنيفها [JobLib ، Pickle لتحميل النماذج المصدرة]
  3. تطبيق ويب بيثون لخدمة الطلب والاستجابات [قارورة]
  4. حاوية WSGI لخدمة التطبيق
  5. المشرف للحصول على عملية الخادم وتشغيلها

لنرى الخطوات أكثر تفصيلاً. سأفترض أنك جربت بناء النماذج.

الخطوة 1: تصدير النماذج: تصدير النموذج و vectorizer على النحو التالي

الخطوة 2: إنشاء برنامج نصي لتحميل النماذج

الخطوة 3: إضافة وظيفة بيثون للقيام التصنيف في الواقع إعطاء نص الإدخال

الخطوة 4: إدخال قارورة لخدمة التصنيف من خلال نقطة نهاية API

قم بلف وظيفة التصنيف باستخدام قارورة بحيث يمكنها تقديم الطلبات والرد وفقًا لذلك. Flask هو خادم ويب خفيف الوزن لبيثون.

سيعود هذا التنبؤ عند الطلب باستخدام طريقة HTTP Post

الخطوة 5: WSGI

استخدم WSGI لخدمة تطبيق Flask

إذا تم تسمية تطبيق قارورة باسم prediction.py ، فيجب أن يبدو ملف python wsgi كما يلي. نسميها wsgi.py. ضع الملف في نفس الدليل كملف python الخاص بتطبيق Flask.

استخدم Gunicorn والمشرف لتنشيط الخادم وتشغيله

قم بإنشاء تهيئة المشرف على /etc/supervisor/config.d/your_config.conf

تنفيذ الأوامر التالية

إعادة قراءة sudo supervisorctl
sudo supervisorctl التحديث
$ sudo supervisorctl بدء your_program_name

يمكنك الوصول إليه باستخدام http: // ip: port / classifyText مع هيئة أيضًا.

طلب نص: {"input_text": "سجل الفريق المزيد من الأهداف. لكن ضاعت في النهاية "}

الرد: {"Featured_output": "Sport"}

هذه هي الطريقة التي نشرنا بها نموذج ML في حالات استخدام الخادم في الوقت الفعلي.

المزيد للقيام به:

  1. جرب Word2Vec لمعرفة ما إذا كان هناك تحسن في الدقة
  2. حل مشكلة عدم التوازن في الفصل حيث يوجد عدد قليل من الفئات التي تتميز بميزات نادرة جدًا أو عدد قليل جدًا من مستندات التدريب بالمقارنة مع الفئات الأخرى