Ako redBus používa na klasifikáciu sťažností zákazníkov modely Scikit-Learn ML?

Pozadie: redBus prijíma sťažnosti od zákazníkov týkajúce sa najmä vrátenia platby, zrušenia, otázok operátora atď. Proces klasifikácie týchto e-mailov a ich presmerovania na príslušných agentov / fronty služieb zákazníkom sa stáva veľmi náročnou úlohou. Zvyšuje sa to aj počas dní s najväčšou pravdepodobnosťou (najmä sviatky a víkendy).

Aby sa tento proces obišiel (klasifikoval a označil), redBus sa vydal cestou strojového učenia. Mali sme roky ručne označené údaje, ktoré slúžili ako základňa vedomostí (výcviková súprava) pre systém strojového učenia. Rozhodli sme sa vybudovať systém, ktorý klasifikuje každý e-mail do kategórie z preddefinovaných kategórií. Náš systém CRM (používame SalesForce) by automaticky presmeroval prichádzajúce e-maily príslušnému výkonnému pracovníkovi služieb starostlivosti o zákazníkov na základe klasifikácie vykonanej systémom ML.

Prehľad systému

Tech:

Knižnica ML: Scikit-Learn

Algoritmus použitý na klasifikáciu: multinomický naivný Bayesián

Wrapper (na vystavenie klasifikácie ako API): FLASK

Server nasadenia: Linux

Na vektorizáciu vstupných údajov sa používa vektorizátor TF-IDF a na zostavenie klasifikačného systému sa používa multinomický naivský Bayesovský model.

Analýza po tréningu:

Pôvodne sa zvažovalo 7 kategórií. Presnosť pretrvávala okolo 70%. Keďže sa brali do úvahy iba 4 kategórie, ostatné kategórie boli vyradené a systém bol preškolený iba so 4 kategóriami. Presnosť bola na 82%. Pri štúdiu presnosti sme zistili, že 2 z kategórií mali viac ako 90% presnosť, zatiaľ čo 2 kategórie mali menšiu presnosť. Bolo to predovšetkým kvôli prekrývaniu funkcií. Častejšie ako ne, zrušenie lístka / autobusu a vrátenie peňazí idú spolu.

Konečný produkt: Klasifikačný model je vystavený prostredníctvom API. Api bol integrovaný do systému Salesforce, ktorý zasahuje api pre každý prichádzajúci e-mail.

Podľa produktu:

  1. Výkonný pracovník v oblasti starostlivosti o zákazníka, ktorý skúma problém, si môže overiť, či klasifikačný systém správne klasifikoval e-mail. Môže poskytnúť spätnú väzbu na klasifikátora. To by slúžilo ako ďalšie vstupy na vyškolenie systému a zvýšenie presnosti ešte viac.
  2. Pri štúdiu presnosti sme zistili, že existujú určité dokumenty, na ktorých systém vykonal lepšiu prácu (v dôsledku ľudskej chyby). Táto správa bola zaslaná tímu starostlivosti o zákazníkov ako ďalší vstup na účely ich interného školenia. (Krížová validácia)

realizácie:

Proces nasadenia modelov do restAPI je nasledujúci,

  1. Exportujte modely - JobLib, Pickl
  2. Python skript na načítanie modelov a klasifikáciu [JobLib, Pickle na načítanie exportovaných modelov]
  3. Webová aplikácia Python, ktorá slúži na vybavovanie žiadostí a odpovedí [banka]
  4. Kontajner WSGI na zobrazovanie aplikácie
  5. Supervízor pre uvedenie a spustenie procesu servera

Poďme vidieť kroky trochu podrobnejšie. Predpokladám, že ste experimentovali s vytvorením modelov.

Krok 1: Exportovanie modelov: Exportujte model a vektorizátor takto

Krok 2: Vytvorte skript na načítanie modelov

Krok 3: Pridajte funkciu pythonu, aby sa klasifikácia dala skutočne zadať

Krok 4: Predstavte banku, aby slúžila klasifikácii prostredníctvom koncového bodu API

Zabaľte klasifikačnú funkciu do banky, aby mohla vyhovieť požiadavkám a zodpovedajúcim spôsobom reagovať. Flask je ľahký webový server pre Python.

Na žiadosť sa použije metóda HTTP Post, čím sa vráti predpoveď

Krok 5: WSGI

Na zobrazenie aplikácie Flask použite WSGI

Ak je naša aplikácia banky pomenovaná ako prediction.py, potom by mal súbor wsgi python vyzerať takto. Nazvite to wsgi.py. Umiestnite súbor do rovnakého adresára ako súbor python aplikácie Flask.

Použite Gunicorn a Supervisor na uvedenie servera do prevádzky

Vytvorte konfiguráciu supervízora na /etc/supervisor/config.d/your_config.conf

Vykonajte nasledujúce príkazy

$ sudo supervisorctl read
$ sudo supervisorctl update
$ sudo supervisorctl start your_program_name

Prístup k nemu získate aj pomocou http: // ip: port / classifyText s telom.

Žiadateľ: {„input_text“: „Tím strelil viac gólov. Nakoniec sa však stratil “}

Odpoveď: {„klasifikovaný_výstup“: „Šport“}

Takto sme nasadili model ML na serverovanie prípadov použitia v reálnom čase.

Viac práce:

  1. Vyskúšajte program Word2Vec a zistite, či došlo k zlepšeniu presnosti
  2. Vyriešte problém s nerovnováhou v triede, ak je v porovnaní s inými kategóriami málo kategórií, ktoré majú veľmi obmedzené vlastnosti alebo len veľmi málo školiacich dokumentov