Taula de continguts:
- Pas 1: conèixer el concurs
- Pas 2: On sabia de les coses?
- Pas 3: Comencem
- Pas 4: Com funciona realment?
- Pas 5: codifiquem …………
- Pas 6: Classes
- Pas 7: Funcions
- Pas 8: els casos es poden abordar abans de ………
- Pas 9: cerqueu una paraula clau a l'entrada de l'usuari
- Pas 10: Conclusió
Vídeo: Assistent activat per veu: MAX: 10 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
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
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?
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:
- La intel·ligència artificial Un enfocament modern
- Intel·ligència.artificial.en.la.21a.centúria.2a.edició
- 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:
- Persones que tenen experiència amb la codificació
- 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 @
SÍ
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:
Feu el sistema d’avís de notificació per veu / veu: 4 passos
Feu el sistema d'alerta de veu / notificació de veu: en aquest projecte hem creat un sistema d'alerta i de notificació de veu. En aquest projecte es poden utilitzar almenys dos sensors
Botó de control remot activat per veu: 4 passos (amb imatges)
Botó de control remot activat per veu: si heu vist els meus altres instruccions, sabreu que el nostre fill té distròfia muscular. Aquesta és una peça d’un projecte per fer-li les coses més accessibles. Tenim una porta que funciona amb un comandament obert de porta de garatge. Això ha estat fantàstic a l
BT activat per veu: 3 passos (amb imatges)
BT activat per veu: domòtica controlada per veu mitjançant Arduino: en aquest projecte, ja utilitzo una funció de veu per controlar els dispositius domèstics. Aquest projecte forma part de la meva sèrie domòtica. Aquest projecte és molt fàcil d’utilitzar a la vida real. Les persones de qualsevol edat poden controlar
Commutador de relé activat per veu (Arduino): 6 passos (amb imatges)
Interruptor de retransmissió activat per veu (Arduino): Hola a tothom! En aquest projecte, us mostraré com implementar ordres de veu per als vostres projectes Arduino. Mitjançant ordres de veu, us mostraré com controlar un mòdul de commutació de relé
RoBoT activat per veu: 5 passos
RoBoT activat per veu: robot controlat per veu mitjançant Arduino: Hola a tothom, espero que estigueu bé i ho feu bé. Avui començarem projectes relacionats amb la robòtica mitjançant Arduino. Avui parlarem sobre el robot controlat per veu mitjançant Arduino i Android ap