Snips NLU este o alternativă Open Source, privată prin design la Dialogflow, Amazon Lex și alte servicii cloud NLU

Integrarea unei interfețe de voce sau chatbot într-un produs folosit pentru a necesita un serviciu cloud de înțelegere a limbajului natural (NLU). Astăzi, suntem de aprovizionare deschisă Snips NLU, un motor NLU conform cu GDPR, Private by Design. Se poate rula pe Edge sau pe un server, cu o amprentă minimă, în timp ce se execută la fel de bine sau mai bine decât soluțiile cloud.

Înțelegerea limbajului natural

2017 a fost, probabil, anul asistentului AI. De la cele 60 de milioane de mesaje pe care roboții Facebook le procesează în fiecare zi, până la zeci de milioane de utilizatori care vorbesc acum cu un dispozitiv Alexa sau Google, un limbaj natural a devenit un mod preferat de interacțiune între oameni și mașini. O nouă abilitate este adăugată la magazinul de abilități Amazon Alexa la fiecare 90 de minute, ceea ce face ca asistenții vocali să crească mai repede decât au făcut-o magazinele de aplicații pentru smartphone.

În spatele fiecărui chatbot și asistent vocal se află o tehnologie comună: Natural Language Understanding (NLU). Ori de câte ori un utilizator interacționează cu o AI folosind un limbaj natural, cuvintele sale trebuie traduse într-o descriere care poate fi citită de către mașină. Vocea necesită un pas suplimentar, care este transcrierea vocii utilizatorului în textul corespunzător, înainte de a rula NLU.

Motorul NLU detectează mai întâi care este intenția utilizatorului (a.k.a. intenție), apoi extrage parametrii (numiți sloturi) din interogare. Dezvoltatorul poate apoi să folosească acest lucru pentru a determina acțiunea sau răspunsul adecvat.

Exemplu de ieșire a motorului NLU

Majoritatea chatbots-urilor și a asistenților vocali se bazează pe serviciile cloud pentru NLU-urile lor. Cele mai frecvente sunt Dialogflow (Google, ex API.ai), Amazon Lex, Amazon Alexa, Luis.ai (Microsoft), Wit.ai (Facebook) și IBM Watson.

Un lucru pe care toate aceste soluții îl au în comun este acela că sunt complet centralizate, rulând pe serverele furnizorului. Aceasta înseamnă că pot accesa toate datele trimise la serviciul lor și le pot reutiliza după bunul plac. Privind termenii de serviciu arată doar așa, cum ar fi aici pentru Amazon Lex:

Date și securitate
Î. Sunt introduse inputurile vocale și text prelucrate de Amazon Lex și cum sunt folosite de AWS?
Amazon Lex poate stoca și utiliza intrări vocale și text procesate de serviciu numai pentru a furniza și întreține serviciul și pentru a îmbunătăți și a dezvolta calitatea Amazon Lex și a altor tehnologii Amazon de învățare automată / inteligență artificială. Utilizarea conținutului dvs. este necesară pentru îmbunătățirea continuă a experienței dvs. de client Amazon Lex, inclusiv dezvoltarea și formarea tehnologiilor conexe. (...)

Să facem un pas înapoi. Industria software a convergent în mod tradițional spre analize și rapoarte de accidente potențiale, ca bune practici generale pentru a favoriza îmbunătățirea continuă a produselor. Dar a fost întotdeauna limitată la cazurile în care lucrurile au dat greș. Colectarea sistematică și permanentă a datelor care a devenit norma în AI este un lucru nou. Se presupune că colectarea și stocarea acestui conținut sunt considerate necesare pentru dezvoltarea tuturor tehnologiilor AI.

Aceasta este de fapt o falsă dicotomie. La Snips, am construit o platformă vocală pentru dispozitivele conectate care include detecție de cuvinte cheie, Recunoașterea vorbirii (ASR), Înțelegerea limbajului natural (NLU) și dialog. Lucrul unic despre Snips este că totul rulează pe Edge, vocea utilizatorului fiind procesată direct pe dispozitivul cu care vorbește. Nu atingem niciodată, procesăm sau colectăm date despre utilizatori, făcând platforma noastră să fie prima alternativă Private by Design pentru asistenții vocali tradiționali.

În efortul de a oferi mai multă transparență și confidențialitate, dezvoltăm progresiv componentele de bază ale tehnologiei noastre, începând de astăzi cu Snips NLU.

Snips NLU este o bibliotecă Python care poate fi folosită pentru a antrena cu ușurință modele și pentru a utiliza modele instruite pentru a face predicții cu privire la noile interogări. Consultați documentația aici. În plus, suntem, de asemenea, aprovizionare deschisă Snips NLU-rs, o implementare Rust axată pe partea de predicție (a.k.a. inferență). Această bibliotecă poate fi utilizată pe majoritatea arhitecturilor moderne: pe dispozitive mici conectate, pe mobil, pe desktop sau pe un server. În prezent, poate gestiona 5 limbi (engleză, franceză, germană, spaniolă și coreeană), cu mai multe adăugate în mod regulat.

Haideți să aruncăm o privire asupra modului în care tarifele Snips NLU. Ne vom concentra pe performanță și acuratețe, arătând că tehnologia noastră are performanțe egale sau mai bune decât soluțiile bazate pe cloud.

Inferenta timp de rulare

Un argument tipic pentru utilizarea serviciilor cloud de învățare automată este costurile infrastructurii. Pentru asta este cloud, pentru alinarea dezvoltatorilor de operațiunile complexe și costisitoare, astfel încât să se poată concentra pe ceea ce fac cel mai bine.

