Cuprins:

Asistent activat vocal - MAX: 10 pași
Asistent activat vocal - MAX: 10 pași

Video: Asistent activat vocal - MAX: 10 pași

Video: Asistent activat vocal - MAX: 10 pași
Video: Cum Dezactivez Voice Asistant Samsung - Dezactivare Talk Back Samsung 2024, Iulie
Anonim
Asistent activat vocal - MAX
Asistent activat vocal - MAX

Hei, în acest instructabil, voi vorbi despre cum să fac un chat-bot MAX (numit eu însumi !!!)

Cu o anumită implementare, puteți face ca acest chatbot să fie controlat vocal sau cu ajutorul diferitelor programe, îl puteți face ca asistent vocal. Eu aici nu o să vorbesc despre asta, deoarece fiecare poate realiza cu adevărat această implementare cu ușurință.

Deci, vă rog să mă sprijiniți pe toți …

Primul meu instructabil !!!!!!!

Simțindu-vă nervos la ceea ce se va întâmpla …………….

Pasul 1: Cunoașterea concursului

Știind despre concurs
Știind despre concurs
Știind despre concurs
Știind despre concurs

Bună, ingineri și designeri ……..

Eu însumi, student la științe informatice, îmi place să joc și mă inspir mereu pe computere. Vorbind pe scurt îmi place să știu cum funcționează toate aceste lucruri prezente. Deci, ca motiv pentru care am continuat să caut, căutând (de fapt, obișnuiam să folosesc și eu Yahoo !!! !!!) pentru căutarea și învățarea lucrurilor.

Așa că într-o zi am venit în fața ecranului Instructables. M-a amuzat cu adevărat prin diferite proiecte cu o varietate de idei pe diferite aspecte. Apoi, din acea zi, mă țin pe drumul cel bun. lume.

VOCAL ACTIVATED CHALLENGE este prima mea platformă în ceea ce privește scrierea unui Instructable.

Premiile m-au amuzat foarte mult (Da !!! Prea mult ……).

De asemenea, doresc să împărtășesc celorlalți cunoștințele mele în domeniul calculatoarelor și al tehnologiei despre modul în care funcționează de fapt diverse lucruri.

În acest Instructable vă arăt cum să vă construiți propriul asistent activat prin voce.

Deoarece este primul meu instructabil, pot exista atât de multe greșeli (chiar dacă cred că toate acestea au fost remediate), așa că iartă pentru asta.

ASA DE…

Să începem călătoria ………………

Pasul 2: Unde știam despre lucruri?

Unde știam despre lucruri?
Unde știam despre lucruri?
Unde știam despre lucruri?
Unde știam despre lucruri?
Unde știam despre lucruri?
Unde știam despre lucruri?

Aceasta va fi o întrebare majoră, cred că este posibil ca majoritatea minților voastre să treacă …

Am o pasiune pentru inteligența artificială [AI] din școala mea, din care am căutat mult căutând resurse pentru a studia și pentru a dezvolta un model pe cont propriu.

Inițial a fost foarte dificil (stare adevărată), deoarece am înțeles că era un subiect foarte vast, care nu este deloc ușor de manevrat.

Cărțile care au privit în sus includ:

  1. Inteligența artificială O abordare modernă
  2. Artificial. Intelligence.in.the.21st. Century.2nd. Edition
  3. Invatare profunda

Acestea sunt cărți foarte bune (da, cu siguranță), dar nu este deloc ușor să înțelegeți lucrurile scrise în acest sens. reprezintă cu adevărat și modalități de a ajunge la el.

Apoi am găsit un interes în acest sens. Prin vacanță după școală am început să aflu despre asta mai profund.

În acel moment am învățat și diverse limbaje de programare (C ++, C, Python, Java ….), care prea interesante.

Citind mai multe despre acest subiect, am înțeles un lucru important ………………..

Limbajele de programare ESTE BAZUL PENTRU FIECARE PROCES DE ÎNVĂȚARE A MAȘINILOR

Învățarea automată este procesul de aplicare a AI

Cu o înțelegere excelentă asupra limbajelor de programare și diverse lucruri care pot fi făcute în funcție de programator pentru a crea un computer care să facă orice pentru noi.

Așa că am decis să creez o bază bună pe limbajele care m-au făcut să înțeleg conceptele furnizate în carte pe care le-am menționat deja

Și tu poți face asta …

Există atât de multe site-uri web prezente pe web pentru a preda liber limbaje de programare

Deci, puteți naviga pe internet pentru a înțelege mai multe despre asta, dacă doriți …

Pasul 3: Să începem

Eu înainte de a începe să scriu Instructable, m-am gândit să scriu ceva care să fie înțeles de:

  1. Oameni care au o experiență în codificare
  2. Oameni fără fond de codificare

Deci, cred că am făcut lucrul fără greșeli (sperăm).

Așa că am decis să construiesc un bot de chat care să poată vorbi cu utilizatorul și să poată răspunde în funcție de discuția noastră.

Programul (setul de instrucțiuni) nu poate gândi singur. Are o bază de date (un loc în care au fost stocate date) de fapte și reguli, care sunt căutate în momentul conversației pentru a oferi cel mai bun răspuns posibil în legătură cu utilizatorul.

Funcționează prin procesul de potrivire în funcție de lucrurile introduse, doar în cazuri rare o propoziție întreagă este asociată cu o propoziție completă.

Pasul 4: Cum funcționează de fapt?

Pasul 1:

MAX află dacă utilizatorul a dat nicio intrare nulă. Dacă utilizatorul este introdus într-un astfel de mod, este necesar să răspundă din baza de date statică.

Oh scuze ……

Am uitat sa spun,

Baza de date statică: locul unde sunt stocate răspunsurile încorporate. Răspunsuri precum:

1. Când MAX nu înțelege despre ce vorbește utilizatorul.

2. Când utilizatorul se repetă.

3. Pentru declarații de salut.

4. Când utilizatorul nu tastează nimic și continuă să apese Enter.

Cuvânt cheie: cuvinte cu semnificație specială.

Pasul 2:

Există câteva răspunsuri integrate pe care MAX le poate recunoaște ușor și ușor. Constată prezența oricărei astfel de propoziții după identificarea datelor introduse de utilizatori și își amintește cuvântul cheie asociat.

Pasul 3:

Dacă nu se găsește nicio propoziție încorporată chiar și după fragmentarea propoziției date, atunci MAX caută cuvântul cheie specific pentru a defini contextul. Dacă nu se găsește niciun context, următorul scop este de a face utilizatorul să vorbească despre subiect mai deliberat într-un mod specific.

Pasul 4:

Din baza de date statică despre care am vorbit deja, va prelua răspunsul care depinde de ceea ce a vorbit utilizatorul.

Pasul 5:

I este nevoie de schimbarea cuvintelor pe care le va face el însuși (cum ar fi Conversia MEA în A TA etc.).

Pasul 5: Să ne codificăm …………

Folosesc Turbo C IDE 3.0 deoarece acesta este IDE [Mediul de dezvoltare integrat]

Înainte de codare, să vedem structura unui fișier de date eșantion.

MAX recunoaște anumite cuvinte cheie.

Dacă aceste cuvinte cheie sunt găsite în datele furnizate de utilizator, atunci un răspuns corespunzător este ales din fișierul de date și este ales și afișat pe ecran.

Un cuvânt cheie este separat în fișierul de date de răspunsuri prin simbolul @ KWD @.

Jetonul este o mică parte a fiecărui aspect de programare.

Acest simbol indică că rândul următor este un cuvânt cheie și nu un răspuns.

@ KWD @ BUNĂ

SALUT, CE FACI

BUNA DRAGA !

SUNT BINE

CUM A FOST POSTUL TĂU?

CATI ANI AI?

@ KWD @

EU VOI

Vei face așa. ÎL CRED PÂNĂ …

VOI PUTEȚI SĂ O FACI?

Vrei să ai încredere în mine?

@ KWD @

DA

ESTI SIGUR ?

CUM PUTEȚI FI SIGUR?

@ KWD @

NU

PĂRIȚI A FI FOARTE PESSIMIST.

NICIODATA SA NU SPUI NU…

NICIODATĂ SĂ NU SPUI NICIODATĂ

NU FIȚI NICIODATĂ PRUDENT

NU FIȚI NICIODATĂ ARROGANT !!!!

NICIODATĂ NU SPUN CA NU POT FACE ACESTA

NU FIȚI NICIODATĂ OPTIMISTIC

@ KWD @

CALCULATOR

ȘTIU CUM LUCREZ LA COMPUTER.

Folosiți în prezent un computer. DREAPTA ?

De exemplu, „Bună ziua”, din dicționarul de mai sus, MAX va da unul dintre următoarele răspunsuri:

Bună, CUM SUNTI IUBITI!

SUNT BINE

CUM A FOST POSTUL TĂU?

CATI ANI AI?

Pasul 6: Cursuri

Odată ce acest lucru este clar, să definim acum structurile de date pe care le vom folosi.

Creăm două clase:

progstr - Acesta este utilizat pentru a stoca informațiile legate de intrarea utilizatorului.

resp - Acesta este folosit pentru a stoca informațiile despre diferitele răspunsuri

clasa progstr {

public:

char userip [MAX_USER_INPUT];

cuvânt cheie char [30];

int keyfound;

int keyno;

int nullip;

// constructor

progstr () {keyno = -1; nul = 0; keyfound = 0;

}

} ip;

clasa resp

{

int tot_resp;

int last_resp;

răspunsuri char [MAX_RESP_NO] [MAX_RESP_LEN];

cuvânt char [MAX_KWD_LEN];

public:

// constructor

resp ()

{

tot_resp = 0;

last_resp = -1;

}

int getcount ()

{

returnează ultimul_resp;

}

cuvânt adăugat nul (str str. [MAX_KWD_LEN])

{

strcpy (cuvânt, str);

}

char * getword ()

{

cuvânt de întoarcere;

}

void addresp (char str [MAX_RESP_LEN])

{

strcpy (replys [++ last_resp], str);

}

// definit mai târziu

void display_resp (int num);

void quit_display_resp (int num);

};

Privind la prima clasă, Matricea de caractere userip este utilizată pentru a stoca propoziția furnizată de utilizator.

Un alt cuvânt cheie matrice este utilizat pentru a stoca cuvântul cheie, dacă există, găsit în acea intrare. Dacă se găsește un cuvânt cheie, facem cheia int găsită la altul, acesta rămâne 0, deoarece este inițializat la 0 în Constructor.

keyno stochează numărul de tastă corespunzător al cuvântului cheie corespunzător.

nullip indică dacă utilizatorul a dat vreo intrare Null, adică doar apasă enter fără să facă altceva.

Acum să venim la clasa a doua, resp.

Primul membru de date, tot_resp indică numărul de răspunsuri totale pentru un anumit cuvânt cheie.

Răspunsurile sunt stocate în răspunsurile [MAX_RESP_NO] [MAX_RESP_LEN], iar cuvântul cheie corespunzător este stocat în cuvântul matrice.

Constructor: Acesta este utilizat pentru a inițializa numărul total de răspunsuri la 0. De ce este inițializat last_resp la -1 va fi clar când vă uitați la funcția add_resp.

int getcount ():

Această funcție este utilizată pentru a obține un număr de răspunsuri pentru un anumit cuvânt cheie.

cuvânt adăugat nul (str str. [MAX_KWD_LEN]):

Acesta este folosit pentru a adăuga un cuvânt cheie.

char * getword ():

Folosit pentru a returna cuvântul cheie pentru un anumit obiect din clasa resp.

anular adresp (…):

Acesta este utilizat pentru a adăuga un răspuns corespunzător unui anumit cuvânt cheie.

void display_resp (int):

