Snips NLU er en Open Source, privat efter design-alternativ til Dialogflow, Amazon Lex og andre NLU-skytjenester

Integrering af en tale- eller chatbot-grænseflade i et produkt, der bruges til at kræve en NLU-skytjeneste (Natural Language Understanding). I dag åbner vi Snips NLU, en privat af design, GDPR-kompatibel NLU-motor. Det kan køre på Edge eller på en server med et minimalt fodaftryk, mens det fungerer så godt eller bedre end cloud-løsninger.

Naturlig sprogforståelse

2017 var uden tvivl året for AI-assistenten. Fra de 60 millioner meddelelser, som Facebook-bots behandler hver dag, til de titusinder af millioner brugere, der nu taler med en Alexa eller en Google-drevet enhed, er naturligt sprog blevet en foretrukken tilstand af interaktion mellem mennesker og maskiner. En ny færdighed tilføjes Amazon Alexa skillbutik hvert 90. minut, hvilket får stemmeassistenter til at vokse hurtigere end smartphone-appbutikker gjorde.

Bag hver chatbot og stemmeassistent ligger et fælles stykke teknologi: Natural Language Understanding (NLU). Når en bruger interagerer med en AI ved hjælp af naturligt sprog, skal deres ord oversættes til en maskinlæsbar beskrivelse af, hvad de betydede. Stemme kræver et yderligere trin, som er at transkribere brugerens stemme til den tilsvarende tekst, inden NLU køres.

NLU-motoren registrerer først, hvad brugerens intention er (a.k.a. hensigt), og trækker derefter ud parametrene (kaldet slots) for forespørgslen. Udvikleren kan derefter bruge dette til at bestemme den passende handling eller svar.

NLU-motoroutputeksempel

De fleste chatbots og stemmeassistenter er afhængige af cloud-tjenester til deres NLU. De mest almindelige inkluderer Dialogflow (Google, ex API.ai), Amazon Lex, Amazon Alexa, Luis.ai (Microsoft), Wit.ai (Facebook) og IBM Watson.

Én ting, alle disse løsninger har til fælles, er, at de er fuldstændigt centraliserede og kører på udbyderens servere. Dette betyder, at de kan få adgang til alle de data, der sendes til deres tjeneste, og genbruge dem efter ønske. At se på servicevilkårene viser netop det, som her for Amazon Lex:

Data og sikkerhed
Sp. Er lagrede tale- og tekstindgange behandlet af Amazon Lex, og hvordan bruges de af AWS?
Amazon Lex kan gemme og bruge tale- og tekstindgange, der behandles af tjenesten udelukkende for at levere og vedligeholde tjenesten og for at forbedre og udvikle kvaliteten af ​​Amazon Lex og andre Amazon-maskiner til læring / kunstig intelligens teknologier. Brug af dit indhold er nødvendigt for kontinuerlig forbedring af din Amazon Lex kundeoplevelse, herunder udvikling og uddannelse af relaterede teknologier. (...)

Lad os tage et skridt tilbage. Softwarebranchen havde traditionelt konvergeret mod analyser og potentielle crashrapporter som generel god praksis for at fremme kontinuerlig forbedring af produkter. Men det var altid begrænset til tilfælde, hvor ting mislykkedes. Den systematiske og permanente dataindsamling, der er blevet normen i AI, er en ny ting. Det antages, at indsamling og opbevaring af dette indhold anses for nødvendigt for udviklingen af ​​alle AI-teknologier.

Dette er faktisk en falsk dikotomi. Hos Snips byggede vi en stemmeplatform til tilsluttede enheder, der inkluderer Wakeword-registrering, talegenkendelse (ASR), Natural Language Understanding (NLU) og dialog. Den unikke ved Snips er, at alt kører på kanten, hvor brugerens stemme behandles direkte på den enhed, de taler til. Vi rører aldrig, behandler eller indsamler brugerdata, hvilket gør vores platform til det første Private by Design-alternativ til traditionelle stemmeassistenter.

I et forsøg på at give mere gennemsigtighed og privatliv åbner vi gradvist sourcing af kernekomponenterne i vores teknologi, idet vi starter i dag med Snips NLU.

Snips NLU er et Python-bibliotek, der let kan bruges til at træne modeller og bruge træne modeller til at fremsætte forudsigelser om nye forespørgsler. Se dokumentationen her. Derudover åbner vi også åbning af Snips NLU-rs, en Rust-implementering med fokus på forudsigelsesdelen (a.k. inferens). Dette bibliotek kan bruges på de fleste moderne arkitekturer: på små tilsluttede enheder, på mobil, på skrivebord eller på en server. Det kan i øjeblikket håndtere 5 sprog (engelsk, fransk, tysk, spansk og koreansk), med flere tilføjet regelmæssigt.

Lad os nu se på, hvordan Snips NLU priser. Vi vil fokusere på ydelse og nøjagtighed og vise, at vores teknologi klarer sig på par eller bedre end skybaserede løsninger.

Inferens køretid

Et typisk argument for brug af maskinlæring af skytjenester er infrastrukturomkostninger. Det er, hvad skyen er til, for at lindre udviklere fra komplekse og dyre operationer, så de kan koncentrere sig om, hvad de gør bedst.

Vi forstår, at dette er et kritisk aspekt, især da vores platform skal køre på små enheder. Vi har optimeret vores Snips NLU-rs inferensmotor til at køre bogstaveligt talt overalt, fra en 5 $ Raspberry Pi Zero til en AWS EC2-fritlagsforekomst. Dette er den gennemsnitlige driftstid for behandling af en forespørgsel i en typisk assistent:

Gennemsnitlig tid til at analysere en forespørgsel med Snips NLU-rs

I gennemsnit tager det mindre end 2 millisekunder at analysere en forespørgsel på en Macbook Pro 2015 med 2,5 GHz Core i7. Fordi vores platform er optimeret til ydeevne og ikke kræver netværksadgang, kan den typiske tidsgevinst være op til 2 størrelsesordrer sammenlignet med at bruge en skytjeneste!

Hukommelsen er også optimeret, lige fra et par hundrede KB RAM til almindelige sager til et par MB for de mest komplekse assistenter. Dette betyder, at assistenten kan passe ind i en Raspberry Pi, en mobilapp eller en Amazon Free Tier. Det betyder også, at mere kraftfulde servere kan håndtere hundredevis af parallelle forekomster af NLU-motoren!

For at opnå dette præstationsniveau var vi nødt til at genoverveje, hvordan man bygger en NLU-motor, både hvad angår teknik og maskinindlæring.

For eksempel implementerede vi i Rust alt, hvad der ikke allerede var skrevet på et lavt niveau sprog. I tilfælde af at du ikke kender Rust, er det et strålende sprog, der tilbyder hukommelsessikkerhed, mens du fungerer så hurtigt som C ++.

På maskinlæringssiden prøvede vi snesevis af forskellige modeller, fra CNN'er til bi-LSTM'er, men endte med at bruge en mere traditionel flad model kaldet en lineær kæde betinget tilfældigt felt (CRF). Vi erstattede også de tunge ordindlejringer med et omhyggeligt udformet sæt funktioner, der fanger semantiske og strukturelle signaler fra sætningen. Vi fandt, at der ikke var nogen signifikant gevinst ved at bruge dyb læring versus CRF'er til opgaver i naturligt sprog. Dette er dog ikke tilfældet med ASR, hvor dyb læring er obligatorisk for at opnå høj nøjagtighed (mere om det snart).

Nøjagtighed

For at verificere, at Snips NLU-motoren fungerede godt, benchmarkede vi den mod cloud-tjenester, herunder API.ai (nu DialogFlow, Google), Wit.ai (Facebook), Luis.ai (Microsoft) og Amazon Alexa. Hver løsning blev trænet ved hjælp af det samme datasæt og testet på det samme ud-prøvesæt. Resultaterne viste, at vores NLU er så nøjagtige eller bedre end cloud-løsninger ved slotekstraktionsopgaver, uanset hvor meget træningsdata der blev brugt.

Benchmarking naturlige sprogforståelsessystemer (se blogindlægget og originale data)

Vi gengav også et akademisk benchmark, der blev offentliggjort sidste sommer. I denne artikel vurderede forfattere ydelsen til API.ai (nu Dialogflow, Google), Luis.ai (Microsoft), IBM Watson og Rasa NLU. For at skabe retfærdighed brugte vi den seneste version af Rasa NLU og sammenlignede den med den seneste version af Snips NLU (begge i mørkeblå).

Gengivelse af

På tværs af alle benchmarks rangerer Snips NLU den højeste eller næsthøjeste, på trods af at den er hurtigere og mere let end enhver anden løsning. Dette viser, at det ikke er nødvendigt at vælge en cloud NLU-løsning - og derfor ofre privatlivets fred og kontrol over data. Uanset om det kører på en enhed eller på en server, er Snips NLU et stærkt alternativ til eksisterende løsninger.

Modenhed og økosystem

Snips NLU-motoren er resultatet af mange års forskning og teknik og er grundigt testet. Det er den samme kode, som vi bruger i vores kommercielle tilbud, der kører inde i vores kundes enheder.

Desuden lavede vi vores stemmeplatform gratis til ikke-kommercielle brugssager og lancerede en webgrænseflade, der giver producenter og udviklere mulighed for at oprette deres egen assistent. Siden lanceringen af ​​det sidste sommer har over 9.000 udviklere tilmeldt sig, hvilket skaber over 19.000 stemmeassistenter.

En eksempelassistent oprettet på Snips.ai

Vi lancerede også en unik datagenereringstjeneste, der gør det muligt for enhver, der bygger en samtalegrænseflade, at generere tusinder af syntetiske træningseksempler fra blot et par eksempler. Denne løsning løser problemet med koldstart ved at efterligne måneders rigtige brugerdata.

Snips NLU er et hurtigt, let, nøjagtigt og modent alternativ til skybaserede Natural Language Understanding-løsninger. Åben sourcing af koden vil yderligere hjælpe os med at forbedre vores teknologi, fremme privatliv ved designprincipper og bringe AI til kanten. Hvis du vil vide mere, kan du tjekke Github-arkivet og begynde at bygge din egen assistent på Snips-konsollen!

Hvis du kunne lide denne artikel og vil støtte Snips, skal du dele den!

Følg os på Twitter jodureau og snips.

For ethvert spørgsmål eller feedback, kontakt os om Discord.

Hvis du vil arbejde på AI + Privacy, skal du tjekke vores jobside!