Înțelegem că acesta este un aspect critic, în special deoarece platforma noastră trebuie să funcționeze pe dispozitive minuscule. Am optimizat motorul nostru de inferență Snips NLU-rs pentru a rula literalmente oriunde, de la un zmeur Pi Zero de 5 $ la o instanță cu nivel liber AWS EC2. Acesta este timpul mediu de rulare pentru procesarea unei interogări într-un asistent tipic:

Timp mediu pentru a analiza o interogare cu Snips NLU-rs

În medie, este nevoie de mai puțin de 2 milisecunde pentru a analiza o interogare pe un Macbook Pro 2015 cu 2.5GHz Core i7. Deoarece platforma noastră este optimizată pentru performanță și nu necesită acces la rețea, câștigul de timp tipic poate fi mai mare de 2 ordine de mărime în comparație cu utilizarea unui serviciu cloud!

De asemenea, memoria a fost optimizată, de la câteva sute de KB de memorie RAM pentru cazuri obișnuite la câteva MB pentru cei mai complexi asistenți. Aceasta înseamnă că asistentul se poate încadra într-un Raspberry Pi, o aplicație mobilă sau un Amazon Free Tier. De asemenea, înseamnă că serverele mai puternice pot gestiona sute de instanțe paralele ale motorului NLU!

Pentru a atinge acest nivel de performanță, a trebuit să ne regândim complet cum să construim un motor NLU, atât din punct de vedere al ingineriei, cât și al învățării mașinilor.

De exemplu, am implementat în Rust tot ceea ce nu era scris deja într-un limbaj de nivel scăzut. În cazul în care nu sunteți familiarizat cu Rust, este un limbaj strălucitor care oferă siguranță în memorie în timp ce performați la fel de rapid ca C ++.

Pe partea de învățare a mașinilor, am încercat zeci de modele diferite, de la CNN la bi-LSTM, dar am terminat folosind un model plat mai tradițional numit lanț liniar Conditional Random Field (CRF). De asemenea, am înlocuit încorporările grele de cuvinte printr-un set de caracteristici elaborate cu atenție, care surprind semnalele semantice și structurale din propoziție. Am constatat că nu a existat niciun câștig semnificativ folosind învățarea profundă versus CRF-uri pentru sarcinile de înțelegere a limbajului natural. Totuși acest lucru nu este valabil pentru ASR, unde învățarea profundă este obligatorie pentru a obține o precizie ridicată (mai mult în curând).

Precizie

Pentru a verifica dacă motorul Snips NLU a funcționat bine, l-am comparat cu serviciile cloud, inclusiv API.ai (acum DialogFlow, Google), Wit.ai (Facebook), Luis.ai (Microsoft) și Amazon Alexa. Fiecare soluție a fost instruită folosind același set de date și testată pe același set de teste din eșantion. Rezultatele au arătat că NLU-ul nostru este la fel de precis sau mai bun decât soluțiile cloud la sarcinile de extragere a sloturilor, indiferent de cât de multe date de instruire au fost utilizate.

Analiza sistemelor de înțelegere a limbajului natural (vezi postarea blogului și datele originale)

De asemenea, am reprodus un reper academic publicat vara trecută. În acest articol, autorii au evaluat performanța API.ai (acum Dialogflow, Google), Luis.ai (Microsoft), IBM Watson și Rasa NLU. Pentru corectitudine, am folosit cea mai recentă versiune a Rasa NLU și am comparat-o cu cea mai recentă versiune de Snips NLU (ambele în albastru închis).

Reproducerea „Evaluarea serviciilor de înțelegere a limbajului natural pentru sisteme de răspuns la întrebări”. Consultați rezultatele de bază.

Peste toate punctele de referință, Snips NLU se situează pe cea mai mare sau a doua cea mai mare, în ciuda faptului că este mai rapid și mai ușor decât orice altă soluție. Acest lucru arată că optarea pentru o soluție NLU cloud - și, prin urmare, sacrificarea vieții private și controlul asupra datelor - nu mai este strict necesară. Fie că rulează pe un dispozitiv sau pe un server, Snips NLU este o alternativă puternică la soluțiile existente.

Maturitate și ecosistem

Motorul Snips NLU este rezultatul anilor de cercetare și inginerie și a fost testat minuțios. Este același cod pe care îl utilizăm în oferta noastră comercială, care se desfășoară în interiorul dispozitivelor clientului nostru.

Mai mult, am făcut platforma vocală gratuită pentru cazurile de utilizare necomercială și am lansat o interfață web care permite producătorilor și dezvoltatorilor să își creeze propriul asistent. De la lansarea acesteia vara trecută, peste 9.000 de dezvoltatori s-au înscris, creând peste 19.000 de asistenți vocali.

Un asistent de exemplu creat pe Snips.ai

De asemenea, am lansat un serviciu unic de generare de date care permite oricui construiește o interfață conversațională pentru a genera mii de probe de formare sintetică din doar câteva exemple. Această soluție rezolvă problema de pornire la rece, imitând luni întregi de date reale ale utilizatorilor.

Snips NLU este o alternativă rapidă, ușoară, precisă și matură la soluțiile de înțelegere a limbajului natural bazate pe cloud. Deschiderea codului de aprovizionare ne va ajuta în continuare să îmbunătățim tehnologia noastră, să promovăm confidențialitatea prin principiile de proiectare și să aducem AI la margine. Dacă doriți să aflați mai multe, consultați depozitul Github și începeți să construiți propriul asistent pe consola Snips!

Dacă v-a plăcut acest articol și doriți să sprijiniți Snips, vă rugăm să îl împărtășiți!

Urmăriți-ne pe Twitter jodureau și snips-uri.

Pentru orice întrebare sau feedback, contactați-ne pe Discord.

Dacă doriți să lucrați la AI + Confidențialitate, consultați pagina noastră de locuri de muncă!