Obsah:
- Krok 1: Vedieť o súťaži
- Krok 2: Kde som o veciach vedel?
- Krok 3: Začnime
- Krok 4: Ako to vlastne funguje?
- Krok 5: Poďme kódovať ……….
- Krok 6: Triedy
- Krok 7: Funkcie
- Krok 8: Prípady je možné riešiť do ……….
- Krok 9: Hľadanie kľúčového slova vo vstupe používateľa
- Krok 10: Záver
Video: Hlasom aktivovaný asistent - MAX: 10 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
Hej, v tomto návode budem hovoriť o tom, ako vytvoriť chat-bot MAX (pomenovaný sám !!!)
S nejakou implementáciou môžete tento chatbot ovládať hlasom alebo s použitím rôznych softvérov ho vytvoriť ako hlasového asistenta. Nebudem o tom hovoriť, pretože každý môže skutočne uľahčiť túto implementáciu.
Preto ma prosím všetci podporte …….
Môj prvý pokyn !!!!!!!
Nervozita z toho, čo sa stane …………….
Krok 1: Vedieť o súťaži
Ahoj inžinieri a dizajnéri ………..
Ja sám, študent informatiky, rád hrám hry a vždy sa inšpirujem na počítačoch. Krátke rozprávanie, milujem vedieť, ako všetky tieto veci v súčasnosti fungujú. Ako dôvod som stále hľadal, googlil (mimochodom, aj ja som používal Yahoo !!! !!!) za vyhľadávanie a učenie sa vecí.
Jedného dňa som sa teda dostal pred obrazovku Instructables. Skutočne ma to pobavilo prostredníctvom rôznych projektov s rôznymi myšlienkami na rôzne aspekty. Potom od toho dňa s tým pokračujem. Stránka súťaže ma skutočne pobavila, pokiaľ ide o ceny a projekty, ktoré predložili rôzni ľudia z celého sveta. svet.
VOICE ACTIVATED CHALLENGE je moja prvá platforma, pokiaľ ide o napísanie inštrukcie.
Ceny ma veľmi pobavili (Áno !!! Príliš veľa ……..).
Tiež by som sa chcel podeliť s ostatnými o svoje znalosti v oblasti počítačov a ich technológie o tom, ako rôzne veci skutočne fungujú.
V tomto návode vám ukážem, ako si vytvoriť vlastného asistenta aktivovaného hlasom.
Pretože je to môj prvý Instruktable, môže byť toľko chýb (aj keď si myslím, že všetky boli opravené), tak to odpustite.
TAK …
Začnime cestu ………………
Krok 2: Kde som o veciach vedel?
Toto bude zásadná otázka, myslím si, že väčšina vašich myslí si mohla prejsť ………..
Už od školy mám veľkú záľubu v umelej inteligencii [AI]. Od tej doby som veľa hľadal zdroje a študoval som a vyvíjal model sám.
Spočiatku to bolo veľmi ťažké (skutočný stav), pretože som pochopil, že je to veľmi rozsiahla téma, ktorú nie je vôbec ľahké zvládnuť.
K knihám, ktoré sa pozreli hore, patria:
- Umelá inteligencia moderný prístup
- Umelá inteligencia. V 21. storočí. 2. storočie
- Hlboké učenie
Sú to veľmi dobré knihy (určite áno), ale nie je vôbec ľahké porozumieť veciam, ktoré sú o nich napísané. Potom som to nechal bokom a pokračoval som v hľadaní zdrojov, z ktorých vyplýva stručná predstava o tom, čo skutočne to predstavuje a spôsoby, ako sa k tomu dostať.
Potom som sa o to zaujímal. Počas prázdnin po škole som sa o tom začal hlbšie učiť.
V tom čase som sa tiež naučil rôzne programovacie jazyky (C ++, C, Python, Java ….), Ktoré sú tiež veľmi zaujímavé.
Keď som čítal viac na túto tému, porozumel som jednej dôležitej veci ………………..
Programovacie jazyky sú ZÁKLADOM KAŽDÉHO PROCESU UČENIA STROJA
Strojové učenie je proces aplikácie AI
S veľkým porozumením programovacím jazykom a rôznym veciam, ktoré je možné vykonať v závislosti od programátora, aby počítač urobil čokoľvek za nás.
Preto som sa rozhodol vytvoriť dobrý základ pre jazyky, vďaka ktorým som porozumel pojmom uvedeným v knihe, ktoré som už spomenul
To môžeš aj ty ……
Na webe je množstvo webových stránok, ktoré môžu voľne vyučovať programovacie jazyky
Ak teda chcete, môžete surfovať na internete a dozvedieť sa o ňom viac ……….
Krok 3: Začnime
Predtým, ako som začal písať Pokyny, napadlo ma napísať niečo takého druhu, ktorému rozumie:
- Ľudia, ktorí majú skúsenosti s kódovaním
- Ľudia bez akéhokoľvek kódovacieho pozadia
Preto si myslím, že som vec urobil bez chýb (dúfajme).
Rozhodol som sa teda vytvoriť chatovacieho robota, ktorý bude môcť hovoriť s používateľom a bude môcť reagovať podľa nášho rozhovoru.
Program (súbor inštrukcií) nemôže premýšľať sám. Má databázu (miesto, kde boli uložené údaje) faktov a pravidiel, ktoré sa v čase rozhovoru vyhľadávajú, aby poskytli najlepšiu možnú odpoveď v súvislosti s používateľom.
Funguje to tak, že proces párovania závisí od zadaných vecí, iba v zriedkavých prípadoch je celá veta priradená k úplnej vete.
Krok 4: Ako to vlastne funguje?
Krok 1:
MAX zisťuje, či používateľ zadal nulový vstup. Ak používateľ zadá vstup takým spôsobom, odpoveď odoberie fakt zo statickej databázy.
Ó prepáčte ……
Zabudol som povedať,
Statická databáza: Miesto, kde sú uložené vstavané odpovede. Odpovede typu:
1. Keď MAX nechápe, o čom používateľ hovorí.
2. Keď sa užívateľ opakuje.
3. Za pozdravné vyhlásenia.
4. Keď používateľ nič nenapíše a bude pokračovať v stlačení klávesu Enter.
Kľúčové slovo: slová so špeciálnym významom.
Krok 2:
Existuje niekoľko zabudovaných odpovedí, ktoré MAX dokáže ľahko a ľahko rozpoznať. Po identifikácii vstupu používateľov zistí prítomnosť akejkoľvek takejto vety a zapamätá si súvisiace kľúčové slovo.
Krok 3:
Ak sa nenájde vstavaná veta ani po fragmentácii danej vety, MAX vyhľadá konkrétne kľúčové slovo a definuje kontext. Ak sa nenachádza žiadny kontext, je ďalším cieľom prinútiť používateľa hovoriť o téme premyslenejšie konkrétnym spôsobom.
Krok 4:
Zo statickej databázy, o ktorej sme už hovorili, zachytí odpoveď, ktorá závisí od toho, o čom používateľ hovoril.
Krok 5:
Ak je potrebné zmeniť slová, urobí to samo (napríklad Konverzia MOJEHO na VAŠEHO atď. …)
Krok 5: Poďme kódovať ……….
Používam Turbo C IDE 3.0, pretože toto je IDE [integrované vývojové prostredie]
Pred kódovaním sa pozrime na štruktúru vzorového dátového súboru.
MAX rozpoznáva určité kľúčové slová.
Ak sa tieto kľúčové slová nachádzajú vo vstupe poskytnutom užívateľom, potom sa z dátového súboru vyberie zodpovedajúca odpoveď a vyberie sa hore a zobrazí sa na obrazovke.
Kľúčové slovo je v dátovom súbore oddelené od odpovedí tokenom @ KWD @.
Token je najmenšou súčasťou všetkých aspektov programovania.
Tento token označuje, že nasledujúci riadok je kľúčové slovo a nie odpoveď.
@ KWD@ AHOJ
AHOJ AKO SA MÁŠ
AHOJ DRAHÝ !
MÁM SA DOBRE
AKÁ BYLA VAŠA PRÁCA?
KOĽKO MÁŠ ROKOV?
BUDEM
ROBÍTE TO. AJ VERÍM …
BUDETE TOTO SCHOPNÍ?
Budete mi DÔVEROVAŤ?
ÁNO
SI SI ISTÝ ?
AKO SI MÔŽETE byť takí istí?
NIE
Zdá sa, že ste veľmi pesimistickí.
NIKDY nehovorte NIE…
NIKDY NEHOVOR NIKDY
NIKDY nebuďte hrubý
NIKDY NEDÁVAJTE !!!!
NIKDY nehovor, že to NEMOHEM
NIKDY NEBUĎTE OPTIMISTICKÝ
POČÍTAČ
VIEM AKO PRACOVAŤ NA POČÍTAČI.
V súčasnej dobe POUŽÍVATE POČÍTAČ. SPRÁVNY ?
Napríklad „Dobrý deň“, z vyššie uvedeného slovníka poskytne MAX jednu z nasledujúcich odpovedí:
AHOJ, AKO SA MÁTE MILÉ!
MÁM SA DOBRE
AKÁ BYLA VAŠA PRÁCA?
KOĽKO MÁŠ ROKOV?
Krok 6: Triedy
Akonáhle je táto vec jasná, definujme teraz dátové štruktúry, ktoré budeme používať.
Vytvárame dve triedy:
progstr - Používa sa na ukladanie informácií o vstupe používateľa.
resp - Toto sa používa na ukladanie informácií o rôznych odpovediach
trieda progstr {
verejnosť:
char userip [MAX_USER_INPUT];
kľúčové slovo char [30];
int keyfound;
int keyno;
int nullip;
// konštruktér
progstr () {keyno = -1; nullip = 0; keyfound = 0;
}
} ip;
trieda resp
{
int tot_resp;
int last_resp;
odpovedá na znaky [MAX_RESP_NO] [MAX_RESP_LEN];
char slovo [MAX_KWD_LEN];
verejnosť:
// konštruktér
resp ()
{
tot_resp = 0;
last_resp = -1;
}
int getcount ()
{
vrátiť last_resp;
}
neplatné addword (znak str [MAX_KWD_LEN])
{
strcpy (slovo, str);
}
char * getword ()
{
návratové slovo;
}
neplatné addresp (znak str [MAX_RESP_LEN])
{
strcpy (odpovedá [++ last_resp], str);
}
// definované neskôr
void display_resp (int num);
neplatné quit_display_resp (int num);
};
Pri pohľade na prvú triedu, Pole znakov userip slúži na uloženie vety poskytnutej používateľom.
Na uloženie prípadného kľúčového slova, ktoré sa nachádza v tomto vstupe, sa používa ďalšie kľúčové slovo poľa. Ak sa nájde kľúčové slovo, urobíme int keyfound na 1 else, zostane 0, pretože je inicializované na 0 v Constructor.
keyno uloží číslo zodpovedajúceho kľúča zodpovedajúceho kľúčového slova.
nullip indikuje, či používateľ zadal ľubovoľný nulový vstup, tj iba stlačí kláves Enter bez toho, aby urobil čokoľvek iné.
Teraz poďme k druhej triede, resp.
Prvý dátový člen tot_resp udáva počet celkových odpovedí na dané kľúčové slovo.
Odpovede sú skutočne uložené v odpovediach [MAX_RESP_NO] [MAX_RESP_LEN] a zodpovedajúce kľúčové slovo je uložené v poli slova.
Konštruktor: Používa sa na inicializáciu celkového počtu odpovedí na 0. Prečo je last_resp inicializovaný na -1, bude jasné, keď sa pozriete na funkciu add_resp.
int getcount ():
Táto funkcia sa používa na zistenie počtu odpovedí na dané kľúčové slovo.
neplatné addword (znak str [MAX_KWD_LEN]):
Slúži na pridanie kľúčového slova.
char * getword ():
Slúži na vrátenie kľúčového slova pre konkrétny objekt triedy resp.
neplatná adresa (…):
Slúži na pridanie odpovede zodpovedajúcej danému kľúčovému slovu.
neplatné display_resp (int):
Toto sa používa na zobrazenie odpovede používateľovi zodpovedajúcej danému indexovému číslu odpovedí. (v skutočnosti to robí viac než to!).
neplatné quit_display_resp (int):
Rozdiel medzi touto a predchádzajúcou funkciou je v tom, že sa používa na konci, keď používateľ končí. Nevracia teda výzvu používateľovi.
Krok 7: Funkcie
neplatné initialize_global ()
{
strcpy (wordin [0], "SÚ");
strcpy (cvičenie [0], "AM");
strcpy (wordin [1], "AM");
strcpy (cvičenie [1], "SÚ");
strcpy (wordin [2], „WERE“);
strcpy (workout [2], "WAS");
strcpy (wordin [3], „WAS“);
strcpy (cvičenie [3], "BOLI");
strcpy (slovo [4], „VY“);
strcpy (cvičenie [4], "JA");
strcpy (wordin [5], "I");
strcpy (cvičenie [5], „VY“);
strcpy (slovo [6], „VAŠE“);
strcpy (cvičenie [6], "MOJE");
strcpy (wordin [7], "MOJE");
strcpy (cvičenie [7], „VAŠE“);
strcpy (wordin [8], "I'VE");
strcpy (workout [8], "YOU'VE");
strcpy (wordin [9], „YOU'VE“);
strcpy (cvičenie [9], "SOM");
strcpy (slovo [10], „JA“);
strcpy (cvičenie [10], „TY SI“);
strcpy (wordin [11], „YOU'RE“);
strcpy (workout [11], "I'M");
strcpy (slovo [12], „JA“);
strcpy (cvičenie [12], „VY“);
strcpy (slovo [13], „VY“);
strcpy (cvičenie [13], "JA");
}
Teraz napíšeme funkciu na zobrazenie odpovedí používateľovi. Prvý príkaz if v slučke for sa používa na zámernú chybu pri písaní, aby vyzeral viac ľudsky;-). Jedna chyba je náhodne vybraná pre chybu pri písaní. Špeciálne prípady ako New Line a Backspace sa posudzujú oddelene. (Zamyslite sa prečo?). Teraz predstavím niečo nové. Špeciálna postava - *. Znak * predstavuje všetok text nájdený PO identifikovanom kľúčovom slove a pred jedným z nasledujúcich interpunkčných znamienok.
Zvážte napríklad vstup používateľa
AMIT> MÔŽEM SA ZAJTRA ZJAVIŤ INDOROVAŤ?
MAX> ČO, KEĎ SA ZAJTRA NEJDEŠ INDOROVAŤ?
Podčiarknutá časť nie je uložená v slovníku, ale je prevzatá z užívateľského vstupu. V súbore MAX. Dat tieto informácie ukladáme ako
MÔŽEM
ČO AK NEPOKOJÍTE *
Hviezdička (*) požaduje, aby program jednoducho skopíroval to, čo je napísané za kľúčovým slovom (tu MÔŽEM), tak, ako je. Dúfam, že teraz je funkcia * ako špeciálneho kľúčového slova jasná. Uvažujme teda o komplikovanejšom prípade.
AMIT> MÔŽEM ÍSŤ DO NÁKUPU?
MAX> ČO AK NECHODÍTE NAKUPOVAŤ?
Musíme tiež vykonať určitú transformáciu. Keď uvažujeme o transformácii, veta je rozdelená do nasledujúcich 3 častí:
- Text pred transpozíciou Word. (tu Choďte na NAKUPOVANIE)
- Transponované kľúčové slovo. (tu, VAŠE, namiesto MOJEHO)
- Kľúčové slovo po transpozícii. (tu som ?)
Krok 8: Prípady je možné riešiť do ……….
Krok 9: Hľadanie kľúčového slova vo vstupe používateľa
MAX_KEY udáva počet kľúčových slov v súbore DAT.
Tu jednoducho vyhľadáme, či sa kľúčové slovo nachádza vo vstupe používateľa.
Krok 10: Záver
To je všetko ………
Dokázal si to !!!!!!!!
Myslím, že každý pochopil veci jasne …
Ak by mal niekto o niečom pochybnosti, pokojne sa pýtajte
Odporúča:
DIY Alarm Bike Lock (aktivovaný šok): 5 krokov (s obrázkami)
DIY Alarm Bike Lock (aktivovaný šokom): V tomto projekte vám ukážem, ako vytvoriť jednoduchý šokom aktivovaný alarm na bicykli. Ako naznačuje názov, pri povolení pohybu na bicykli to vydá zvuk alarmu. Cestou sa naučíme niečo o piezoele
Domov/laboratórny hlasom ovládaný asistent: 14 krokov (s obrázkami)
Domov/Laboratórny hlasom ovládaný asistent: O mne Dobrý deň! Toto je môj prvý pokyn, mám 17 rokov. Som z Grécka, takže moja angličtina nemusí byť dokonalá, ale budem sa snažiť. Túto aplikáciu som teda najskôr navrhol pred 2 rokmi a v tejto súťaži som našiel príležitosť aktualizovať svoj starý projekt
Hlasom aktivovaný BT: 3 kroky (s obrázkami)
Hlasom aktivovaný BT: Hlasom ovládaná domáca automatizácia pomocou Arduina: V tomto projekte používam hlasovú funkciu na ovládanie domácich zariadení. Tento projekt je súčasťou série Home Automation. Tento projekt je veľmi jednoduché použiť v reálnom živote. Ľudia akéhokoľvek veku môžu ovládať
Hlasom aktivovaný reléový spínač (Arduino): 6 krokov (s obrázkami)
Hlasom aktivovaný reléový spínač (Arduino): Ahoj všetci! V tomto projekte vám ukážem, ako implementovať hlasové príkazy pre vaše projekty Arduino. Pomocou hlasových príkazov vám ukážem, ako ovládať modul reléového spínača
Hlasom aktivovaný RoBoT: 5 krokov
Hlasom aktivovaný RoBoT: Robot ovládaný hlasom pomocou Arduina: Ahoj všetci, dúfam, že sa máte dobre a máte sa dobre. Dnes sa chystáme začať projekty súvisiace s robotikou pomocou Arduina. Dnes budeme hovoriť o hlasovo ovládanom robotovi pomocou aplikácií Arduino a Android