Innholdsfortegnelse:

Stemmeaktivert assistent - MAX: 10 trinn
Stemmeaktivert assistent - MAX: 10 trinn

Video: Stemmeaktivert assistent - MAX: 10 trinn

Video: Stemmeaktivert assistent - MAX: 10 trinn
Video: 10.26" Universal & Portable Car Stereo with Wireless CarPlay/Android Auto/AUX/GPS + 4K Dash Cam-V30! 2024, Juli
Anonim
Stemmeaktivert assistent - MAX
Stemmeaktivert assistent - MAX

Hei i denne instruksen Jeg skal snakke om hvordan du lager en chat-bot MAX (heter meg selv !!!)

Med en viss implementering kan du gjøre denne chatbot -stemmestyrt eller ved bruk av forskjellige programvarer kan du gjøre den som en stemmeassistent. Jeg her kommer ikke til å snakke om det siden alle virkelig kan gjøre denne implementeringen enkelt.

Så vær så snill å støtte meg …….

Min første instruerbare !!!!!!!

Føler meg nervøs for det som skal skje …………….

Trinn 1: Å vite om konkurransen

Å vite om konkurransen
Å vite om konkurransen
Å vite om konkurransen
Å vite om konkurransen

Hei ingeniører og designere ……..

Selv er jeg en datalogistudent som elsker å spille spill og alltid inspirert på datamaskiner. Snakker kort, jeg elsker å vite hvordan alle disse tingene i dag fungerer. Så som en grunn fortsatte jeg å lete og google (jeg brukte også Yahoo også !!! !!!) for å søke og lære tingene.

Så en dag kom jeg foran skjermen til Instructables. Det moret meg virkelig gjennom ulike prosjekter med en rekke ideer om forskjellige aspekter. Så fra den dagen har jeg fulgt med på den. Konkurransesiden underholdt meg virkelig både bekymret for premiene og prosjektene som har blitt sendt av forskjellige mennesker rundt om i verden.

VOICE ACTIVATED CHALLENGE er min første plattform når det gjelder å skrive en Instructable.

Premier moret meg mye (Ja !!! For mye ……..).

Jeg ønsker også å dele min kunnskap innen datamaskiner og teknologien til andre om hvordan forskjellige ting faktisk fungerer.

I denne instruksjonsfilen viser jeg deg hvordan du bygger din egen stemmeaktiverte assistent.

Siden det er min første instruks, kan det være så mange feil (selv om jeg tror at alt dette er løst), så tilgi det.

SÅ…

La oss starte reisen ………………

Trinn 2: Hvor visste jeg om tingene?

Hvor visste jeg om tingene?
Hvor visste jeg om tingene?
Hvor visste jeg om tingene?
Hvor visste jeg om tingene?
Hvor visste jeg om tingene?
Hvor visste jeg om tingene?

Dette vil være et stort spørsmål jeg tror de fleste av dere kan ha gått gjennom ………..

Jeg har en stor lidenskap for kunstig intelligens [AI] fra skolegangen, fra det jeg har søkt mye på ressurser for å studere og utvikle en modell på egen hånd.

I utgangspunktet var det veldig vanskelig (sann tilstand), da jeg forsto at det var et veldig stort emne som ikke er lett å håndtere.

Bøkene som slo opp inkluderer:

  1. Kunstig intelligens en moderne tilnærming
  2. Kunstig. Intelligens. I. 21. århundre. 2. utgave
  3. Dyp læring

Dette er veldig gode bøker (ja sikkert), men det er slett ikke lett å forstå tingene som er skrevet om det. Så holdt jeg det ved siden av og fortsatte med å søke etter ressursene som gir opp en kort ide om hva det virkelig representerer og måter å komme videre til det.

Da fant jeg en interesse for det. Gjennom ferien etter skolegang begynte jeg å lære mer om det.

På den tiden lærte jeg også forskjellige programmeringsspråk (C ++, C, Python, Java …), som også var veldig interessant.

Ved å lese mer om emnet forsto jeg en viktig ting ………………..

Programmeringsspråkene ER GRUNNLEGGENDE FOR HVER MASKINLÆRINGSProsess

Maskinlæring er prosessen med å bruke AI

Med stor forståelse for programmeringsspråk og forskjellige ting som kan gjøres avhengig av programmereren for å lage en datamaskin for å gjøre noe for oss.

Så jeg bestemte meg for å lage et godt grunnlag for språkene som fikk meg til å forstå begrepene som er gitt i boken som jeg allerede har nevnt

Du kan også gjøre det ………

Det er så mange nettsteder tilstede på nettet for å lære programmeringsspråk fritt

Så du kan surfe på internett for å forstå mer om det hvis du ønsker det ………

Trinn 3: La oss starte

Meg før jeg begynte å skrive Instructable tenkte jeg på å skrive noe som kan forstås av:

  1. Folk som har erfaring med koding
  2. Mennesker uten kodebakgrunn

Så jeg tror jeg har gjort tingen uten feil (forhåpentligvis).

Så jeg har bestemt meg for å bygge en chat -bot som kan snakke med brukeren og kan svare i henhold til samtalen vår.

Programmet (sett med instruksjoner) kan ikke tenke alene. Den har en database (et sted der data har blitt lagret) med fakta og regler, som blir søkt på når du snakker for å gi best mulig svar som gir i forbindelse med brukeren.

Det fungerer ved å matche prosessen avhengig av ting som er lagt inn, bare i sjeldne tilfeller blir en hel setning matchet over til en fullstendig setning.

Trinn 4: Hvordan fungerer det egentlig?

Trinn 1:

MAX finner ut om brukeren har gitt noen null input. Hvis brukeren gir innspill på en slik måte, tar det faktum fra den statiske databasen for å svare.

Å, unnskyld ……

Jeg glemte å si,

Statisk database: Stedet der innebygde svar er lagret. Svar som:

1. Når MAX ikke forstår hva brukeren snakker om.

2. Når brukeren gjentar seg selv.

3. For hilsenerklæringer.

4. Når brukeren ikke skriver noe og bare fortsetter å trykke Enter.

Stikkord: ord med spesiell betydning.

Steg 2:

Det er noen innebygde svar som MAX kan gjenkjenne lett og enkelt. Den finner tilstedeværelsen av en slik setning etter å ha identifisert brukerens input og husker det tilhørende søkeordet.

Trinn 3:

Hvis det ikke blir funnet noen innebygd setning selv etter fragmentering av den gitte setningen, søker MAX etter det spesifikke søkeordet for å definere konteksten. Hvis ingen kontekst blir funnet, er det neste målet å få brukeren til å snakke om emnet mer bevisst på en bestemt måte.

Trinn 4:

Fra den statiske databasen som vi allerede har snakket om, vil den hente responsen som avhenger av hva brukeren har snakket om.

Trinn 5:

I det er behov for å endre ordene, det vil gjøre det selv (for eksempel konvertering av MY til DITT osv.).

Trinn 5: La oss kode …………

Jeg bruker Turbo C IDE 3.0 siden dette er IDE [Integrated Developmental Environment]

La oss se strukturen til en eksempeldatafil før kodingen.

MAX gjenkjenner visse søkeord.

Hvis disse søkeordene finnes i inngangen som er gitt av brukeren, velges et tilsvarende svar fra datafilen og velges opp og vises på skjermen.

Et søkeord er atskilt i datafilen fra svarene med @ KWD @ token.

Token er en minste del av alle programmeringsaspekter.

Dette symbolet angir at neste linje er et søkeord og ikke et svar.

@ KWD@ HEI

HEI HVORDAN HAR DU DET

HEI KJÆRE !

JEG HAR DET BRA

HVORDAN VAR DIN JOBB?

HVOR GAMMEL ER DU?

JEG VIL

DET VIL DU GJØRE. JEG TROR DET FOR …

KAN DU KJØRE DET?

VIL DU STOLE PÅ MEG?

JA

ER DU SIKKER ?

HVORDAN KAN DU VÆRE SIKKER?

NEI

DU synes å være veldig pessimistisk.

ALDRI SI NEI…

ALDRI SI ALDRI

ALDRI UHØF

ALDRI VÆRE ARROGANT !!!!

ALDRI SE AT JEG IKKE KAN GJØRE DETTE

ALDRI OPTIMISTISK

DATAMASKIN

JEG VET HVORDAN JOBBER PÅ DATAMASKIN.

DU BRUKER FOR øyeblikket en datamaskin. IKKE SANT ?

For eksempel 'Hei', fra ordlisten ovenfor, vil MAX gi ett av følgende svar:

HI, HVORDAN ER DUHELLO kjære!

JEG HAR DET BRA

HVORDAN VAR DIN JOBB?

HVOR GAMMEL ER DU?

Trinn 6: Klasser

Når denne tingen er klar, la oss nå definere datastrukturer som vi skal bruke.

Vi lager to klasser:

progstr - Dette brukes til å lagre brukerens input -relaterte informasjon.

resp - Dette brukes til å lagre informasjonen om de forskjellige svarene

klasse prog {

offentlig:

char userip [MAX_USER_INPUT];

røykeord [30];

int nøkkelfunnet;

int keyno;

int nullip;

// konstruktør

progstr () {keyno = -1; nullip = 0; nøkkelfunn = 0;

}

} ip;

klasse hhv

{

int tot_resp;

int last_resp;

char svarer [MAX_RESP_NO] [MAX_RESP_LEN];

røykeord [MAX_KWD_LEN];

offentlig:

// konstruktør

resp ()

{

tot_resp = 0;

siste_respons = -1;

}

int getcount ()

{

return last_resp;

}

ugid addword (char str [MAX_KWD_LEN])

{

strcpy (ord, str);

}

char * getword ()

{

returord;

}

void addresp (char str [MAX_RESP_LEN])

{

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

}

// definert senere

void display_resp (int num);

void quit_display_resp (int num);

};

Ser på første klasse, Tegnoppsettet userip brukes til å lagre setningen gitt av brukeren.

Et annet matrisesøkeord brukes til å lagre søkeordet, hvis noen, som finnes i den inngangen. Hvis et søkeord blir funnet, gjør vi int nøkkelfunn til 1 annet, det forblir 0, ettersom det initialiseres til 0 i konstruktøren.

keyno lagrer det tilhørende nøkkelnummeret til det tilsvarende søkeordet.

nullip angir om brukeren har gitt noen Null -input, dvs. at han bare trykker enter uten å gjøre noe annet.

La oss nå komme til andre klasse, hhv.

Det første datamedlemmet, tot_resp, angir antall totale svar for et gitt søkeord.

Svarene lagres faktisk i svarene [MAX_RESP_NO] [MAX_RESP_LEN], og det tilsvarende søkeordet lagres i matriseordet.

Konstruktør: Dette brukes til å initialisere det totale antallet svar til 0. Hvorfor last_resp initialiseres til -1 vil være klart når du ser på funksjonen add_resp.

int getcount ():

Denne funksjonen brukes til å telle hvor mange svar det er for et gitt søkeord.

ugid addword (char str [MAX_KWD_LEN]):

Dette brukes til å legge til et søkeord.

char * getword ():

Brukes til å returnere søkeordet for et bestemt objekt av klasse hhv.

void addresp (…):

Dette brukes til å legge til et svar som tilsvarer et gitt søkeord.

void display_resp (int):

Dette brukes til å vise svaret til brukeren som tilsvarer et gitt indeksnummer for svarene. (faktisk gjør det mer enn det!).

void quit_display_resp (int):

Forskjellen mellom denne funksjonen og funksjonen ovenfor er at den brukes til slutt når brukeren slutter. Så det sender ikke meldingen tilbake til brukeren.

Trinn 7: Funksjoner

ugyldig initialize_global ()

{

strcpy (wordin [0], "ER");

strcpy (wordout [0], "AM");

strcpy (wordin [1], "AM");

strcpy (wordout [1], "ER");

strcpy (wordin [2], "WERE");

strcpy (wordout [2], "WAS");

strcpy (wordin [3], "WAS");

strcpy (wordout [3], "WERE");

strcpy (wordin [4], "YOU");

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

strcpy (wordin [5], "I");

strcpy (wordout [5], "YOU");

strcpy (wordin [6], "YOUR");

strcpy (wordout [6], "MY");

strcpy (wordin [7], "MY");

strcpy (wordout [7], "DIN");

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], "DU ER");

strcpy (wordin [11], "DU ER");

strcpy (wordout [11], "I'M");

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

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

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

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

}

La oss nå skrive en funksjon for å vise svarene til brukeren. Den første if-setningen i for-sløyfen brukes til å lage en bevisst skrivefeil for å få den til å virke mer menneskelig;-). Ett tegn er tilfeldig valgt for skrivefeil. Spesielle saker som New Line og Backspace vurderes separat. (Tenk hvorfor?). Nå introduserer jeg noe nytt. En spesiell karakter - *. Char * representerer all teksten som er funnet ETTER det identifiserte søkeordet, og før et av følgende skilletegn.

Vurder for eksempel brukerinput

AMIT> KAN JEG GÅ TIL INDORE MORGEN?

MAKS> HVA HVIS DU IKKE GÅR TIL INDORE MORGEN?

Den understrekede delen er ikke lagret i ordlisten, den er snarere hentet fra brukerinngangen. I filen MAX. Dat lagrer vi denne informasjonen som

KAN JEG

HVA OM DU IKKE GJØR *

Star (*) ber programmet om å kopiere det som er skrevet etter søkeordet (her CAN I) i brukerinndataene, slik det er. Jeg håper at nå er funksjonen til * som et spesielt søkeord klar. Så la oss vurdere en mer komplisert sak.

AMIT> KAN JEG GÅ TIL HANDLING?

MAKS> HVA HVIS DU IKKE GÅR TIL Å HANDLE?

Vi må også utføre en viss transformasjon. Når vi tenker på transformasjon, blir setningen delt i de følgende 3 seksjonene:

  • Tekst før overføring Word. (her, gå til å handle med)
  • Transponert søkeord. (her, DIN, i stedet for MIN)
  • Tekst etter overføring nøkkelord. (her jeg ?)

Trinn 8: Sakene kan håndteres av ………

Trinn 9: Søke etter et nøkkelord i brukerens inndata

MAX_KEY angir antall søkeord i DAT -filen.

Vi søker her bare om søkeordet er tilstede i brukerens inndata.

Trinn 10: Konklusjon

Det er alt ………

Du har gjort det !!!!!!!

Jeg tror alle forsto tingene tydelig ……

Anbefalt: