Innholdsfortegnelse:
- Trinn 1: Å vite om konkurransen
- Trinn 2: Hvor visste jeg om tingene?
- Trinn 3: La oss starte
- Trinn 4: Hvordan fungerer det egentlig?
- Trinn 5: La oss kode …………
- Trinn 6: Klasser
- Trinn 7: Funksjoner
- Trinn 8: Sakene kan håndteres av ………
- Trinn 9: Søke etter et nøkkelord i brukerens inndata
- Trinn 10: Konklusjon
Video: Stemmeaktivert assistent - MAX: 10 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
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
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?
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:
- Kunstig intelligens en moderne tilnærming
- Kunstig. Intelligens. I. 21. århundre. 2. utgave
- 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:
- Folk som har erfaring med koding
- 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:
STEMMEAKTIVERT ANSIKTSMASKE: 3 trinn
RØSTE AKTIVERT ANSIKTSMASKE: ETT MÅNEDER TILBAKE EN GUTT TILKALDT 'TYLER GLAIEL' LAGDE EN STEME AKTIVERT ANSIKTSMASKE SOM Gikk VIRAL … ETTER AT MANGE GJORDE DET, MEN INGEN AV DEM GJØR DETALJERNE NØDVENDIG FOR DETS KOMPLETTE. TYLER HAR SELV NEDLAGT GJENNOMFØRINGSGUIDEEN OG GITHUB CO
Stemmeaktivert fjernkontrollknapp: 4 trinn (med bilder)
Stemmeaktivert fjernkontrollknapp: Hvis du har sett de andre instruktørene mine, vet du at sønnen vår har muskeldystrofi. Dette er et stykke av et prosjekt for å gjøre ting mer tilgjengelige for ham. Vi har en dør som betjenes av en fjernkontroll til en døråpner. Dette har vært fantastisk i
Stemmeaktivert BT: 3 trinn (med bilder)
Stemmeaktivert BT: Stemmestyrt hjemmeautomatisering ved bruk av Arduino: I dette prosjektet bruker jeg en stemmefunksjon for å kontrollere hjemmeapparater. Dette prosjektet er en del av serien min hjemmeautomatisering. Dette prosjektet er veldig enkelt å bruke i virkeligheten. Folk i alle aldre kan kontrollere
Stemmeaktivert relébryter (Arduino): 6 trinn (med bilder)
Stemmeaktivert relébryter (Arduino): Hei alle sammen! I dette prosjektet vil jeg vise deg hvordan du implementerer talekommandoer for dine Arduino -prosjekter. Ved hjelp av talekommandoer vil jeg vise deg hvordan du styrer en relébrytermodul
Stemmeaktivert RoBoT: 5 trinn
Stemmeaktivert RoBoT: Stemmestyrt robot ved bruk av Arduino: Hei alle sammen, jeg håper dere har det bra og har det bra. I dag skal vi starte prosjekter knyttet til robotikk ved hjelp av Arduino. I dag skal vi snakke om stemmestyrt robot ved hjelp av Arduino og android ap