Sadržaj:
- Korak 1: Upoznavanje s natječajem
- Korak 2: Gdje sam znao o stvarima?
- Korak 3: Počnimo
- Korak 4: Kako to zapravo funkcionira?
- Korak 5: Kodirajmo …………
- Korak 6: Nastava
- 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 promjena: 2024-01-30 09:37
Hej u ovom Instructableu 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 jednostavno izvesti ovu implementaciju.
Zato vas molim da me svi podržite ……
Moj prvi Instructable !!!!!!!
Osjećati se nervozno zbog onoga što će se dogoditi …………….
Korak 1: Upoznavanje s natječajem
Pozdrav inženjeri i dizajneri ……
Ja sam student računarstva koji voli igrati igre i uvijek je nadahnut na računalima. Ukratko govoreći, volim znati kako sve ove stvari funkcioniraju. Pa sam kao razlog nastavio tražiti, guglati (uostalom i ja sam koristio Yahoo !!! !!!) za traženje i učenje stvari.
Tako sam jednog dana došao pred ekran Instructables. Zaista me zabavilo kroz razne projekte s raznim idejama o različitim aspektima. Od tada nastavljam s tim. Stranica natječaja me jako zabavila i zabrinuta za nagrade i projekte koje su dostavili različiti ljudi iz cijelog svijeta. svijet.
GLASNO AKTIVIRANI IZAZOV moja je prva platforma u pogledu pisanja Instructable.
Nagrade su me jako zabavile (Da !!! Previše ……..).
Također želim podijeliti svoje znanje u području računala i njegove tehnologije drugima o tome kako različite stvari zapravo funkcioniraju.
U ovom Instructableu 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.
TAKO…
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 za umjetnu inteligenciju [AI], od tada sam mnogo pretraživao 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.
Potražene knjige uključuju:
- Umjetna inteligencija Suvremeni pristup
- Umjetna. Inteligencija.u 21. stoljeću. 2. izdanje
- Duboko učenje
Ovo su jako 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 doista predstavlja i načine kako doći do toga.
Tada sam pronašao interes za to. Kroz odmor nakon školovanja počeo sam o tome dublje učiti.
U to sam vrijeme naučio i razne 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
Strojno učenje proces je primjene umjetne inteligencije
S velikim razumijevanjem o programskim jezicima i raznim stvarima koje programer može učiniti ovisno o tome da računalo učini bilo što 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 o tome razumjeli više 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 s kodiranjem
- Ljudi bez ikakvog kodiranja
Tako da mislim da sam to učinio bez grešaka (nadam se).
Stoga sam odlučio izgraditi chat bot koji može razgovarati s korisnikom i koji može odgovoriti 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.
Djeluje tako da se proces podudaranja ovisno o upisanim stvarima, samo u rijetkim slučajevima cijela rečenica podudara s potpunom rečenicom.
Korak 4: Kako to zapravo funkcionira?
Korak 1:
MAX otkriva je li korisnik dao nulti ulaz. Ako korisnik dobije unos na takav način, bit će potrebna činjenica iz statičke baze podataka da odgovori.
O oprosti ……
Zaboravila sam reći,
Statička baza podataka: Mjesto gdje se pohranjuju ugrađeni odgovori. Odgovori poput:
1. Kada MAX ne razumije o čemu korisnik govori.
2. Kad se korisnik ponovi.
3. Za pozdravne izjave.
4. Kada korisnik ne upiše ništa i samo nastavi pritiskati Enter.
Ključna riječ: riječ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 što identificira unos korisnika i pamti pridruženu ključnu riječ.
3. korak:
Ako ni nakon fragmentacije zadane 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 na određen način govori o temi.
Korak 4:
Iz statičke baze podataka o kojoj smo već govorili pokupit će odgovor koji ovisi o tome o čemu su korisnici razgovarali.
5. korak:
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 su te ključne riječi pronađene u unosu koji daje korisnik, tada se odgovarajući odgovor odabire iz podatkovne datoteke, bira se i prikazuje na zaslonu.
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 redak ključna riječ, a ne odgovor.
@ KWD@ ZDRAVO
BOK, KAKO SI
ZDRAVO DRAGI!
DOBRO SAM
KAKO JE BIO VAŠ POSAO?
KOLIKO SI STAR?
HOĆU
TAKO ĆEŠ 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.
NIKADA NE reci NE…
NIKAD NE RECI NIKAD
NIKADA NE BITI GRUB
NIKADA NE BITI DROGAN !!!!
NIKAD NE KAŽI DA TO NE MOGU UČINITI
NIKADA NE BITI OPTIMISTIČAN
RAČUNALO
ZNAM KAKO RADITI NA RAČUNALU.
TRENUTNO KORISTITE RAČUNALO. DOBRO?
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 SI STAR?
Korak 6: Nastava
Kad ovo postane jasno, definirajmo sada strukture podataka koje ćemo koristiti.
Izrađujemo dvije klase:
progstr - Ovo se koristi za spremanje podataka vezanih za unos korisnika.
Resp - Ovo se koristi za spremanje informacija o različitim odgovorima
razred progstr {
javnost:
char userip [MAX_USER_INPUT];
ključna riječ char [30];
int keyfound;
int keyno;
int nullip;
// konstruktor
progstr () {keyno = -1; nullip = 0; pronađen ključ = 0;
}
} ip;
razreda odn
{
int tot_resp;
int last_resp;
char odgovori [MAX_RESP_NO] [MAX_RESP_LEN];
char riječ [MAX_KWD_LEN];
javnost:
// konstruktor
odg. ()
{
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č polja 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 je li korisnik dao bilo koji null unos, tj. samo je pritisnuo enter, a da nije učinio ništa drugo.
Dođimo sada do drugog razreda, odn.
Prvi član podataka, tot_resp označava ukupan broj 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 se funkcija koristi za izračunavanje broja odgovora za datu ključnu riječ.
nevažeća dodana riječ (niz znakova [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.
adresa ništava (…):
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 danom broju indeksa za odgovore. (zapravo čini 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], "TI");
strcpy (wordout [4], "ME");
strcpy (wordin [5], "I");
strcpy (wordout [5], "TI");
strcpy (wordin [6], "VAŠ");
strcpy (wordout [6], "MOJ");
strcpy (wordin [7], "MOJ");
strcpy (wordout [7], "VAŠ");
strcpy (wordin [8], "I'VE");
strcpy (wordout [8], "VAS");
strcpy (wordin [9], "VAS");
strcpy (wordout [9], "I'VE");
strcpy (wordin [10], "Ja sam");
strcpy (wordout [10], "VI");
strcpy (wordin [11], "VI");
strcpy (wordout [11], "Ja sam");
strcpy (wordin [12], "ME");
strcpy (wordout [12], "TI");
strcpy (wordin [13], "TI");
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 poput čovjeka;-). Jedan znak je nasumično odabran za tipkarsku pogrešku. Posebni slučajevi poput New Line i Backspace zasebno se 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 interpunkcijskih znakova.
Na primjer, razmislite o korisničkom unosu
AMIT> MOGU LI SUTRA IĆI U INDORE?
MAX> ŠTO 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
ŠTO AKO NE UČINITE *
Star (*) traži od programa da jednostavno kopira sve što je upisano nakon ključne riječi (ovdje MOŽEM I) u korisnički unos, onakvog kakav je. Nadam se da je sada jasna funkcija * kao posebne ključne riječi. Dakle, razmotrimo složeniji slučaj.
AMIT> MOGU LI IĆI U KUPOVINU?
MAX> ŠTO AKO NE IDEŠ U KUPOVINU?
Moramo izvršiti i neku transformaciju. Kad pomislimo na transformaciju, rečenica se dijeli u sljedeća 3 odjeljka:
- Tekst prije transpozicije Word. (ovdje, IDITE NA KUPUJTE)
- Transponirana ključna riječ. (ovdje, TVOJE, umjesto MOJEG)
- Tekst nakon transpozicije Ključna riječ. (ovdje, 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 ………
Uspjeli ste !!!!!!!
Mislim da su svi jasno razumjeli stvari ……
Preporučeni:
Izradite daljinski aktivirani raspršivač koristeći PiFace i Ubidots: 13 koraka
Izradite 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/Laboratorijski pomoćnik za glasovno upravljanje: O MeHello! Ovo je moje prvo uputstvo, imam 17 godina. Ja sam iz Grčke pa moj engleski možda nije savršen, ali dat ću sve od sebe. Dakle, ovu sam aplikaciju prvi put dizajnirao prije 2 godine i smatrao sam da je ovo natjecanje prilika za ažuriranje mog starog projekta
Glasovno aktivirani BT: 3 koraka (sa slikama)
Glasovno aktivirani BT: Glasovno kontrolirana kućna automatizacija pomoću Arduina: U ovom projektu ja koristim glasovnu funkciju za upravljanje kućnim uređajima. Ovaj je projekt 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)
Glasovno aktivirani relejni prekidač (Arduino): Pozdrav svima! U ovom projektu ću vam pokazati kako implementirati glasovne naredbe za vaše Arduino projekte. Pomoću glasovnih naredbi pokazat ću vam kako upravljati modulom relejnog prekidača
Glasovno aktivirani medijski aparati pomoću Alexa: 9 koraka (sa slikama)
Glasovno aktivirani medijski aparati koji koriste Alexa: Jedinica razvijena ovdje čini vaše uređaje poput televizora, pojačala, CD i DVD playera glasovnim naredbama pomoću Alexa i Arduina. Prednost ove jedinice je što morate samo davati glasovne naredbe. Ova jedinica može raditi sa svim uređajima koji