Acesta este utilizat pentru a afișa răspunsul către utilizator corespunzător unui număr de index dat pentru răspunsuri. (de fapt, face mai mult decât atât!).

void quit_display_resp (int):

Diferența dintre această funcție și funcția de mai sus este că este utilizată la final când utilizatorul renunță. Deci, nu returnează solicitarea utilizatorului.

Pasul 7: Funcții

void initialize_global ()

{

strcpy (wordin [0], "ARE");

strcpy (wordout [0], „AM”);

strcpy (wordin [1], "AM");

strcpy (wordout [1], „ARE”);

strcpy (wordin [2], "WERE");

strcpy (wordout [2], "WAS");

strcpy (wordin [3], "WAS");

strcpy (wordout [3], „WERE”);

strcpy (wordin [4], "YOU");

strcpy (wordout [4], „ME”);

strcpy (wordin [5], "I");

strcpy (wordout [5], „YOU”);

strcpy (wordin [6], „AL TĂU”);

strcpy (wordout [6], "MY");

strcpy (wordin [7], "MY");

strcpy (wordout [7], „DUMNEAVOASTRĂ”);

strcpy (wordin [8], "IVE");

strcpy (wordout [8], „YOUVE”);

strcpy (wordin [9], "YOU'VE");

strcpy (wordout [9], "IVE");

strcpy (wordin [10], "SUNT");

strcpy (wordout [10], „EȘTI”);

strcpy (wordin [11], "YOU'RE");

strcpy (wordout [11], "SUNT");

strcpy (wordin [12], "ME");

strcpy (wordout [12], „YOU”);

strcpy (wordin [13], „YOU”);

strcpy (wordout [13], „ME”);

}

Să scriem acum o funcție pentru afișarea răspunsurilor către utilizator. Prima declarație if din bucla for este utilizată pentru a face o eroare de tastare deliberată pentru a face să pară mai uman ca;-). Un caracter este ales în mod aleatoriu pentru eroarea de tastare. Cazurile speciale precum New Line și Backspace sunt luate în considerare separat. (Gândiți-vă de ce?). Acum introduc ceva nou. Un personaj special - *. Char * reprezintă tot textul găsit DUPĂ cuvântul cheie identificat și înaintea unuia dintre următoarele semne de punctuație.

De exemplu, luați în considerare introducerea utilizatorului

AMIT> POT MERGI LA INDORE MÂINE?

MAX> ȘI DACĂ NU MERGIȚI MÂINE LA INDORE?

Porțiunea subliniată nu este stocată în dicționar, ci este preluată din introducerea utilizatorului. În fișierul MAX. Dat, stocăm aceste informații ca

POT SA

ȘI DACĂ NU *

Star (*) cere programului să copieze pur și simplu tot ce este tastat după cuvântul cheie (aici POȚI) în intrarea utilizatorului, așa cum este. Sper că acum funcția * ca cuvânt cheie special este clară. Deci, să analizăm un caz mai complicat.

AMIT> POT MĂ DREPT LA CUMPĂRĂTURI?

MAX> ȘI DACĂ NU MERGEȚI LA CUMPĂRĂTURI?

De asemenea, trebuie să realizăm o oarecare transformare. Când ne gândim la transformare, propoziția se împarte în următoarele 3 secțiuni:

  • Text înainte de transpunerea cuvântului. (aici, ACCESAȚI CUMPĂRĂTURILE CU)
  • Cuvântul cheie transpus. (aici, AL TĂU, în locul MIEI)
  • Text după transpunere cuvânt cheie. (aici eu ?)

Pasul 8: Cazurile pot fi abordate de ………

Pasul 9: Căutarea unui cuvânt cheie în introducerea utilizatorului

MAX_KEY indică numărul de cuvinte cheie din fișierul DAT.

Aici căutăm pur și simplu dacă cuvântul cheie este prezent în Introducerea utilizatorului.

Pasul 10: Concluzie

Asta e tot ………

Ați făcut-o !!!!!!!

Cred că toată lumea a înțeles lucrurile în mod clar …

Recomandat: