Sadržaj:

Glasovno aktivirani pomoćnik - MAX: 10 koraka
Glasovno aktivirani pomoćnik - MAX: 10 koraka

Video: Glasovno aktivirani pomoćnik - MAX: 10 koraka

Video: Glasovno aktivirani pomoćnik - MAX: 10 koraka
Video: КАК НАСТРОИТЬ L4D2 2024, Novembar
Anonim
Glasovno aktivirani pomoćnik - MAX
Glasovno aktivirani pomoćnik - MAX

Hej u ovom Instructable-u govorit ću o tome kako napraviti chat-bot MAX (nazvao sam se !!!)

Uz određenu implementaciju, ovaj chatbot možete glasovno kontrolirati ili pomoću različitog softvera učiniti glasovnim pomoćnikom. Ovdje neću govoriti o tome jer svatko može zaista lako izvršiti ovu implementaciju.

Zato vas molim da me svi podržite ……

Moj prvi Instructable !!!!!!!

Nervozni ste zbog onoga što će se dogoditi …………….

Korak 1: Poznavanje takmičenja

Znanje o takmičenju
Znanje o takmičenju
Znanje o takmičenju
Znanje o takmičenju

Zdravo inženjeri i dizajneri ……

Ja lično student računarstva obožavam da igram igre i uvek sam inspirisan računarima. Ukratko govoreći, volim da znam kako sve ove stvari postoje. Pa sam kao razlog nastavio da tražim, guglam (u stvari i ja sam koristio Yahoo !!! !!!) za traženje i učenje stvari.

Tako sam jednog dana došao pred ekran Instructables. Zaista me zabavljalo kroz razne projekte s raznim idejama o različitim aspektima. Zatim od tog dana nastavljam s tim. Stranica natječaja me zaista zabavila i zabrinuta zbog nagrada i projekata koje su dostavili različiti ljudi svijetu.

GLASNO AKTIVIRANI IZAZOV moja je prva platforma u pogledu pisanja Instructable.

Nagrade su me jako zabavile (Da !!! Previše ……..).

Takođe želim da prenesem svoje znanje u oblasti računara i njegove tehnologije drugima o tome kako različite stvari zapravo funkcionišu.

U ovom Instructable -u pokazat ću vam kako izgraditi vlastitog glasovno aktiviranog pomoćnika.

Budući da je to moj prvi Instructable, moglo bi biti toliko grešaka (iako mislim da su sve ove ispravljene), pa oprostite na tome.

PA…

Krenimo na put ………………

Korak 2: Gdje sam znao o stvarima?

Gdje sam znao o stvarima?
Gdje sam znao o stvarima?
Gdje sam znao o stvarima?
Gdje sam znao o stvarima?
Gdje sam znao o stvarima?
Gdje sam znao o stvarima?

Ovo će biti veliko pitanje za koje mislim da je većina vaših misli prošla ………

Od školovanja imam veliku strast prema umjetnoj inteligenciji [AI], od tada sam mnogo tražio tražeći resurse za proučavanje i samostalno razvijanje modela.

U početku je to bilo jako teško (pravo stanje), koliko sam shvatio, to je bila vrlo opsežna tema s kojom se nije nimalo lako nositi.

Knjige koje su potražene uključuju:

  1. Umjetna inteligencija moderan pristup
  2. Artificial. Intelligence.in.the.21st. Century.2nd. Edition
  3. Duboko učenje

Ovo su vrlo dobre knjige (da da), ali nije nimalo lako razumjeti stvari koje su o tome napisane. Zatim sam to držao po strani i nastavio tražiti resurse koji daju kratku ideju o tome to zaista predstavlja i načine kako doći do toga.

Tada sam našao interes za to. Kroz odmor nakon školovanja počeo sam o tome dublje učiti.

U to vrijeme sam naučio i različite programske jezike (C ++, C, Python, Java….), Koji su također vrlo zanimljivi.

Čitajući više o ovoj temi shvatio sam jednu važnu stvar ………………..

Programski jezici OSNOVNI su za svaki proces učenja strojeva

Mašinsko učenje je proces primjene umjetne inteligencije

S velikim razumijevanjem o programskim jezicima i raznim stvarima koje programer može učiniti u zavisnosti od toga da li će računar učiniti bilo šta umjesto nas.

Stoga sam odlučio stvoriti dobru bazu na jezicima koji su me natjerali da razumijem koncepte navedene u knjizi koje sam već spomenuo

To možete i vi ……

Na webu postoji toliko mnogo web stranica koje slobodno podučavaju programske jezike

Tako da možete surfati internetom da biste saznali više o tome ako želite ………

Korak 3: Počnimo

Ja sam prije nego što sam počeo pisati Instructable smislio da napišem nešto što bi podrazumijevalo:

  1. Ljudi koji imaju iskustva sa kodiranjem
  2. Ljudi bez ikakvog kodiranja

Tako da mislim da sam to uradio bez grešaka (nadam se).

