Taula de continguts:

Assistent activat per veu: MAX: 10 passos
Assistent activat per veu: MAX: 10 passos

Vídeo: Assistent activat per veu: MAX: 10 passos

Vídeo: Assistent activat per veu: MAX: 10 passos
Vídeo: How to Fix iPhone Ghost Touches #shorts 2024, Juliol
Anonim
Assistent activat per veu: MAX
Assistent activat per veu: MAX

Hola, en aquest instructiu vaig a parlar sobre com fer un xat-bot MAX (anomenat jo mateix !!!)

Amb alguna implementació podeu fer que aquest chatbot es controli per veu o amb l’ús de diversos programes el podeu fer com a assistent de veu. Aquí no en parlaré, ja que tothom pot fer aquesta implementació amb facilitat.

Per tant, tothom em donarà suport …

El meu primer instructible !!!!!!!

Sentir-me nerviós pel que passarà …………….

Pas 1: conèixer el concurs

Saber del concurs
Saber del concurs
Saber del concurs
Saber del concurs

Hola enginyers i dissenyadors …

A mi mateix, estudiant d’Informàtica, m’encanta jugar i sempre m’inspiro en ordinadors. Parlant breument m’encanta saber com funcionen totes aquestes coses actuals. Així que, com a raó per la qual vaig seguir buscant, buscant google (de fet, jo també utilitzava Yahoo !!! !!!) per buscar i aprendre les coses.

Així que un dia vaig arribar a la pantalla de Instructables. Em va divertir realment a través de diversos projectes amb diverses idees sobre diversos aspectes. A partir d’aquest dia, continuo amb la pista. La pàgina del concurs em va divertir tant pels premis com pels projectes que han presentat diverses persones de tot el món. món.

VOICE ACTIVATED CHALLENGE és la meva primera plataforma pel que fa a l’escriptura d’un instructable.

Els premis em van divertir molt (Sí, massa ……..).

També vull compartir els meus coneixements en el camp de la informàtica i la seva tecnologia a altres persones sobre com funcionen diverses coses.

En aquest instructiu us mostro com crear el vostre propi assistent activat per veu.

Com que és el meu primer instructiu, pot haver-hi tants errors (tot i que crec que tots ells s'han solucionat), així que perdoneu això.

TAN…

Comencem el viatge ………………

Pas 2: On sabia de les coses?

On sabia de les coses?
On sabia de les coses?
On sabia de les coses?
On sabia de les coses?
On sabia de les coses?
On sabia de les coses?

Aquesta serà una pregunta important que crec que pot passar la majoria de les vostres ments …

Tinc molta passió per la Intel·ligència Artificial [IA] des de la meva formació, des d’aquí he buscat molt buscant recursos per estudiar i desenvolupar un model pel meu compte.

Inicialment era molt difícil (veritable estat) ja que entenia que era un tema molt ampli que no és gens fàcil de manejar.

Els llibres que van mirar van incloure:

  1. La intel·ligència artificial Un enfocament modern
  2. Intel·ligència.artificial.en.la.21a.centúria.2a.edició
  3. Aprenentatge profund

Són llibres molt bons (segur que sí), però no és gens fàcil entendre les coses que s’hi han escrit. Llavors el vaig mantenir al costat i vaig a buscar els recursos que donen una breu idea de què realment representa i maneres d’arribar-hi.

Llavors vaig trobar un interès en això. Al llarg de les vacances després de l’escola vaig començar a conèixer-ho més profundament.

En aquell moment també vaig aprendre diversos llenguatges de programació (C ++, C, Python, Java …), que també eren molt interessants.

En llegir més sobre el tema, vaig entendre una cosa important ………………..

Els llenguatges de programació ÉS EL BÀSIC DE CADA PROCÉS D’APRENENTATGE DE MÀQUINES

L’aprenentatge automàtic és el procés d’aplicació de la IA

Amb una gran comprensió sobre els llenguatges de programació i diverses coses que el programador pot fer depenent de fer un ordinador que faci qualsevol cosa per nosaltres.

Així que vaig decidir crear una bona base sobre els idiomes que em van fer entendre els conceptes que ja he esmentat al llibre

Tu també pots fer això …

Hi ha tants llocs web presents al web per ensenyar llenguatges de programació lliurement

Així que podeu navegar per Internet per entendre-ho més si ho desitgeu …

Pas 3: Comencem

Jo abans de començar a escriure l'Instruible, vaig pensar a escriure alguna cosa que s'entengués per:

  1. Persones que tenen experiència amb la codificació
  2. Persones sense antecedents de codificació

Per tant, crec que ho he fet sense cap error (amb sort).

Per tant, he decidit crear un bot de xat que pugui parlar amb l'usuari i que pugui respondre segons la nostra xerrada.

El programa (conjunt d’instruccions) no pot pensar tot sol. Té una base de dades (un lloc on s’han emmagatzemat dades) de fets i regles, que es cerquen en el moment de parlar per donar la millor resposta possible en relació amb l’usuari.

Funciona mitjançant un procés de concordança en funció de les coses introduïdes, només en casos rars es combina una frase sencera amb una frase completa.

Pas 4: Com funciona realment?

Pas 1:

MAX descobreix si l'usuari ha donat cap entrada nul·la. Si l'usuari ha proporcionat l'entrada de tal manera, pren el fet de la base de dades estàtica per respondre.

Oh, ho sento ……

Em vaig oblidar de dir,

Base de dades estàtica: lloc on s’emmagatzemen les respostes integrades. Respostes com:

1. Quan MAX no entén de què parla l'usuari.

2. Quan l'usuari es repeteix.

3. Per a declaracions de salutació.

4. Quan l'usuari no escriu res i continua pressionant Retorn.

Paraula clau: paraules que tenen un significat especial.

Pas 2:

Hi ha algunes respostes integrades que MAX pot reconèixer fàcilment i fàcilment. Troba la presència d’aquesta frase després d’identificar l’entrada dels usuaris i recorda la paraula clau associada.

Pas 3:

Si no es troba cap frase incorporada fins i tot després de la fragmentació de la frase donada, MAX cerca la paraula clau específica per definir el context. Si no es troba cap context, el següent objectiu és fer que l'usuari parli del tema de manera més deliberada d'una manera específica.

Pas 4:

De la base de dades estàtica de què ja hem parlat, recollirà la resposta que depèn del que hagi parlat l’usuari.

Pas 5:

Hi ha alguna necessitat de canviar les paraules que ho farà ell mateix (com ara Conversió del MEU al SEU, etc.).

Pas 5: codifiquem …………

Estic fent servir Turbo C IDE 3.0 ja que es tracta de l’IDE [entorn de desenvolupament integrat]

Abans de la codificació, vegem l'estructura d'un fitxer de dades de mostra.

MAX reconeix certes paraules clau.

Si aquestes paraules clau es troben a l'entrada proporcionada per l'usuari, es tria una resposta corresponent del fitxer de dades i es tria i es mostra a la pantalla.

Una paraula clau està separada al fitxer de dades de les respostes mitjançant el testimoni @ KWD @.

El testimoni és la part més petita de tots els aspectes de programació.

Aquest testimoni indica que la següent línia és una paraula clau i no una resposta.

@ KWD @ HOLA

HOLA COM ESTÀS

HOLA ESTIMAT !

ESTIC BÉ

COM VA SER LA VOSTRA FEINA?

QUANTS ANYS TENS?

@ KWD @

HO FARÉ

HO FARÀS. HO CREC TAMBÉ …

PODRÀS FER-HO?

ENCONFIES DE MI?

@ KWD @

ESTÀS SEGUR ?

COM ES POT ESTAR TANT SEGUR?

@ KWD @

NO

SEMBLA MOLT PESSIMIS.

MAI DIU NO …

MAI DIGUIS MAI

NO SIGUEU MAI RUDE

MAI SIGUEU ARROGANT !!!!

MAI DIU QUE NO PUC FER AIX.

MAI SIGUEU OPTIMIS

@ KWD @

INFORMÀTICA

SE COM FUNCIONAR AMB L’ORDINADOR.

ACTUALMENT UTILITZEU UN ORDINADOR. DRET ?

Per exemple, "Hola", del diccionari anterior, MAX donarà una de les respostes següents:

Hola, com esteu benvolguts!

ESTIC BÉ

COM VA SER LA VOSTRA FEINA?

QUANTS ANYS TENS?

Pas 6: Classes

Un cop estigui clar, definim ara les estructures de dades que farem servir.

Creem dues classes:

progstr: s'utilitza per emmagatzemar la informació relacionada amb l'entrada de l'usuari.

resp - S'utilitza per emmagatzemar la informació sobre les diverses respostes

classe progstr {

públic:

char userip [MAX_USER_INPUT];

paraula clau char [30];

int keyfound;

int keyno;

int nullip;

// constructor

progstr () {keyno = -1; nul·lí = 0; keyfound = 0;

}

} ip;

classe resp

{

int tot_resp;

int last_resp;

respostes de caràcters [MAX_RESP_NO] [MAX_RESP_LEN];

paraula char [MAX_KWD_LEN];

públic:

// constructor

resp ()

{

tot_resp = 0;

last_resp = -1;

}

int getcount ()

{

torna last_resp;

}

paraula additiva buida (str str [MAX_KWD_LEN])

{

strcpy (paraula, str);

}

char * getword ()

{

paraula de retorn;

}

void addresp (char str [MAX_RESP_LEN])

{

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

}

// definit posteriorment

void display_resp (int num);

void quit_display_resp (int num);

};

Mirant cap a primera classe, La matriu de caràcters userip s'utilitza per emmagatzemar la frase proporcionada per l'usuari.

Una altra paraula clau de matriu s'utilitza per emmagatzemar la paraula clau, si n'hi ha, que es troba en aquesta entrada. Si es troba una paraula clau, fem que la clau int sigui una altra, roman 0, ja que s’inicialitza a 0 al constructor.

keyno emmagatzema el número de tecla corresponent de la paraula clau corresponent.

nullip indica si l'usuari ha donat alguna entrada nul·la, és a dir, només està prement Enter sense fer res més.

Ara anem a la segona classe, resp.

El primer membre de dades, tot_resp, indica el nombre de respostes totals per a una paraula clau determinada.

Les respostes s’emmagatzemen en les respostes [MAX_RESP_NO] [MAX_RESP_LEN] i la paraula clau corresponent s’emmagatzema a la paraula matriu.

Constructor: s'utilitza per inicialitzar el nombre total de respostes a 0. Per què s'inicialitza last_resp a -1 quedarà clar quan mireu la funció add_resp.

int getcount ():

Aquesta funció s'utilitza per obtenir un recompte de quantes respostes hi ha per a una paraula clau determinada.

paraula additiva nul·la (str str [MAX_KWD_LEN]):

S'utilitza per afegir una paraula clau.

char * getword ():

S'utilitza per retornar la paraula clau d'un objecte concret de la classe resp.

void addresp (…):

S'utilitza per afegir una resposta corresponent a una paraula clau determinada.

void display_resp (int):

S'utilitza per mostrar la resposta a l'usuari corresponent a un número d'índex donat per a les respostes. (en realitat fa més que això!).

buit quit_display_resp (int):

La diferència entre aquesta funció i la funció anterior és que s’utilitza al final quan l’usuari deixa de fumar. Per tant, no retorna la sol·licitud a l'usuari.

Pas 7: Funcions

void initialize_global ()

{

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

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

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

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

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

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

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

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

strcpy (wordin [4], "VOSTÈ");

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

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

strcpy (wordout [5], "VOSTÈ");

strcpy (wordin [6], "EL TEU");

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

strcpy (wordin [7], "EL MEU");

strcpy (wordout [7], "EL TEU");

strcpy (wordin [8], "IVE");

strcpy (wordout [8], "YOUVE");

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

strcpy (wordout [9], "IVE");

strcpy (wordin [10], "SÓC");

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

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

strcpy (wordout [11], "SÓC");

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

strcpy (wordout [12], "VOSTÈ");

strcpy (wordin [13], "VOSTÈ");

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

}

Escrivim ara una funció per mostrar els respostes a l'usuari. La primera sentència if del bucle for s'utilitza per fer un error d'escriptura deliberat i fer que sembli més humà com;-). Es tria un caràcter a l'atzar per error d'escriptura. Es consideren casos especials com Nova línia i Retrocés. (Penseu per què?). Ara presento alguna cosa nova. Un personatge especial - *. Char * representa tot el text trobat DESPRÉS de la paraula clau identificada i abans d’un dels signes de puntuació següents.

Per exemple, tingueu en compte l’entrada de l’usuari

AMIT> PUC ANAR A INDORE DEMÀ?

MAX> QUÈ PASSEU SI MAÑAN NO VAN A INDORE?

La part subratllada no s'emmagatzema al diccionari, sinó que es pren de l'entrada de l'usuari. Al fitxer MAX. Dat, emmagatzemem aquesta informació com a

PUC

I SI NO *

Star (*) demana al programa que copiï tot el que s'hagi escrit després de la paraula clau (aquí PUC) a l'entrada de l'usuari, tal com és. Espero que ara estigui clara la funció de * com a paraula clau especial. Per tant, considerem un cas més complicat.

AMIT> Puc anar a comprar?

MAX> I SI NO VÀS A COMPRES?

També hem de realitzar alguna transformació. Quan pensem en la transformació, la frase es divideix en les 3 seccions següents:

  • Text Abans de la transposició Word. (aquí, VES A COMPRAR AMB)
  • La paraula clau Transposada. (aquí, EL TEU, en lloc del MEU)
  • Paraula clau de text després de la transposició. (aquí, jo?)

Pas 8: els casos es poden abordar abans de ………

Pas 9: cerqueu una paraula clau a l'entrada de l'usuari

MAX_KEY indica el nombre de paraules clau del fitxer DAT.

Aquí simplement busquem si la paraula clau està present a l'entrada de l'usuari.

Pas 10: Conclusió

Això és tot ………

Ho heu fet !!!!!!!

Crec que tothom va entendre les coses clarament …

Recomanat: