Sadržaj:
- Korak 1: Poznavanje takmičenja
- Korak 2: Gdje sam znao o stvarima?
- Korak 3: Počnimo
- Korak 4: Kako to zapravo funkcionira?
- Korak 5: Kodirajmo …………
- Korak 6: Časovi
- Korak 7: Funkcije
- Korak 8: Slučajevi se mogu riješiti ………
- Korak 9: Traženje ključne riječi u korisničkom unosu
- Korak 10: Zaključak
Video: Glasovno aktivirani pomoćnik - MAX: 10 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
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
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?
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:
- Umjetna inteligencija moderan pristup
- Artificial. Intelligence.in.the.21st. Century.2nd. Edition
- 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:
- Ljudi koji imaju iskustva sa kodiranjem
- 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:
Napravite daljinski aktivirani raspršivač pomoću PiFace -a i Ubidots -a: 13 koraka
Napravite daljinski aktiviranu prskalicu koristeći PiFace i Ubidots: Ovo je sjajan primjer koji vas uči kako koristiti Raspberry Pi, PiFace i Ubidots za zalijevanje vašeg vrta iz daljine. Moći ćete daljinski upravljati elektroventilom za zalijevanje biljaka s bilo kojeg mjesta, samo pomoću telefona
Početna/Laboratorijski pomoćnik za glasovno upravljanje: 14 koraka (sa slikama)
Početna/Lab Glasovno upravljani pomoćnik: O MeHello! Ovo je moje prvo uputstvo, imam 17 godina. Ja sam iz Grčke pa moj engleski možda nije savršen, ali potrudit ću se. Dakle, prvi put sam dizajnirao ovu aplikaciju prije 2 godine i smatrao sam da je ovo natjecanje prilika za ažuriranje mog starog projekta
Glasovno aktivirani BT: 3 koraka (sa slikama)
Glasno aktivirani BT: Kućna automatizacija glasovnim upravljanjem pomoću Arduina: U ovom projektu ja koristim glasovnu funkciju za kontrolu kućnih uređaja. Ovaj projekt je dio moje serije kućne automatizacije. Ovaj projekt je vrlo jednostavan za korištenje u stvarnom životu. Ljudi bilo koje dobi mogu kontrolirati
Glasovno aktivirani relejni prekidač (Arduino): 6 koraka (sa slikama)
Glasno aktivirani relejni prekidač (Arduino): Pozdrav svima! U ovom projektu ću vam pokazati kako implementirati glasovne komande za vaše Arduino projekte. Pomoću glasovnih komandi pokazat ću vam kako upravljati modulom relejnog prekidača
Glasovno aktivirani medijski aparati pomoću Alexa: 9 koraka (sa slikama)
Glasovno aktivirani medijski aparati pomoću Alexa: Jedinica razvijena ovdje čini vaše uređaje poput TV -a, pojačala, CD i DVD playera glasovnim komandama koristeći Alexa i Arduino. Prednost ove jedinice je što morate samo davati glasovne komande. Ova jedinica može raditi sa svim uređajima koji