Kazalo:

Glasovno aktiviran pomočnik - MAX: 10 korakov
Glasovno aktiviran pomočnik - MAX: 10 korakov

Video: Glasovno aktiviran pomočnik - MAX: 10 korakov

Video: Glasovno aktiviran pomočnik - MAX: 10 korakov
Video: 30+ TRIKOVA ZA IPHONE KOJI ĆE VAM OLAKŠATI ŽIVOT 2024, Julij
Anonim
Glasovno aktiviran pomočnik - MAX
Glasovno aktiviran pomočnik - MAX

Hej, v tem Instructable-u bom govoril o tem, kako narediti chat-bot MAX (ime mi je ime !!!)

Z nekaj izvedbe lahko ta chatbot upravljate z glasom ali pa z uporabo različne programske opreme postanete glasovni pomočnik. Tukaj ne bom govoril o tem, saj lahko vsakdo resnično olajša to izvedbo.

Zato me prosim vsi podprite ……

Moj prvi Instructable !!!!!!!

Občutek nervoze glede tega, kaj se bo zgodilo …………….

1. korak: Poznavanje natečaja

Poznavanje natečaja
Poznavanje natečaja
Poznavanje natečaja
Poznavanje natečaja

Pozdravljeni inženirji in oblikovalci ……

Sama sem študentka računalništva, ki rada igra igrice in me vedno navdihuje na računalnikih. Na kratko govorim o tem, kako vse te stvari delujejo, zato je razlog, da sem iskala, googlala (tudi jaz sem včasih uporabljala Yahoo !!! !!!) za iskanje in učenje stvari.

Tako sem nekega dne prišel pred zaslon Instructables. Resnično me je razveselilo skozi različne projekte z različnimi idejami o različnih vidikih. Od takrat naprej sledim temu. Stran natečaja me je res zabavala tako glede nagrad kot projektov, ki so jih poslali različni ljudje po vsem svetu. svet.

GLASNO AKTIVIRAN IZZIV je moja prva platforma v zvezi s pisanjem Instructable.

Nagrade so me zelo zabavale (Ja !!! Preveč ……..).

Prav tako želim deliti svoje znanje s področja računalnikov in njihove tehnologije o tem, kako različne stvari dejansko delujejo.

V tem navodilu vam bom pokazal, kako sestaviti lastnega glasovno aktiviranega pomočnika.

Ker je to moj prvi Instructable, je lahko toliko napak (čeprav mislim, da so bile vse te popravljene), zato oprostite to.

TAKO ….

Začnimo pot ………………

2. korak: Kje sem vedel o stvareh?

Kje sem vedel o stvareh?
Kje sem vedel o stvareh?
Kje sem vedel o stvareh?
Kje sem vedel o stvareh?
Kje sem vedel o stvareh?
Kje sem vedel o stvareh?

To bo glavno vprašanje, za katerega mislim, da vas je večina misli pretekla ………

Zelo sem navdušen nad umetno inteligenco [AI] že v času šolanja, od tega sem veliko iskal in iskal vire za študij in samostojen razvoj modela.

Sprva je bilo zelo težko (resnično stanje), saj sem razumel, da je to zelo obsežna tema, ki je sploh ni lahko obravnavati.

Knjige, ki so jih poiskali, vključujejo:

  1. Umetna inteligenca Sodoben pristop
  2. Umetna. Intelligence.in.21.st. Century.2nd. Edition
  3. Globoko učenje

To so zelo dobre knjige (ja, seveda), vendar sploh ni lahko razumeti stvari, ki so bile napisane o tem. res predstavlja in načine, kako priti do tega.

Potem sem našel zanimanje za to. Skozi počitnice po šolanju sem se o tem začel globlje učiti.

Takrat sem se naučil tudi različnih programskih jezikov (C ++, C, Python, Java….), Ki so tudi zelo zanimivi.

Ko sem prebral več o tej temi, sem razumel eno pomembno stvar …………………..

Programski jeziki so OSNOVNI ZA VSAK PROCES UČENJA STROJEV

Strojno učenje je postopek uporabe AI

Z velikim razumevanjem programskih jezikov in različnih stvari, ki jih programer lahko naredi, da računalnik naredi karkoli namesto nas.

Zato sem se odločil ustvariti dobro osnovo za jezike, zaradi katerih sem razumel koncepte, ki sem jih omenil v knjigi, ki sem jih že omenil

To lahko storite tudi vi ……

V spletu je toliko spletnih mest, ki se prosto učijo programskih jezikov

Tako lahko pobrskate po internetu, če želite izvedeti več o tem ………

3. korak: Začnimo

Preden sem začel pisati Instructable, sem pomislil, da bi napisal nekaj takega, kar bi razumeli:

  1. Ljudje, ki imajo izkušnje s kodiranjem
  2. Ljudje brez kodiranja

Zato mislim, da sem stvar naredil brez napak (upam).

Zato sem se odločil zgraditi klepetalnega bota, ki se lahko pogovarja z uporabnikom in se lahko odzove v skladu z našim pogovorom.

Program (niz navodil) ne more razmišljati sam. Ima zbirko podatkov (kraj, kjer so bili shranjeni podatki) dejstev in pravil, ki jih v času pogovora iščemo, da bi kar najbolje odgovorili v povezavi z uporabnikom.

Deluje s postopkom ujemanja, odvisno od vnesenih stvari, le v redkih primerih se celoten stavek ujema s celotnim stavkom.

4. korak: Kako dejansko deluje?

Korak 1:

MAX ugotovi, ali je uporabnik vnesel nič. Če uporabnik, ko je vnesen na tak način, vzame dejstvo iz statične baze podatkov, da se odzove.

Oh oprosti …….

Pozabil sem reči,

Statična zbirka podatkov: mesto, kjer so shranjeni vgrajeni odgovori. Odzivi, kot so:

1. Ko MAX ne razume, o čem govori uporabnik.

2. Ko se uporabnik ponovi.

3. Za pozdravne izjave.

4. Ko uporabnik ne vnese ničesar in samo še naprej pritiska na Enter.

Ključna beseda: besede s posebnim pomenom.

2. korak:

Obstaja nekaj vgrajenih odzivov, ki jih MAX zlahka in enostavno prepozna. Ugotovi prisotnost kakršnega koli takega stavka po identifikaciji uporabnikovega vnosa in se spomni povezane ključne besede.

3. korak:

Če tudi po razdrobljenosti danega stavka ni vgrajenega stavka, potem MAX išče določeno ključno besedo, da opredeli kontekst. Če kontekst ni odkrit, je naslednji cilj, da uporabnika namerno in na poseben način pogovarja o temi.

4. korak:

Iz statične baze podatkov, o kateri smo že govorili, bo pobral odgovor, ki je odvisen od tega, o čem je uporabnik govoril.

5. korak:

Moram spremeniti besede, ki jih bo naredil sam (na primer Pretvorba MOJE v VAŠE itd.)

5. korak: Kodirajmo …………

Uporabljam Turbo C IDE 3.0, saj je to IDE [integrirano razvojno okolje]

Pred kodiranjem poglejmo strukturo vzorčne podatkovne datoteke.

MAX prepozna določene ključne besede.

Če te ključne besede najdemo pri vnosu, ki ga posreduje uporabnik, se iz podatkovne datoteke izbere ustrezen odgovor, ki se izbere in prikaže na zaslonu.

Ključna beseda je v podatkovni datoteki ločena od odgovorov z žetonom @ KWD @.

Žeton je najmanjši del vsakega programskega vidika.

Ta žeton označuje, da je naslednja vrstica ključna beseda in ne odziv.

@ KWD@ POZDRAV

ŽIVJO, KAKO SI

ZDRAVO DRAGA !

V REDU SEM

KAKO JE BILO VAŠE DELO?

KOLIKO STE STARI?

BOM

TAKO BOŠ. TUDI VERJEM …

ALI BOŠ TO ZMOGEL?

BODE MENE ZAUPALI?

DA

ALI SI PREPRIČAN ?

KAKO SI LAHKO TAKO SIGURAN?

NE

Zdi se, da ste zelo pesimistični.

NIKOLI NE REČITE NE…

NIKOLI NE RECI NIKOLI

NIKOLI NE BODI NESTEN

NIKOLI NE BODITE DROGNI !!!!

NIKOLI NE REČITE, DA TO NE ZMOGEM

NIKOLI NE BODITE OPTIMISTIČNI

RAČUNALNIK

VEM, KAKO DELO NA RAČUNALNIKU.

TRENUTNO UPORABLJATE RAČUNALNIK. PRAV ?

Na primer "Hello" iz zgornjega slovarja bo MAX dal enega od naslednjih odgovorov:

Živjo, KAKO STE DRAGI!

V REDU SEM

KAKO JE BILO VAŠE DELO?

KOLIKO STE STARI?

6. korak: Razredi

Ko je to jasno, opredelimo podatkovne strukture, ki jih bomo uporabljali.

Oblikujemo dva razreda:

progstr - Uporablja se za shranjevanje podatkov, povezanih z vnosom uporabnika.

resp - Uporablja se za shranjevanje informacij o različnih odzivih

razred progstr {

javno:

char userip [MAX_USER_INPUT];

ključna beseda char [30];

int keyfound;

int keyno;

int nullip;

// konstruktor

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

}

} ip;

razred oz

{

int tot_resp;

int last_resp;

char odgovori [MAX_RESP_NO] [MAX_RESP_LEN];

beseda char [MAX_KWD_LEN];

javno:

// konstruktor

resp ()

{

tot_resp = 0;

last_resp = -1;

}

int getcount ()

{

return last_resp;

}

nična dodatna beseda (niz znakov [MAX_KWD_LEN])

{

strcpy (beseda, str);

}

char * getword ()

{

povratna beseda;

}

neveljaven naslov (niz znakov [MAX_RESP_LEN])

{

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

}

// opredeljeno kasneje

void display_resp (int num);

void quit_display_resp (int num);

};

Če pogledamo prvi razred, Userip nizov znakov se uporablja za shranjevanje stavka, ki ga je dal uporabnik.

Druga ključna beseda matrike se uporablja za shranjevanje ključne besede, če obstaja, v tem vnosu. Če ključno besedo najdemo, naredimo int keyfound do 1 else, ostane 0, saj se v konstruktorju inicializira na 0.

keyno shrani ustrezno številko ključa ustrezne ključne besede.

nullip označuje, ali je uporabnik vnesel nič vrednosti, torej samo pritisne enter, ne da bi naredil kaj drugega.

Zdaj pa pojdimo na drugi razred, oz.

Prvi podatkovni član, tot_resp, označuje skupno število odgovorov za dano ključno besedo.

Odgovori so dejansko shranjeni v odgovorih [MAX_RESP_NO] [MAX_RESP_LEN], ustrezna ključna beseda pa je shranjena v besedi polja.

Konstruktor: To se uporablja za inicializacijo skupnega števila odgovorov na 0. Zakaj je last_resp inicializiran na -1, bo jasno, ko pogledate funkcijo add_resp.

int getcount ():

Ta funkcija se uporablja za izračun števila odgovorov na določeno ključno besedo.

nična dodatna beseda (niz znakov [MAX_KWD_LEN]):

To se uporablja za dodajanje ključne besede.

char * getword ():

Uporablja se za vrnitev ključne besede za določen predmet razreda oz.

neveljaven naslov (…):

To se uporablja za dodajanje odgovora, ki ustreza dani ključni besedi.

void display_resp (int):

To se uporablja za prikaz odziva uporabniku, ki ustreza dani številki indeksa odgovorov. (pravzaprav naredi več kot to!).

void quit_display_resp (int):

Razlika med to in zgornjo funkcijo je, da se na koncu uporablja, ko uporabnik zapusti. Tako uporabniku ne vrne poziva.

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

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

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

strcpy (wordin [10], "Jaz sem");

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

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

strcpy (wordout [11], "Jaz sem");

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

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

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

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

}

Napišemo zdaj funkcijo za prikaz odgovorov uporabniku. Prvi stavek if v zanki for se uporablja za namerno tipkarsko napako, da bi bilo videti bolj človeško;-). Za tipkarsko napako je naključno izbran en znak. Posebni primeri, kot sta New Line in Backspace, se obravnavajo ločeno. (Pomislite, zakaj?). Zdaj uvajam nekaj novega. Poseben znak - *. Char * predstavlja vse besedilo, najdeno PO identificirani ključni besedi in pred enim od naslednjih ločil.

Na primer, razmislite o vnosu uporabnika

AMIT> ALI LAHKO JUTRI POJDEM NA DALJE?

MAX> KAJ, ČE JUTRI NE GREŠ V ZNANJ?

Podčrtani del ni shranjen v slovarju, temveč je vzet iz vnosa uporabnika. V datoteki MAX. Dat te podatke hranimo kot

ALI LAHKO

KAJ, če NE *

Star (*) prosi program, naj preprosto kopira vse, kar je vneseno za ključno besedo (tukaj CAN I) v vnos uporabnika. Upam, da je zdaj funkcija * kot posebne ključne besede jasna. Zato razmislimo o bolj zapletenem primeru.

AMIT> Ali lahko odidem v NAKUP?

MAX> KAJ, če ne greste nakupovati?

Prav tako moramo narediti nekaj preobrazbe. Ko pomislimo na preobrazbo, se stavek razdeli na naslednje tri dele:

  • Besedilo pred prenosom Word. (tukaj, POJDI V NAKUP z)
  • Prenesena ključna beseda. (tukaj, VAŠ, namesto MOJ)
  • Besedilo po prenosu ključne besede. (tukaj, jaz?)

8. korak: Z zadevami se lahko spoprimete ………

9. korak: Iskanje ključne besede v uporabnikovem vnosu

MAX_KEY označuje število ključnih besed v datoteki DAT.

Tukaj preprosto iščemo, ali je ključna beseda prisotna v uporabnikovem vnosu.

10. korak: Zaključek

To je vse ………

Uspelo vam je !!!!!!!!

Mislim, da so vsi stvari jasno razumeli ……

Če kdo dvomi glede česa, vas lahko vpraša

Priporočena: