IV ID = „743D755703” „Siri, citiți mesajele de e-mail”
„salut Cortana, cum este vremea? „
” Ok Google, cum spui salut în engleză? „
divid id =” 743d755703 „> „Alexa, setată la cronometru timp de 15 minute”
Acest tip de fraze (comenzi) fac parte din viața noastră de zi cu zi. În fiecare zi este mai frecventă utilizarea vocii noastre și a unei limbi naturale pentru a interacționa cu dispozitivele și serviciile. Marea majoritate a celor mai populare dispozitive și sisteme de operare includ ceea ce este cunoscut ca un asistent personal inteligent; Este o tendință care se accelerează.
Un asistent personal inteligent (inteligent personal asistent, IPA) este un agent de software care poate îndeplini sarcini sau poate oferi servicii individuale. Utilizatorul poate interacționa cu IPA utilizând limba naturală prin voce sau text. IPA poate obține, de asemenea, informații suplimentare de context, cum ar fi locația utilizatorului, informațiile din același dispozitiv (fotografii, contacte etc.) și alte servicii pentru a oferi un răspuns mai bun utilizatorului.
Asistenții personale Deoarece Siri, Google acum sau Cortana pot executa multe acțiuni și pot răspunde la o mare varietate de solicitări de utilizator. În mod obișnuit, dispozitivul este doar o fațadă pentru a furniza serviciul, deoarece serviciile care recunosc discursul și determină răspunsul sau acțiunea adecvată, sunt găzduite servicii în nor.
Vreau propria mea IPA
Dacă vrem să creăm un serviciu IPA, o opțiune este aceea de ao prelungi la serviciile existente, cum ar fi Siri, Cortana sau Alexa. Cu toate acestea, acest lucru poate avea limitări sau nu de a ne oferi un control complet pe care l-am putea solicita. Așa că o altă opțiune este că ne dezvoltăm propria aplicație și pur și simplu folosim serviciile de recunoaștere a vorbirii care expun unele dintre aceste motoare.
Pentru a construi mai întâi IPA, trebuie să identificăm diferitele sale componente sau subsisteme. Caracteristicile excelente sunt: interfața pentru a interacționa cu asistentul, recunoașterea vorbirii, limba de domeniu specifică (DSL) și punctul final pentru a accesa agentul.
Apoi vom vorbi despre fiecare dintre ele.
Recunoașterea vorbirii
este un domeniu al lingvistică computațională orientată spre dezvoltarea metodologiilor și tehnologiilor care permit computerelor să înțeleagă și să traducă limba vorbită. Este în valoare de clarificarea faptului că recunoașterea vorbirii este diferită de recunoașterea vocii, deoarece aceasta din urmă se concentrează doar pe identificarea persoanei care vorbește, dar nu pe ceea ce spune.
Cum vă puteți imagina, dezvoltați un serviciu de recunoaștere a vorbirii o sarcină foarte mare și aproape imposibilă pentru o singură persoană. Din fericire, companiile precum Microsoft, Google și Xamarin, printre altele, le-au dezvoltat deja și le-au deschis astfel încât să le putem folosi în aplicațiile noastre. În listarea 1 arăt cum putem inițializa serviciul de recunoaștere a vorbirii în .net. Ulterior, în listarea 2, arăt cum ar putea fi făcută pe Web utilizând API-ul de vorbire web, care este susținut de Chrome.
listarea 1. C # pentru a utiliza Recunoașterea vorbirii Windows.
lista 2. cod JavaScript pentru a utiliza Web vorbire API .
Limba de domenii specifice (DSL)
este un limbaj de calculator conceput pentru a reprezenta sau rezolva o problemă specifică. Există o mare varietate de DSL, din limbi foarte frecvente, cum ar fi HTML sau SQL, la limbile de nișă, cum ar fi Csound pentru sinteza sunetului. Domeniul poate fi, de asemenea, o zonă de afaceri. De exemplu, am putea crea un DSL pentru managementul poliței de asigurare.
Când este creat un DSL care va fi utilizat numai într-o aplicație, este folosit pentru a apela o mini-limbă.
Pentru a implementa limba de care avem nevoie pentru a defini gramatica dvs. și a crea un parser (analizor sintactic) pentru a putea interpreta ceea ce ne spune utilizatorul și de a da un răspuns. Am putea face cele două lucruri cu mâna, dar în prezent există deja multe instrumente care ne oferă să definim gramatica și să creați parserul nostru.
Unul dintre cele mai comune instrumente pentru a dezvolta limbi este YACC, care ne permite să generăm un par parcezer bazat pe o gramatică analitică pe care trebuie să o descriem într-o metalanguage similară notării backus-naurului.
În acest caz nu vom folosi YACC, dar vom folosi ironia, o dezvoltare Kit pentru a implementa limbile din platforma .NET. Spre deosebire de soluții precum YACC și Lex, care generează un parser de la gramatica analitică pe care am definit-o, ironia ne permite să exprimăm gramatica limbii noastre direct în C #.
Lista 3 arată cum definim gramatica prin terminale și non-terminale, precum și afirmațiile pe care le vom recunoaște.
Lista 3. Definiția DSL.
final
Vom expune serviciile asistentului nostru printr-un punct final găzduit în aplicația noastră web. Acest punct final va primi ca parametru interogarea utilizatorului și va merge la expertul, care va interpreta rezultatele și va trimite un răspuns serializat.
app
Utilizatorul poate interacționa cu asistentul nostru inteligent printr-o aplicație mobilă.
deja în listări 1 și 2 am văzut Cum putem folosi API-urile Chrome și Windows pentru recunoașterea vorbirii. Acum, în listă 4A, 4B și 4C, putem vedea cum să aruncăm căutarea și să afișați rezultatele într-o aplicație Windows Universal.
Lista 4a arată cum să trageți o solicitare asincronă și să se prăbușească rezultatele, apoi lista 4b Afișați modul în care listarea 4C poate fi implementată și, în cele din urmă, arată cum am putea însoți aceste rezultate dintr-un mesaj vocal.
Lista 4a . Trageți rezultatele căutării și procesului.
Lista 4b. Implementați rezultatele.
Lista 4c. Dați discuții.
Alternative
Un asistent personal inteligent poate dezvolta în multe feluri. În acest articol luăm câteva decizii privind tehnologiile și arhitectura, pentru partea de recunoaștere a vorbirii am putea folosi serviciile Xamarin care au API de recunoaștere a limbii și este multiplatform. De asemenea, am putea integra aplicația noastră cu servicii precum Siri sau Cortana. DSL, așa cum am menționat, am fi putut dezvolta, de asemenea, cu YACC, Lex sau o variantă a acestora.
cod sursă
Toate codurile sursă din acest articol face parte dintr-un mic Asistent personal care este găzduit în http://deepthoughtagent.azurewebsites.net/, în URL: http://deepthoughtagent.azurewebsites.net/ Home / Întrebări sunt tipul de întrebări pe care Wizard le poate răspunde; Câteva exemple sunt:
- Câte vase Contract A123456?
- Câte contracte acest vas este unul?
- ce capacitate are mai mult?
- Ce contract începe înainte de ’12 / 12/2015 ‘?
- ce navă are o viteză mai mare?
- ce contract are mai puține bărci?
- Când începe contractul ABCDE?
- arată toate bărcile
- arată toate contractele
- afișează contractul ABCDE
- Actualizați vopseaua navei își schimbă Viteza cu 20
- Cât de mult este 2 + 2?
- Cât de mult este 2 între 2?
Codul sursă poate fi obținut în https://github.com/pedro-ramirez-suarez/ScioAssistant, aplicația mobilă (Windows Universal App) este configurată să utilizeze punctul final http://deepthoughtagent.azurewebsites.net/, fiind că serviciul este găzduit pe un server cu foarte mult Resursele limitate nu vor putea să se ocupe de multe cereri, să ruleze propriile experimente, este suficient pentru a găzdui DSL în sau TRO PLAGE și schimbați adresa URL definită în fișierul „Appressources.RESX”, astfel încât acesta să indice locul în care este punctul nostru final.