Stoga sam odlučio izgraditi chat bot koji može razgovarati s korisnikom i koji može reagirati u skladu s našim razgovorom.

Program (skup uputa) ne može samostalno razmišljati. Ima bazu podataka (mjesto gdje su podaci pohranjeni) činjenica i pravila, koja se pretražuju u vrijeme razgovora kako bi se dao najbolji mogući odgovor u vezi s korisnikom.

Funkcionira postupkom podudaranja ovisno o upisanim stvarima, samo u rijetkim slučajevima cijela rečenica se podudara s potpunom rečenicom.

Korak 4: Kako to zapravo funkcionira?

Korak 1:

MAX otkriva je li korisnik dao null unos. Ako korisnik dobije unos na takav način, bit će potrebna činjenica iz statičke baze podataka da odgovori.

Izvini ……

Zaboravio sam reći,

Statička baza podataka: Mjesto gdje se pohranjuju ugrađeni odgovori. Odgovori poput:

1. Kada MAX ne razumije o čemu korisnik priča.

2. Kada se korisnik ponovi.

3. Za pozdravne izjave.

4. Kada korisnik ne upiše ništa i samo nastavi pritiskati Enter.

Ključna reč: reči sa posebnim značenjem.

Korak 2:

Postoje neki ugrađeni odgovori koje MAX može lako i lako prepoznati. Utvrđuje prisutnost takve rečenice nakon identifikacije unosa korisnika i pamti pridruženu ključnu riječ.

Korak 3:

Ako ni nakon fragmentacije date rečenice nije pronađena ugrađena rečenica, tada MAX traži određenu ključnu riječ kako bi definirao kontekst. Ako se ne pronađe kontekst, onda je sljedeći cilj natjerati korisnika da namjerno razgovara o temi na određeni način.

Korak 4:

Iz statičke baze podataka o kojoj smo već govorili pokupit će odgovor koji ovisi o tome o čemu su korisnici pričali.

Korak 5:

Ako postoji potreba za promjenom riječi, to će učiniti sam (poput pretvaranja MOJE u VAŠE itd …)

Korak 5: Kodirajmo …………

Koristim Turbo C IDE 3.0 jer je ovo IDE [Integrirano razvojno okruženje]

Prije kodiranja, pogledajmo strukturu uzorka datoteke podataka.

MAX prepoznaje određene ključne riječi.

Ako se te ključne riječi nađu u unosu koji daje korisnik, tada se odgovarajući odgovor bira iz datoteke s podacima te se odabire i prikazuje na ekranu.

Ključna riječ je u datoteci podataka odvojena @ KWD @ tokenom od odgovora.

Token je najmanji dio svakog aspekta programiranja.

Ovaj token označava da je sljedeći red ključna riječ, a ne odgovor.

@ KWD@ HELLO

ZDRAVO, KAKO SI

ZDRAVO DRAGI!

DOBRO SAM

KAKO JE BIO VAŠ POSAO?

KOLIKO IMAŠ GODINA?

HOĆU

TO ĆETE UČINITI. I VERUJEM U TO…

HOĆETE LI TO MOĆI UČINITI?

HOĆEŠ LI MI VJEROVATI?

DA

JESI LI SIGURAN ?

KAKO MOŽETE BITI SIGURNI?

NE

Čini se da ste vrlo pesimistični.

NIKAD NE REČITE NE…

NIKAD NE RECI NIKAD

NIKADA NE BITI GRUB

NIKADA NE BITI DROGAN !!!!

NIKAD NE KAŽITE DA TO NE MOGU UČINITI

NIKADA NE BITI OPTIMISTIČAN

RAČUNAR

ZNAM KAKO RADITI NA RAČUNARU.

TRENUTNO KORISTITE RAČUNAR. U redu?

Na primjer, 'Hello', iz gornjeg rječnika, MAX će dati jedan od sljedećih odgovora:

Bok, KAKO STE DRAGI!

DOBRO SAM

KAKO JE BIO VAŠ POSAO?

KOLIKO IMAŠ GODINA?

Korak 6: Časovi

Kad ovo postane jasno, definirajmo sada strukture podataka koje ćemo koristiti.

Kreiramo dvije klase:

progstr - Ovo se koristi za spremanje informacija vezanih za unos korisnika.

Resp - Ovo se koristi za spremanje informacija o različitim odgovorima

class progstr {

javno:

char userip [MAX_USER_INPUT];

ključna riječ char [30];

int keyfound;

int keyno;

int nullip;

// konstruktor

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

}

} ip;

razred odn

{

int tot_resp;

int last_resp;

char odgovori [MAX_RESP_NO] [MAX_RESP_LEN];

char riječ [MAX_KWD_LEN];

javno:

// konstruktor

Resp ()

{

tot_resp = 0;

last_resp = -1;

}

int getcount ()

{

return last_resp;

}

nevažeći dodatak (niz znakova [MAX_KWD_LEN])

{

strcpy (riječ, str);

}

char * getword ()

{

povratna riječ;

}

adresar void (niz znakova [MAX_RESP_LEN])

{

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

}

// kasnije definirano

void display_resp (int broj);

void quit_display_resp (int broj);

};

Gledajući prvu klasu, Korisnički niz nizova znakova koristi se za spremanje rečenice koju je dao korisnik.

Druga ključna riječ niza koristi se za spremanje ključne riječi, ako postoji, koja se nalazi u tom unosu. Ako je ključna riječ pronađena, int keyfoundiramo na 1 else, ona ostaje 0, jer je inicijalizirana na 0 u Konstruktoru.

keyno pohranjuje odgovarajući broj ključa odgovarajuće ključne riječi.

nullip označava da li je korisnik dao bilo koji Null unos, tj. samo pritiska enter bez da radi išta drugo.

Dođimo sada do druge klase, odn.

Prvi član podataka, tot_resp označava broj ukupnih odgovora za datu ključnu riječ.

Odgovori su zapravo pohranjeni u odgovorima [MAX_RESP_NO] [MAX_RESP_LEN], a odgovarajuća ključna riječ pohranjena je u riječi niza.

Konstruktor: Ovo se koristi za inicijalizaciju ukupnog broja odgovora na 0. Zašto je last_resp inicijaliziran na -1 bit će jasno kada pogledate funkciju add_resp.

int getcount ():

Ova funkcija se koristi za izračunavanje broja odgovora za datu ključnu riječ.

nevažeća riječ (char str [MAX_KWD_LEN]):

Ovo se koristi za dodavanje ključne riječi.

char * getword ():

Koristi se za vraćanje ključne riječi za određeni objekt klase odn.

adresar void (…):

Ovo se koristi za dodavanje odgovora koji odgovara datoj ključnoj riječi.

void display_resp (int):

Ovo se koristi za prikaz odgovora korisniku koji odgovara datom broju indeksa za odgovore. (zapravo radi više od toga!).

void quit_display_resp (int):

Razlika između ove i gornje funkcije je u tome što se koristi na kraju kada korisnik odustane. Dakle, ne vraća upit korisniku.

Korak 7: Funkcije

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], "VI");

strcpy (wordout [4], "ME");

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

strcpy (wordout [5], "VI");

strcpy (wordin [6], "VAŠ");

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

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

strcpy (wordout [7], "VAŠ");

strcpy (wordin [8], "I'VE");

strcpy (wordout [8], "YOU'VE");

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

strcpy (wordout [9], "I'VE");

strcpy (wordin [10], "I'M");

strcpy (wordout [10], "VI");

strcpy (wordin [11], "VI");

strcpy (wordout [11], "Ja sam");

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

strcpy (wordout [12], "VI");

strcpy (wordin [13], "VI");

strcpy (wordout [13], "ME");

}

Napisimo sada funkciju za prikaz odgovora korisniku. Prva naredba if u for petlji koristi se za namjernu grešku pri upisivanju kako bi izgledala kao čovjek;-). Jedan znak je nasumično odabran za tipkarsku grešku. Posebni slučajevi poput New Line i Backspace se zasebno razmatraju. (Razmislite zašto?). Sada predstavljam nešto novo. Poseban znak - *. Char * predstavlja sav tekst koji se nalazi NAKON identificirane ključne riječi, a prije jednog od sljedećih znakova interpunkcije.

Na primjer, razmislite o korisničkom unosu

AMIT> MOGU LI SUTRA IĆI U INDORE?

MAX> ŠTA AKO SUTRA NE OTIŠETE INDORE?

Podcrtani dio nije pohranjen u rječniku, već je preuzet iz korisničkog unosa. U datoteci MAX. Dat ove podatke pohranjujemo kao

MOGU LI

ŠTA AKO NE UČINITE *

Star (*) traži od programa da jednostavno kopira sve što je otkucano nakon ključne riječi (ovdje MOŽEM I) u korisničkom unosu, kakva je. Nadam se da je sada funkcija * kao posebne ključne riječi jasna. Dakle, razmotrimo složeniji slučaj.

AMIT> Mogu li ići u kupovinu?

MAX> ŠTA AKO NE IDEŠ U KUPOVINU?

Moramo izvršiti i neku transformaciju. Kad pomislimo na transformaciju, rečenica se dijeli na sljedeća 3 odjeljka:

  • Tekst prije transpozicije Word. (ovdje, IDITE NA KUPOVINU)
  • Transponirana ključna riječ. (ovdje, TVOJE, umjesto MOJE)
  • Tekst nakon transpozicije Ključna riječ. (ovde, ja?)

Korak 8: Slučajevi se mogu riješiti ………

Korak 9: Traženje ključne riječi u korisničkom unosu

MAX_KEY označava broj ključnih riječi u DAT datoteci.

Ovdje jednostavno pretražujemo je li ključna riječ prisutna u korisničkom unosu.

Korak 10: Zaključak

To je sve ………

Uspeli ste !!!!!!!

Mislim da su svi jasno razumeli stvari ……

Preporučuje se: