Innehållsförteckning:

Röstaktiverad assistent - MAX: 10 steg
Röstaktiverad assistent - MAX: 10 steg

Video: Röstaktiverad assistent - MAX: 10 steg

Video: Röstaktiverad assistent - MAX: 10 steg
Video: TOP 5 BEST Android Tv Boxes (2023) 2024, Juli
Anonim
Röstaktiverad assistent - MAX
Röstaktiverad assistent - MAX

Hej i den här instruktionsboken ska jag prata om hur man gör en chat-bot MAX (namngav mig själv !!!)

Med viss implementering kan du göra denna chatbot röststyrd eller med användning av olika program kan du göra det som en röstassistent. Jag här kommer inte att prata om det eftersom alla verkligen kan göra denna implementering enkelt.

Så alla snälla stöd mig …….

Min första instruerbara !!!!!!!

Känner mig nervös för vad som kommer att hända …………….

Steg 1: Att veta om tävlingen

Att veta om tävlingen
Att veta om tävlingen
Att veta om tävlingen
Att veta om tävlingen

Hej ingenjörer och designers ……..

Själv är jag en datavetenskapstudent som älskar att spela spel och alltid inspirerad av datorer. Pratar kort jag älskar att veta hur alla dessa saker i nutid fungerar. Så som en anledning fortsatte jag leta och googla (jag brukade också använda Yahoo !!! !!!) för att söka och lära sig sakerna.

Så en dag kom jag före skärmen på Instructables. Det roade mig verkligen genom olika projekt med en mängd olika idéer om olika aspekter. Sedan från den dagen fortsätter jag med det. Tävlingssidan roade mig verkligen både med priserna och de projekt som har skickats in av olika personer runt om i värld.

RÖSTAKTIVERAD UTMANING är min första plattform när det gäller att skriva en instruerbar.

Priser roade mig mycket (Ja !!! För mycket ……..).

Jag vill också dela min kunskap inom datorer och dess teknik till andra om hur olika saker faktiskt fungerar.

I denna instruerbara visar jag dig hur du bygger din egen röstaktiverade assistent.

Eftersom det är min första instruerbara kan det finnas så många misstag (även om jag tror att alla dessa har åtgärdats), så förlåt för det.

SÅ….

Låt oss börja resan ………………

Steg 2: Var visste jag om sakerna?

Var visste jag om sakerna?
Var visste jag om sakerna?
Var visste jag om sakerna?
Var visste jag om sakerna?
Var visste jag om sakerna?
Var visste jag om sakerna?

Det här kommer att vara en viktig fråga som jag tror att de flesta av er kan ha gått igenom ………..

Jag har en stor passion för artificiell intelligens [AI] från min skolgång, därifrån har jag letat mycket efter resurser för att studera och utveckla en modell på egen hand.

Inledningsvis var det mycket svårt (sant skick) som jag förstod att det var ett mycket stort ämne som inte alls är lätt att hantera.

Böckerna som tittade upp inkluderar:

  1. Artificiell intelligens Ett modernt tillvägagångssätt
  2. Artificiell. Intelligens.i.21st. Century.2nd. Edition
  3. Djup lärning

Det här är väldigt bra böcker (ja visst) men det är inte alls lätt att förstå de saker som har skrivits om det. Sedan höll jag det vid en sida och fortsatte att leta efter resurserna som ger upp en kort uppfattning om vad det verkligen representerar och sätt att komma tillrätta med det.

Sedan fick jag ett intresse för det. Genom semestern efter skolan började jag lära mig mer om det.

På den tiden lärde jag mig också olika programmeringsspråk (C ++, C, Python, Java …), vilket också var mycket intressant.

När jag läste mer om ämnet förstod jag en viktig sak ………………..

Programmeringsspråken ÄR GRUNDLÄGGANDE FÖR ALLA MASKINLÄRNINGSPROCESSER

Maskininlärning är processen för tillämpning av AI

Med stor förståelse för programmeringsspråk och olika saker som kan göras beroende på programmeraren för att få en dator att göra vad som helst för oss.

Så jag bestämde mig för att skapa en bra bas på språken som fick mig att förstå begreppen i boken som jag redan har nämnt

Det kan du också göra ………

Det finns så många webbplatser på webben för att lära programmeringsspråk fritt

Så du kan surfa på internet för att förstå mer om det om du vill ……….

Steg 3: Låt oss börja

Jag innan jag började skriva Instructable tänkte jag skriva något sådant som kan förstås av:

  1. Människor som har erfarenhet av kodning
  2. Människor utan kodande bakgrund

Så jag tror att jag har gjort saken utan några misstag (förhoppningsvis).

Så jag har bestämt mig för att bygga en chattbot som kan prata med användaren och kan svara enligt vårt samtal.

Programmet (uppsättning instruktioner) kan inte tänka på egen hand. Den har en databas (en plats där data har lagrats) med fakta och regler, som söks vid samtalstidpunkten för att ge bästa möjliga svar som gör i samband med användaren.

Det fungerar genom att matcha processen beroende på saker som skrivits in, bara i sällsynta fall matchas en hel mening över till en komplett mening.

Steg 4: Hur fungerar det egentligen?

Steg 1:

MAX tar reda på om användaren har gett null inmatning. Om användaren vid inmatning på ett sådant sätt tar det faktum från den statiska databasen för att svara.

Åh förlåt …….

Jag glömde säga

Statisk databas: Platsen där inbyggda svar lagras. Svar som:

1. När MAX inte förstår vad användaren talar om.

2. När användaren upprepar sig själv.

3. För hälsningsuttalanden.

4. När användaren inte skriver något och bara fortsätter att trycka på Enter.

Nyckelord: ord med särskild betydelse.

Steg 2:

Det finns några inbyggda svar som MAX kan känna igen enkelt och enkelt. Den finner närvaron av en sådan mening efter att ha identifierat användarens inmatning och kommer ihåg det associerade sökordet.

Steg 3:

Om ingen inbyggd mening hittas även efter fragmentering av den givna meningen, söker MAX efter det specifika sökordet för att definiera sammanhanget. Om inget sammanhang hittas är det nästa mål att få användaren att prata om ämnet mer avsiktligt på ett specifikt sätt.

Steg 4:

Från den statiska databasen som vi redan har pratat om kommer den att hämta svaret som beror på vad användaren har pratat om.

Steg 5:

Jag, det finns något behov av att ändra orden, det kommer att göra det själv (t.ex. konvertering av MY till DIN osv …)

Steg 5: Låt oss koda …………

Jag använder Turbo C IDE 3.0 eftersom detta är IDE [Integrerad utvecklingsmiljö]

Låt oss se strukturen för en exempeldatafil före kodningen.

MAX känner igen vissa sökord.

Om dessa nyckelord finns i inmatningen från användaren, väljs ett motsvarande svar från datafilen och väljs upp och visas på skärmen.

Ett nyckelord separeras i datafilen från svaren med @ KWD @ token.

Token är en minsta del av alla programmeringsaspekter.

Denna token anger att nästa rad är ett sökord och inte ett svar.

@ KWD@ HEJ

HEJ HUR MÅR DU

HEJ MIN KÄRA !

JAG MÅR BRA

HUR VAR DITT JOBB?

HUR GAMMAL ÄR DU?

JAG SKA

DU SKA GÖRA DET. JAG TROR DET FÖR …

KOMMER DU ATT GÖRA DET?

SKA DU LITA PÅ MIG?

JA

ÄR DU SÄKER ?

HUR KAN DU VARA SÄKER?

NEJ

DU verkar vara väldigt pessimistisk.

SÄG ALDRIG NEJ…

SÄG ALDRIG ALDRIG

VAR ALDRIG RUDE

VAR ALDRIG ARROGANT !!!!

SIG ALDRIG att jag inte kan göra det här

VAR ALDRIG OPTIMISTISK

DATOR

JAG VET HUR ATT ARBETA PÅ DATOR.

DU ANVÄNDER NU EN DATOR. HÖGER ?

Till exempel "Hej", från ordlistan ovan, kommer MAX att ge ett av följande svar:

HEJ, HUR ÄR DUHELLO kära!

JAG MÅR BRA

HUR VAR DITT JOBB?

HUR GAMMAL ÄR DU?

Steg 6: Klasser

När det här är klart, låt oss nu definiera de datastrukturer som vi kommer att använda.

Vi skapar två klasser:

progstr - Detta används för att lagra användarens inmatningsrelaterade information.

resp - Detta används för att lagra informationen om de olika svaren

klassprogram {

offentlig:

char userip [MAX_USER_INPUT];

char sökord [30];

int keyfound;

int keyno;

int nullip;

// konstruktör

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

}

} ip;

klass resp

{

int tot_resp;

int last_resp;

char svar [MAX_RESP_NO] [MAX_RESP_LEN];

teckenord [MAX_KWD_LEN];

offentlig:

// konstruktör

resp ()

{

tot_resp = 0;

last_resp = -1;

}

int getcount ()

{

returnera last_resp;

}

void addword (char str [MAX_KWD_LEN])

{

strcpy (ord, str);

}

char * getword ()

{

returord;

}

void addresp (char str [MAX_RESP_LEN])

{

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

}

// definieras senare

void display_resp (int num);

void quit_display_resp (int num);

};

Tittar på första klass, Teckenuppsättningen userip används för att lagra meningen som tillhandahålls av användaren.

Ett annat array -nyckelord används för att lagra sökordet, om något, som finns i den ingången. Om ett nyckelord hittas gör vi int nyckel till 1 annat, det förblir 0, eftersom det initialiseras till 0 i konstruktören.

keyno lagrar motsvarande nyckelnummer för motsvarande sökord.

nullip indikerar om användaren har gett någon Null -ingång, dvs att han bara trycker på enter utan att göra något annat.

Låt oss nu komma till andra klass, resp.

Den första datamedlem, tot_resp anger antalet totala svar för ett givet sökord.

Svaren lagras faktiskt i svar [MAX_RESP_NO] [MAX_RESP_LEN] och motsvarande sökord lagras i matrisordet.

Konstruktör: Detta används för att initialisera det totala antalet svar till 0. Varför last_resp initialiseras till -1 kommer att framgå tydligt när du tittar på funktionen add_resp.

int getcount ():

Denna funktion används för att räkna hur många svar det finns för ett visst sökord.

void addword (char str [MAX_KWD_LEN]):

Detta används för att lägga till ett nyckelord.

char * getword ():

Används för att returnera nyckelordet för ett visst objekt av klass resp.

void addresp (…):

Detta används för att lägga till ett svar som motsvarar ett givet sökord.

void display_resp (int):

Detta används för att visa svaret till användaren som motsvarar ett givet indexnummer för svaren. (faktiskt gör det mer än så!).

void quit_display_resp (int):

Skillnaden mellan denna funktion och ovanstående funktion är att den används i slutändan när användaren slutar. Så det returnerar inte uppmaningen till användaren.

Steg 7: Funktioner

void initialize_global ()

{

strcpy (wordin [0], "ÄR");

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

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

strcpy (wordout [1], "ÄR");

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

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

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

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

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

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

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

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

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

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 ÄR");

strcpy (wordin [11], "DU ÄR");

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

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

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

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

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

}

Låt oss nu skriva en funktion för att visa svaren för användaren. Den första if-satsen i for-loop används för att göra ett avsiktligt skrivfel för att få det att se mer mänskligt ut;-). Ett tecken väljs slumpmässigt för skrivfel. Specialfall som New Line och Backspace behandlas separat. (Tänk varför?). Nu presenterar jag något nytt. En speciell karaktär - *. Char * representerar all text som finns EFTER det identifierade sökordet, och före ett av följande skiljetecken.

Tänk till exempel på användarinmatningen

AMIT> KAN JAG GÅ TILL INDORE MORGON?

MAX> VAD OM DU INTE GÅR TILL INDORE MORGON?

Den understrukna delen lagras inte i ordlistan, utan den tas från användarinmatningen. I filen MAX. Dat lagrar vi denna information som

KAN JAG

VAD OM DU INTE GÖR *

Star (*) ber programmet att helt enkelt kopiera det som skrivs efter sökordet (här CAN I) i användarinmatningen, som det är. Jag hoppas att nu är funktionen * som ett speciellt nyckelord tydlig. Så, låt oss överväga ett mer komplicerat fall.

AMIT> KAN JAG GÅ TILL SHOPPING?

MAX> VAD OM DU INTE GÅR TILL SHOPPING?

Vi måste också utföra en viss omvandling. När vi tänker på transformation delas meningen upp i följande tre avsnitt:

  • Text före transponering Word. (här, GÅ TILL ATT SHOPA MED)
  • Sökordet Transposed. (här, DIN, istället för MIN)
  • Text efter införlivande nyckelord. (här jag ?)

Steg 8: Ärendena kan hanteras av ………

Steg 9: Söka efter ett nyckelord i användarens inmatning

MAX_KEY anger antalet sökord i DAT -filen.

Vi söker här helt enkelt om nyckelordet finns i användarens inmatning.

Steg 10: Slutsats

Det är allt ………

Du har gjort det !!!!!!!!

Jag tror att alla förstod sakerna tydligt ……

Om någon tvivlar på något kan du gärna fråga

Rekommenderad: