Obsah:

Hlasom aktivovaný asistent - MAX: 10 krokov
Hlasom aktivovaný asistent - MAX: 10 krokov

Video: Hlasom aktivovaný asistent - MAX: 10 krokov

Video: Hlasom aktivovaný asistent - MAX: 10 krokov
Video: КАК НАСТРОИТЬ L4D2 2024, Júl
Anonim
Hlasom aktivovaný asistent - MAX
Hlasom aktivovaný asistent - MAX

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

Vedieť o súťaži
Vedieť o súťaži
Vedieť o súťaži
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?

Kde som vedel o veciach?
Kde som vedel o veciach?
Kde som vedel o veciach?
Kde som vedel o veciach?
Kde som vedel o veciach?
Kde som vedel o veciach?

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:

  1. Umelá inteligencia moderný prístup
  2. Umelá inteligencia. V 21. storočí. 2. storočie
  3. 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:

  1. Ľudia, ktorí majú skúsenosti s kódovaním
  2. Ľ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: