Inhoudsopgave:

Spraakgestuurde assistent - MAX: 10 stappen
Spraakgestuurde assistent - MAX: 10 stappen

Video: Spraakgestuurde assistent - MAX: 10 stappen

Video: Spraakgestuurde assistent - MAX: 10 stappen
Video: Nvidia Shield 2017 NL Review (Logitech harmony uitleg & Horizon app) 2024, Juli-
Anonim
Spraakgestuurde assistent - MAX
Spraakgestuurde assistent - MAX

Hey in deze Instructable ga ik het hebben over hoe je een chat-bot MAX kunt maken (heb mezelf genoemd!!!)

Met wat implementatie kun je deze chatbot spraakgestuurd maken of met het gebruik van verschillende software kun je hem als stemassistent maken. Ik ga er hier niet over praten, omdat iedereen deze implementatie echt gemakkelijk kan maken.

Dus iedereen steun me alsjeblieft…….

Mijn eerste Instructable !!!!!!!

Nerveus voelen over wat er gaat gebeuren ………….

Stap 1: Weten over de wedstrijd

Weten over de wedstrijd
Weten over de wedstrijd
Weten over de wedstrijd
Weten over de wedstrijd

Hallo Ingenieurs en Ontwerpers……..

Ik ben zelf een student informatica die dol is op gamen en altijd geïnspireerd is op computers. Even kort pratend, ik vind het heerlijk om te weten hoe al deze dingen die aanwezig zijn werken. Dus als reden bleef ik zoeken, googelen (in feite gebruikte ik Yahoo ook !!! !!!) voor het zoeken en leren van de dingen.

Dus op een dag kwam ik voor het scherm van Instructables. Het heeft me echt geamuseerd door verschillende projecten met een verscheidenheid aan ideeën over verschillende aspecten. Vanaf die dag volg ik het op de voet. De wedstrijdpagina amuseerde me echt zowel met de prijzen als met de projecten die door verschillende mensen rond de wereld.

SPRAAK GEACTIVEERDE UITDAGING is mijn eerste platform met betrekking tot het schrijven van een Instructable.

Prijzen hebben me erg geamuseerd (Yeah !!! Too Much……..).

Ook wil ik mijn kennis op het gebied van computers en zijn technologie delen met anderen over hoe verschillende dingen echt werken.

In deze Instructable laat ik je zien hoe je je eigen spraakgestuurde assistent kunt bouwen.

Omdat het mijn eerste Instructable is, kunnen er zoveel fouten zijn (hoewel ik denk dat deze allemaal zijn opgelost), dus vergeef dat.

DUS…

Laten we de reis beginnen ………………

Stap 2: Waar wist ik over de dingen?

Waar wist ik over de dingen?
Waar wist ik over de dingen?
Waar wist ik over de dingen?
Waar wist ik over de dingen?
Waar wist ik over de dingen?
Waar wist ik over de dingen?

Dit zal een belangrijke vraag zijn waarvan ik denk dat de meeste van jullie geesten zullen zijn gegaan door ………

Ik heb veel passie voor kunstmatige intelligentie [AI] van mijn opleiding, vandaar dat ik veel heb gezocht naar middelen om te studeren en zelf een model te ontwikkelen.

Aanvankelijk was het erg moeilijk (echte toestand) omdat ik begreep dat het een zeer uitgebreid onderwerp was dat helemaal niet gemakkelijk te hanteren is.

De boeken die zijn opgezocht, zijn:

  1. Kunstmatige intelligentie Een moderne aanpak
  2. Kunstmatige. Intelligentie.in.de.21e.eeuwse.2e.editie
  3. Diep leren

Dit zijn zeer goede boeken (ja zeker) maar het is helemaal niet gemakkelijk om de dingen die daarover zijn geschreven te begrijpen. Daarna hield ik het aan een kant en ging op zoek naar de bronnen die een kort idee geven over wat het vertegenwoordigt echt en manieren om ermee aan de slag te gaan.

