Pentru companii este din ce in ce mai important sa colecteze si utilizeze potentialul informatiilor la care au acces, pentru a lua decizii intr-un mod mai eficient. In consecinta, algoritmii de machine learning sunt folositi in present in moduri mai creative decat oricand.

Solutiile de tip machine learning au o gama larga de aplicatii – de la scopuri bine-cunsocute, cum ar fi identificarea si filtrarea emailurilor spam, penalizarea blogurilor bazate pe spamming, astfel incat utilizatorii sa obtina rezultate relevante la cautari, recomandari de produse relevante sau combaterea fraudei online, pana la modalitati surprinzatoare prin care pot ajuta companiile sa dezvolte produse superioare, mai inteligente si intr-un fel mai rapid, cum ar fi prin identificarea utilizatorului pe baza informatiilor legate de voce, imagine sau date preluate printr-un accelerometru (felul in care un utilizator tine sau misca un dispozitiv mobil), predictii privind preturile diverselor tipuri de licitatii, evolutia preturilor actiunilor de la bursa, automatizarea controlului nivelurilor de acces ale angajatilor intr-un anumit sistem, predictii privind timpii de asteptare la unitatile de urgente ale spitalelor, identificarea gradului de risc pentru infarct miocardic, atac celebral sau episoade convulsive etc.

La Roweb, folosim cele mai recente tehnologii de machine learning pentru a va oferi aplicatii capabile de predictii in timp real, ce va ajuta sa luati decizii bazate pe informatii relevante, si la cererea dumneavoastra va putem oferi si servicii de analiza si interpretare Big Data.

Expertiza noastra include capabilitati de recunoastere a pattern-urilor, de detectare a fraudei online, recunoasterea vorbirii si a scrisului de mana, analiza sentimentelor (positive vs negative), sisteme de recomandare si optimizare, si putem integra aplicatii de tip machine learning cu solutia noastra de portal online, dezvoltata intern, in functie de nevoile dumneavoastra.

Pentru a exemplifica unele dintre tipurile de probleme ce pot fi solutionate apeland la machine learning, am alcatuit un set de studii de caz, dintre care majoritatea sunt rezultatul unor sesiuni interne de training si experimentare in scop didactic, de demonstrare a unor concepte:

Extractor de informatii din pasapoarte

Acesta a fost singurul nostru proiect de machine learning dezvoltat in scop comercial pana in momentul de fata. Clientul este un start-up ce ofera platforme de software consulatelor, in scopul de-a oferi cetateinlor posibilitatea de-a aplica pentru vize de la distanta, printr-un proces simplificat.

Abordarea din perspectiva machine learning a venit ca urmare a nevoii de-a scana pasaportul cu ajutorul camera foto a unui dispozitiv mobil (iPad), de a citi informatia automat si de-a introduce informatia recunoscuta (cum ar fi numele si prenumele, data nasterii, tara, numarul de pasaport etc.) in spatiile corespunzatoare din formularul de aplicare pentru viza.

Clientul a solicitat intai un demo al conceptului (“proof of concept” - PoC) aplicatiei mobile pentru iPad, pe care sa-l poata folosi pentru a-si prezenta ideea in fata potentialilor clienti (consulate). Fiind foarte multumit de acest demo, clientul a decis sa colaboreze in continuare cu Roweb pentru implementarea produsului final si a unor produse complementare.

Principalele tehnologii folosita in implementarea aplicatiei mobile de scanare a pasapoartelor au fost:

  • iOS
  • ObjectiveC, C++
  • Tesseract-una din cele mai populare librarii open source pentru recunoasterea optica a caracterelor (optical character recognition - OCR)
  • OpenCV- una din cele mai populare librarii pentru capabilitati vizuale ale computerelor

Unele dintre cele mai dificile provocari pe care le-am depasit in implementarea acestei solutii au fost:

  • recunoasterea optica a caracterelor in diverse conditii de iluminare, de la sub-expunere la supra-expunerea detaliilor din pasaport
  • adaptarea la diverse tipuri de formate si fundaluri de pasaport, eliminarea pattern-urilor irelevante, care se suprapuneau uneori cu informatia propriu-zisa a aplicantului, ce trebuia extrasa

Analiza sentimentelor

Am dezvoltat si implementat un sistem de analiza a sentimentelor capabil sa detecteze automat aspectul predominant pozitiv sau negativ exprimat in recenzii de filme. Am fost interesati in identificarea polaritatii din comentariile utilizatorilor, proiectand sistemul astfel incat sa clasifice recenziile de filme ca fiind fie predominant positive, fie predominant negative.

Componenta principala a software-ului de analiza a sentimentelor a fost algoritmul de machine learning capabil sa invete modelul probabilistic de detectare a polaritatii sentimentelor exprimate in recenzia filmului.

Procesul de invatare a implicat colectarea a 50000 de recenzii etichetate – care aveau asociata o anumita polaritate, exprimata prin numarul de stele acordate de catre utilizator. Au fost folosite urmatoarele tehnologii:

  • C#, C++
  • Support Vector Machines – algoritmul folosit pentru invatarea si detectarea polaritatii sentimentelor
  • LibSVM, LibLinear – librarii C++ pentru implementarea algoritmului Support Vector Machines

Cele mai notabile provocari pe care le-am depasit in dezvoltarea acestei aplicatii au fost:

  • colectarea informatiilor pentru training, cele 50000 de recenzii de film etichetate
  • “curatarea” si normalizarea recenziilor, prin inlaturarea continutului irelevant pentru determinarea sentimentelor si prin gestionarea limbajului informal. Am realizat asta intai prin eliminarea elementelor de punctuatie, a celor neinteligibile si a cuvintelor de legatura, pastrand doar substantive, adjective, verbe si adverbe. Aceste cuvinte au trecut apoi printr-un algoritm de procesare lingvistica, pentru identificarea radicalului si a lemei din fiecare. Algoritmul de extragere a radicalului are scopul de-a reduce formele inflexionale si derivative la o forma de baza, prin inlaturarea sufixelor si prefixelor, in timp ce algoritmul de lematizare realizeaza o analiza morfologica completa, pentru a identifica cu acuratete lema fiecarui cuvant, returnand forma sa de baza din dictionar.

Asigurarea calitatii microcipurilor

Scopul acestei aplicatii a fost sa detecteze daca microcipurile produse intr-o uzina de fabricare indeplineau standardele de calitate.

n timpul testelor de asigurare a calitatii, se efectuau o serie de masuratori asupra fiecarui microcip. Multiplele teste aveau rolul de-a asigura functionarea corecta a microcipului, pe baza relatiilor dintre valorile masuratorilor.

Componenta principala a proiectului a fost algoritmul de clasificare folosit la detectarea microcipurilor nefunctionale pornind de la setul de masuratori ale dispozitivului.

Principalele tehnologii folosite au fost:

  • MATLAB – environment-ul de programare in care a fost implementat software-ul
  • Logistic Regression – algoritmul de clasificare folosit la invatarea modelului probabilistic asociat detectarii disfunctionalitatilor

Recunoasterea textelor scrise de mana

Scopul acestei aplicatii a fost detectarea si recunoasterea textelor scrise de mana. Cererea pentru astfel de capabilitati a inregistrat o continua crestere in ultimul timp, deoarece ele pot fi aplicate unei game largi de scopuri, de la citirea codurilor postale de pe plicuri, pana la recunoasterea sumelor trecute pe cecuri bancare.

Componenta de baza a acestui proiect a fost algoritmul de clasificare folosit la intelegerea informatiei scrise de mana si traducerea acesteia in reprezentari inteligibile pentru calculatoare. Pentru trainingul modelului de clasificare a fost folosit un corp de 10000 de litere si cifre etichetate.

Principalele tehnologii implicate in realizarea acestei solutii au fost:

  • MATLAB – environment-ul de programare in care a fost implementat software-ul
  • Retele neurale &ndash formalismul de clasificare folosit la invatarea modelului probabilistic de clasificare si recunoastere a cifrelor si literelor scrise de mana

Filtru anti-spam

Scopul acestui proiect a fost dezvoltarea unei solutii de filtrare a spamului, care sa poata clasifica cu acuratete emailurile in spam si non-spam.

Componenta principala a proiectului a fost algoritmul de clasificare a spam-ului. Solutia a presupus utilizarea in procesul de invatare a unui corp de 4000 de email-uri etichetate si a implicat urmatoarele tehnologii:

  • MATLAB
  • Support Vector Machines – algoritmul folosit pentru training-ul modelului probabilistic astfel incat sa devina capabil sa clasifice email-urile

Etapa de instruire si clasificare a necesitat implementarea unei serii de proceduri de curatare si normalizare a continutului mesajelor din email-uri, cu scopul de-a inlatura continut ne-exprimat in cuvinte, de-a normaliza URL-urile si adresele de email, aplicand procese de lematizare si reducere la radical a cuvintelor.

Detectarea anomaliilor serverelor

TScopul acestei solutii a fost implementarea unui algoritm capabil sa detecteze comportamentul anormal al serverelor, pe baza unei serii de masuratori ale functionalitatii lor (de ex. Transfer, latenta etc.).

Componenta de baza a acestui proiect a fost algoritmul de detectare a nodurilor disfuncionale dintr-un cluster de servere. Principalele tehnologii au fost:

  • MATLAB
  • Invatarea parametrilor unei distributii Gaussiene multivariate – formalismul din spatele sistemului de detectare a anomaliilor

Sistem de recomandari de filme

Aceasta solutie a avut drept scop implementarea unui sistem de recomandari de filme bazat pe un set de date de utilizatori, filme si evaluari ale utilizatorilor pentru aceste filme. Evaluarile utilizatorilor au fost exprimate prin acordarea unui scor de 1 pana la 5 stele.

Componenta principal a proiectului a fost algoritmul sistemului de recomandare, capabil sa genereze recomandari de filme specifice gusturilor fiecarui utilizator, pe baza evaluarilor efectuate anterior de catre acesta, precum si pe baza evaluarilor efectuate de catre ceilalti utilizatori. Principalele tehnologii folosite la implementarea acestei solutii au fost:

  • MATLAB – environment-ul de programare in care a fost implementat software-ul
  • Filtrarea colaborativa – algoritmul capabil sa faca predictii automate in legatura cu interesele unui utilizator, colectand informatii despre preferintele unui grup de utilizatori