Toen vond ik daar interesse in. Tijdens de vakantie na school begon ik me er dieper in te verdiepen.

In die tijd leerde ik ook verschillende programmeertalen (C++, C, Python, Java ….), ook heel interessant.

Toen ik meer over het onderwerp las, begreep ik één belangrijk ding………………..

De programmeertalen IS DE BASIS VOOR ELK MACHINE LEERPROCES

Machine Learning is het proces van toepassing van AI

Met een groot begrip van programmeertalen en verschillende dingen die kunnen worden gedaan, afhankelijk van de programmeur om een computer te maken die alles voor ons kan doen.

Dus besloot ik een goede basis te leggen op de talen die ervoor zorgden dat ik de concepten begreep in het boek dat ik al heb genoemd

Ook jij kunt dat doen……

Er zijn zoveel websites op het web om programmeertalen vrijelijk te leren

U kunt dus op internet surfen om er meer over te begrijpen als u dat wenst…………

Stap 3: Laten we beginnen

Voordat ik begon met het schrijven van de Instructable, dacht ik eraan om iets te schrijven dat kan worden begrepen door:

  1. Mensen die ervaring hebben met coderen
  2. Mensen zonder enige codeerachtergrond

Dus ik denk dat ik het zonder fouten heb gedaan (hopelijk).

Dus heb ik besloten om een chatbot te bouwen die met de gebruiker kan praten en kan reageren volgens ons gesprek.

Het programma (de instructieset) kan niet zelfstandig denken. Het heeft een database (een plaats waar gegevens zijn opgeslagen) van feiten en regels, die tijdens het gesprek worden doorzocht om de best mogelijke reactie te geven in verband met de gebruiker.

Het werkt door een matchingproces, afhankelijk van de ingevoerde dingen, alleen in zeldzame gevallen wordt een hele zin gekoppeld aan een volledige zin.

Stap 4: Hoe werkt het eigenlijk?

Stap 1:

MAX zoekt uit of de gebruiker een nulinvoer heeft gegeven. Als de gebruiker op zo'n manier invoert, neemt hij het feit uit de statische database om te reageren.

Oh sorry ……

Ik ben vergeten te zeggen,

Statische database: de plaats waar ingebouwde antwoorden worden opgeslagen. Reacties als:

1. Wanneer MAX niet begrijpt waar de gebruiker het over heeft.

2. Wanneer de gebruiker zichzelf herhaalt.

3. Voor begroetingen.

4. Wanneer de gebruiker niets typt en gewoon op Enter blijft drukken.

Trefwoord: woorden met een speciale betekenis.

Stap 2:

Er zijn enkele ingebouwde reacties die MAX gemakkelijk en gemakkelijk kan herkennen. Het vindt de aanwezigheid van een dergelijke zin na het identificeren van de gebruikersinvoer en onthoudt het bijbehorende trefwoord.

Stap 3:

Als er geen ingebouwde zin wordt gevonden, zelfs niet na fragmentatie van de gegeven zin, zoekt MAX naar het specifieke trefwoord om de context te definiëren. Als er geen context wordt gevonden, is het volgende doel om de gebruiker bewuster op een specifieke manier over het onderwerp te laten praten.

Stap 4:

Van de statische database waar we het al over hebben gehad, zal het de reactie oppikken die afhangt van waar de gebruiker het over heeft gehad.

Stap 5:

Als het nodig is om de woorden te veranderen, zal het het zelf doen (zoals Conversie van MIJN naar JOUW enz…)

Stap 5: Laat ons coderen …………

Ik gebruik Turbo C IDE 3.0 omdat dit de IDE [geïntegreerde ontwikkelingsomgeving] is

Laten we vóór de codering de structuur van een voorbeeldgegevensbestand bekijken.

MAX herkent bepaalde zoekwoorden.

Als deze trefwoorden worden gevonden in de invoer die door de gebruiker wordt verstrekt, wordt een overeenkomstige reactie gekozen uit het gegevensbestand en wordt deze gekozen en weergegeven op het scherm.

Een trefwoord wordt in het gegevensbestand gescheiden van de antwoorden door @KWD@ token.

Token is het kleinste onderdeel van alle programmeeraspecten.

Dit token geeft aan dat de volgende regel een trefwoord is en geen antwoord.

@KWD@ HALLO

HALLO HOE GAAT HET

DAG BESTE !

HET GAAT GOED MET ME

HOE WAS JE WERK?

HOE OUD BEN JIJ?

IK ZAL

JE ZULT DAT DOEN. IK GELOOF HET OOK…

KUNT U DIT KUNNEN DOEN?

WILT U ME VERTROUWEN?

JA

WEET JE ZEKER DAT ?

HOE KAN JE DAT ZO ZEKER WETEN ?

NEE

JE LIJKT ERG PESSIMISTISCH.

ZEG NOOIT NEE…

ZEG NOOIT NOOIT

WEES NOOIT onbeleefd

WEES NOOIT ARROGANT !!!!

ZEG NOOIT DAT IK DIT NIET KAN

WEES NOOIT OPTIMISTISCH

COMPUTER

IK WEET HOE IK OP DE COMPUTER MOET WERKEN.

U GEBRUIKT MOMENTEEL EEN COMPUTER. RECHTSAF ?

Bijvoorbeeld, 'Hallo', uit het bovenstaande woordenboek, zal MAX een van de volgende antwoorden geven:

HALLO, HOE IS HET HALLO LIEFDE!

HET GAAT GOED MET ME

HOE WAS JE WERK?

HOE OUD BEN JIJ?

Stap 6: Lessen

Zodra dit duidelijk is, gaan we nu de gegevensstructuren definiëren die we gaan gebruiken.

We maken twee klassen:

progstr - Dit wordt gebruikt om de invoergerelateerde informatie van de gebruiker op te slaan.

resp - Dit wordt gebruikt om de informatie over de verschillende reacties op te slaan

klasse progstr{

openbaar:

char userip [MAX_USER_INPUT];

char trefwoord[30];

int-toets gevonden;

int-toets;

int nullip;

// constructeur

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

}

}ik p;

klasse resp

{

int tot_resp;

int laatste_resp;

char antwoordt [MAX_RESP_NO][MAX_RESP_LEN];

char woord [MAX_KWD_LEN];

openbaar:

// constructeur

resp()

{

tot_resp=0;

last_resp=-1;

}

int getcount()

{

return last_resp;

}

void addword(char str[MAX_KWD_LEN])

{

strcpy(woord, str);

}

char * getword()

{

woord terug;

}

ongeldig adres (char str[MAX_RESP_LEN])

{

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

}

// later gedefinieerd

void display_resp(int num);

void quit_display_resp(int num);

};

Kijkend naar de eerste klasse, De karakterreeks userip wordt gebruikt om de door de gebruiker verstrekte zin op te slaan.

Een ander array-trefwoord wordt gebruikt om het eventuele trefwoord in die invoer op te slaan. Als een sleutelwoord wordt gevonden, maken we int keyfound tot 1 else, het blijft 0, omdat het in de Constructor op 0 wordt geïnitialiseerd.

keyno slaat het corresponderende sleutelnummer van het corresponderende sleutelwoord op.

nullip geeft aan of de gebruiker een Null-invoer heeft gegeven, dwz hij drukt gewoon op enter zonder iets anders te doen.

Laten we nu komen tot de tweede klasse, resp.

Het eerste gegevenslid, tot_resp, geeft het totale aantal reacties voor een bepaald zoekwoord aan.

De antwoorden worden feitelijk opgeslagen in replys[MAX_RESP_NO][MAX_RESP_LEN] en het bijbehorende trefwoord wordt opgeslagen in het arraywoord.

Constructor: Dit wordt gebruikt om het totale aantal reacties op 0 te initialiseren. Waarom last_resp wordt geïnitialiseerd op -1 wordt duidelijk als je kijkt naar de functie add_resp.

int getcount():

Deze functie wordt gebruikt om te tellen hoeveel reacties er zijn voor een bepaald trefwoord.

void addword(char str[MAX_KWD_LEN]):

Dit wordt gebruikt om een trefwoord toe te voegen.

char * getword():

Wordt gebruikt om het sleutelwoord voor een bepaald object van klasse resp.

ongeldig adres(…):

Dit wordt gebruikt om een antwoord toe te voegen dat overeenkomt met een bepaald trefwoord.

ongeldig display_resp(int):

Dit wordt gebruikt om het antwoord aan de gebruiker weer te geven dat overeenkomt met een bepaald indexnummer voor de antwoorden. (eigenlijk doet het meer dan dat!).

void quit_display_resp(int):

Het verschil tussen deze functie en de bovenstaande functie is dat deze uiteindelijk wordt gebruikt wanneer de gebruiker stopt. Het geeft de prompt dus niet terug aan de gebruiker.

Stap 7: Functies

ongeldig initialize_global()

{

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

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

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

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

strcpy(woordin[2], "WAREN");

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

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

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

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

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

strcpy(woordin[5], "ik");

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

strcpy(woordin[6], "JOUW");

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

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

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

strcpy(wordin[8], "IK HEB");

strcpy(wordout[8], "JE HEBT");

strcpy(wordin[9], "JE HEBT");

strcpy(wordout[9], "IK HEB");

strcpy(wordin[10], "Ik ben");

strcpy(wordout[10], "JE BENT");

strcpy(wordin[11], "JE BENT");

strcpy(wordout[11], "Ik ben");

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

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

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

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

}

Laten we nu een functie schrijven om de antwoorden aan de gebruiker te tonen. De eerste if-instructie in de for-lus wordt gebruikt om een opzettelijke typefout te maken om het menselijker te laten lijken;-). Eén teken wordt willekeurig gekozen wegens typefout. Speciale gevallen zoals New Line en Backspace worden afzonderlijk beschouwd. (Denk aan waarom?). Nu introduceer ik iets nieuws. Een speciaal teken - *. Char * staat voor alle tekst die wordt gevonden NA het geïdentificeerde trefwoord en vóór een van de volgende leestekens.

Denk bijvoorbeeld aan de gebruikersinvoer

AMIT > KAN IK MORGEN NAAR INDORE GAAN?

MAX > WAT ALS JE MORGEN NIET NAAR INDORE GAAT?

Het onderstreepte gedeelte wordt niet opgeslagen in het woordenboek, maar wordt uit de gebruikersinvoer gehaald. In het bestand MAX. Dat slaan we deze informatie op als:

KAN IK

WAT ALS U NIET *

Star (*) vraagt het programma om gewoon te kopiëren wat er achter het trefwoord (hier CAN I) in de gebruikersinvoer is getypt, zoals het is. Ik hoop dat nu de functie van * als speciaal sleutelwoord duidelijk is. Laten we dus een ingewikkelder geval bekijken.

AMIT > KAN IK NAAR WINKELEN ?

MAX > WAT ALS JE NIET NAAR HET WINKELEN GAAT?

We moeten ook een transformatie uitvoeren. Als we aan transformatie denken, wordt de zin verdeeld in de volgende 3 secties:

  • Tekst vóór omzettingswoord. (hier, GA NAAR WINKELEN MET)
  • Het getransponeerde sleutelwoord. (hier, JOUW, in plaats van MIJN)
  • Tekst na transpositie Trefwoord. (hier Ik ?)

Stap 8: De zaken kunnen worden aangepakt door ……

Stap 9: Een trefwoord zoeken in de invoer van de gebruiker

MAX_KEY geeft het aantal trefwoorden in het DAT-bestand aan.

We zoeken hier eenvoudig of het trefwoord aanwezig is in de invoer van de gebruiker.

Stap 10: Conclusie

Dat is alles ………

Je hebt het gedaan !!!!!!!

Ik denk dat iedereen de dingen duidelijk begreep…

Aanbevolen: