Sommario:
- Passaggio 1: conoscere il concorso
- Passaggio 2: dove sapevo delle cose?
- Passaggio 3: iniziamo
- Passaggio 4: come funziona effettivamente?
- Passaggio 5: Codifichiamo …………
- Passaggio 6: lezioni
- Passaggio 7: funzioni
- Passaggio 8: i casi possono essere affrontati da………
- Passaggio 9: ricerca di una parola chiave nell'input dell'utente
- Passaggio 10: conclusione
Video: Assistente ad attivazione vocale - MAX: 10 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Ehi in questo Instructable parlerò di come creare un chat-bot MAX (chiamato me stesso !!!)
Con alcune implementazioni puoi rendere questo chatbot controllato dalla voce o con l'utilizzo di vari software puoi renderlo un assistente vocale. Non ne parlerò qui poiché tutti possono davvero realizzare facilmente questa implementazione.
Quindi, per favore, supportatemi tutti…….
Il mio primo Instructable !!!!!!
Sensazione di nervosismo per quello che sta per succedere …………….
Passaggio 1: conoscere il concorso
Salve Ingegneri e Designer……..
Io stesso uno studente di informatica amo giocare e mi ispiro sempre ai computer. Parlando brevemente mi piace sapere come funzionano tutte queste cose fuori dal presente. Quindi come motivo ho continuato a cercare, googling (infatti usavo anche Yahoo !!! !!!) per cercare e imparare le cose.
Così un giorno sono arrivato davanti allo schermo di Instructables. Mi ha davvero divertito attraverso vari progetti con una varietà di idee su vari aspetti. Poi da quel giorno continuo a seguirlo. La pagina del concorso mi ha davvero divertito sia riguardo ai premi che ai progetti che sono stati presentati da varie persone in tutto il mondo.
VOICE ACTIVATED CHALLENGE è la mia prima piattaforma per quanto riguarda la scrittura di un Instructable.
I premi mi hanno divertito molto (Sì !!! Troppo……..).
Inoltre desidero condividere le mie conoscenze nel campo dei computer e della sua tecnologia con altri su come funzionano effettivamente le varie cose.
In questo Instructable ti mostro come costruire il tuo assistente ad attivazione vocale.
Dato che è il mio primo Instructable, potrebbero esserci così tanti errori (anche se penso che tutti questi siano stati corretti), quindi perdonalo.
COSÌ…
Iniziamo il viaggio………………
Passaggio 2: dove sapevo delle cose?
Questa sarà una domanda importante che penso che la maggior parte delle vostre menti potrebbe aver attraversato ………
Ho una grande passione per l'Intelligenza Artificiale[AI] fin dai miei studi, da lì ho cercato molto cercando risorse per studiare e sviluppare un modello da solo.
Inizialmente è stato molto difficile (reale condizione) in quanto ho capito che era un argomento molto vasto e per nulla facile da gestire.
I libri consultati includono:
- Intelligenza artificiale Un approccio moderno
- Intelligenza. Artificiale.nel.21°. Secolo.2a. Edizione
- Apprendimento profondo
Questi sono libri molto buoni (si certo) ma non è per niente facile capire le cose che ci sono state scritte sopra. rappresenta davvero e i modi per arrivarci.
Poi ho scoperto un interesse per questo. Durante le vacanze dopo la scuola ho iniziato a conoscerlo più a fondo.
In quel periodo imparai anche vari linguaggi di programmazione (C++, C, Python, Java….), anch'essi molto interessanti.
Leggendo di più sull'argomento ho capito una cosa importante………………..
I linguaggi di programmazione SONO LA BASE DI OGNI PROCESSO DI MACHINE LEARNING
L'apprendimento automatico è il processo di applicazione dell'intelligenza artificiale
Con una grande conoscenza dei linguaggi di programmazione e varie cose che possono essere fatte a seconda del programmatore per fare in modo che un computer faccia qualsiasi cosa per noi.
Così ho deciso di creare una buona base sui linguaggi che mi facessero comprendere i concetti forniti sul libro che ho già citato
Puoi farlo anche tu……
Ci sono così tanti siti web presenti nel web per insegnare liberamente i linguaggi di programmazione
Quindi puoi navigare in Internet per capirne di più se lo desideri………
Passaggio 3: iniziamo
Io prima di iniziare a scrivere Instructable ho pensato di scrivere qualcosa del genere essere compreso da:
- Persone che hanno esperienza con la programmazione
- Persone senza alcun background di codifica
Quindi penso di aver fatto la cosa senza errori (si spera).
Quindi ho deciso di costruire un bot di chat in grado di parlare con l'utente e in grado di rispondere in base al nostro discorso.
Il programma (insieme di istruzioni) non può pensare da solo. Dispone di un database (un luogo in cui sono stati archiviati i dati) di fatti e regole, che vengono cercati al momento della conversazione per dare la migliore risposta possibile in relazione all'utente.
Funziona abbinando il processo a seconda delle cose inserite, solo in rari casi un'intera frase viene abbinata a una frase completa.
Passaggio 4: come funziona effettivamente?
Passo 1:
MAX scopre se l'utente ha fornito un input nullo. Se l'utente quando ha fornito l'input in questo modo, prende il fatto dal database statico per rispondere.
Oh scusa ……
Ho dimenticato di dire,
Database statico: il luogo in cui vengono archiviate le risposte integrate. Risposte come:
1. Quando MAX non capisce di cosa sta parlando l'utente.
2. Quando l'utente si ripete.
3. Per le dichiarazioni di saluto.
4. Quando l'utente non digita nulla e continua a premere Invio.
Parola chiave: parole che hanno un significato speciale.
Passo 2:
Ci sono alcune risposte integrate che MAX può riconoscere prontamente e facilmente. Trova la presenza di tale frase dopo aver identificato l'input dell'utente e ricorda la parola chiave associata.
Passaggio 3:
Se non viene trovata alcuna frase incorporata anche dopo la frammentazione della frase data, MAX cerca la parola chiave specifica per definire il contesto. Se non viene trovato alcun contesto, l'obiettivo successivo è far sì che l'utente parli dell'argomento in modo più deliberato in un modo specifico.
Passaggio 4:
Dal Database Statico di cui abbiamo già parlato, raccoglierà la risposta che dipende da ciò di cui l'utente ha parlato.
Passaggio 5:
Se c'è bisogno di cambiare le parole lo farà da solo (come Conversione da MIO a TUO ecc….)
Passaggio 5: Codifichiamo …………
Sto usando Turbo C IDE 3.0 poiché questo è l'IDE [Ambiente di sviluppo integrato]
Prima della codifica, vediamo la struttura di un file di dati di esempio.
MAX riconosce determinate parole chiave.
Se queste parole chiave vengono trovate nell'input fornito dall'utente, viene scelta una risposta corrispondente dal file di dati e viene selezionata e visualizzata sullo schermo.
Una parola chiave è separata nel file di dati dalle risposte dal token @KWD@.
Il token è una parte più piccola di ogni aspetto della programmazione.
Questo token indica che la riga successiva è una parola chiave e non una risposta.
@KWD@ CIAO
CIAO, COME STAI
CIAO CARO !
STO BENE
COME È STATO IL TUO LAVORO?
QUANTI ANNI HAI?
LO FARÒ
LO FARAI COSI'. CI CREDO ANCHE IO…
SARAI IN GRADO DI FARLO?
TI FIDERAI DI ME?
SÌ
SEI SICURO ?
COME PUOI ESSERE COS SICURO?
NO
SEMBRA CHE SEI MOLTO PESSIMISTA.
NON DIRE MAI NO…
MAI DIRE MAI
NON ESSERE MAI RUDE
NON ESSERE MAI ARROGANTE!!!!
MAI DIRE CHE NON POSSO FARE
NON ESSERE MAI OTTIMISTA
COMPUTER
SO COME LAVORARE SU COMPUTER.
STAI ATTUALMENTE UTILIZZANDO UN COMPUTER. GIUSTO ?
Ad esempio, 'Ciao', dal dizionario sopra, MAX darà una delle seguenti risposte:
CIAO, COME SEI YOUHELLO CARO!
STO BENE
COME È STATO IL TUO LAVORO?
QUANTI ANNI HAI?
Passaggio 6: lezioni
Una volta che questa cosa è chiara, definiamo ora le Strutture Dati che utilizzeremo.
Creiamo due classi:
progstr - Questo viene utilizzato per memorizzare le informazioni relative all'input dell'utente.
resp - Questo viene utilizzato per memorizzare le informazioni sulle varie risposte
classe progstr{
pubblico:
char userip[MAX_USER_INPUT];
char parola chiave[30];
int chiave trovata;
int chiave;
int nullo;
// costruttore
progstr() { keyno=-1; nullip=0; chiavetrovata=0;
}
}ip;
classe risp
{
int tot_resp;
int last_resp;
char risponde[MAX_RESP_NO][MAX_RESP_LEN];
char parola[MAX_KWD_LEN];
pubblico:
// costruttore
risp.()
{
tot_resp=0;
last_resp=-1;
}
int getcount()
{
return last_resp;
}
void addword(char str[MAX_KWD_LEN])
{
strcpy(parola, str);
}
carattere * getword()
{
parola di ritorno;
}
void addresp(char str[MAX_RESP_LEN])
{
strcpy(replys[++last_resp], str);
}
// definito in seguito
void display_resp(int num);
void quit_display_resp(int num);
};
Guardando in prima classe, L'array di caratteri userip viene utilizzato per memorizzare la frase fornita dall'utente.
Un'altra parola chiave dell'array viene utilizzata per memorizzare la parola chiave, se presente, trovata in quell'input. Se viene trovata una parola chiave, rendiamo int keyfound a 1 else, rimane 0, poiché è inizializzato a 0 nel costruttore.
keyno memorizza il numero di chiave corrispondente della parola chiave corrispondente.
nullip indica se l'utente ha fornito un input Null, ovvero sta semplicemente premendo invio senza fare nient'altro.
Veniamo ora alla seconda classe, risp.
Il primo membro dati, tot_resp indica il numero di risposte totali per una determinata parola chiave.
Le risposte sono effettivamente memorizzate nelle risposte[MAX_RESP_NO][MAX_RESP_LEN] e la parola chiave corrispondente è memorizzata nella parola dell'array.
Costruttore: viene utilizzato per inizializzare il numero totale di risposte a 0. Il motivo per cui last_resp è inizializzato su -1 sarà chiaro quando si osserva la funzione add_resp.
int getcount():
Questa funzione viene utilizzata per ottenere un conteggio di quante risposte ci sono per una determinata parola chiave.
void addword(char str[MAX_KWD_LEN]):
Questo è usato per aggiungere una parola chiave.
carattere * getword():
Utilizzato per restituire la parola chiave per un particolare oggetto di classe risp.
indirizzo vuoto(…):
Viene utilizzato per aggiungere una risposta corrispondente a una determinata parola chiave.
void display_resp(int):
Viene utilizzato per visualizzare la risposta all'utente corrispondente a un determinato numero di indice per le risposte. (in realtà fa di più!).
void quit_display_resp(int):
La differenza tra questa funzione e la funzione precedente è che viene utilizzata alla fine quando l'utente sta uscendo. Quindi, non restituisce il prompt all'utente.
Passaggio 7: funzioni
void initialize_global()
{
strcpy(wordin[0], "ARE");
strcpy(wordout[0], "AM");
strcpy(parolain[1], "AM");
strcpy(wordout[1], "ARE");
strcpy(wordin[2], "WERE");
strcpy(wordout[2], "ERA");
strcpy(wordin[3], "ERA");
strcpy(wordout[3], "ERANO");
strcpy(parolain[4], "TU");
strcpy(wordout[4], "ME");
strcpy(parolain[5], "io");
strcpy(wordout[5], "TU");
strcpy(wordin[6], "TUO");
strcpy(wordout[6], "MIO");
strcpy(wordin[7], "MY");
strcpy(wordout[7], "TUO");
strcpy(wordin[8], "IO");
strcpy(wordout[8], "SEI");
strcpy(wordin[9], "SEI");
strcpy(wordout[9], "IO");
strcpy(wordin[10], "IO");
strcpy(wordout[10], "SEI");
strcpy(wordin[11], "SEI");
strcpy(wordout[11], "SONO");
strcpy(parolain[12], "ME");
strcpy(wordout[12], "TU");
strcpy(parolain[13], "TU");
strcpy(wordout[13], "ME");
}
Scriviamo ora una funzione per mostrare le risposte all'utente. La prima istruzione if nel ciclo for viene utilizzata per commettere un errore di digitazione deliberato per farlo sembrare più umano;-). Un carattere viene scelto casualmente per l'errore di battitura. Casi speciali come New Line e Backspace sono considerati separatamente. (Pensa perché?). Ora introduco qualcosa di nuovo. Un carattere speciale - *. Char * rappresenta tutto il testo trovato DOPO la parola chiave identificata e prima di uno dei seguenti segni di punteggiatura.
Ad esempio, considera l'input dell'utente
AMIT > POSSO ANDARE AD INDORE DOMANI?
MAX > E SE DOMANI NON VAI AD INDORE ?
La parte sottolineata non è memorizzata nel dizionario, ma è presa dall'input dell'utente. Nel file MAX. Dat, memorizziamo queste informazioni come
POSSO
E SE NON LO FATE*
Star (*) chiede al programma di copiare semplicemente tutto ciò che viene digitato dopo la parola chiave (qui CAN I) nell'input dell'utente, così com'è. Spero che ora la funzione di * come parola chiave speciale sia chiara. Quindi, consideriamo un caso più complicato.
AMIT > POSSO ANDARE A FARE ACQUISTI?
MAX > E SE NON VAI A FARE SPESA?
Dobbiamo eseguire anche qualche trasformazione. Quando pensiamo alla trasformazione, la frase viene divisa nelle seguenti 3 sezioni:
- Testo prima della parola di trasposizione. (qui, VAI A SHOPPING CON)
- La parola chiave trasposta. (qui, TUA, al posto di MIA)
- Testo dopo la parola chiave di trasposizione. (qui io ?)
Passaggio 8: i casi possono essere affrontati da………
Passaggio 9: ricerca di una parola chiave nell'input dell'utente
MAX_KEY indica il numero di parole chiave nel file DAT.
Qui cerchiamo semplicemente se la parola chiave è presente in Input dell'utente.
Passaggio 10: conclusione
È tutto ………
Ce l'hai fatta!!!!!!!
Penso che tutti abbiano capito chiaramente le cose……
Consigliato:
MASCHERA VISO AD ATTIVAZIONE VOCALE: 3 Passaggi
MASCHERA VISO AD ATTIVAZIONE VOCALE: QUALCHE MESE FA UN RAGAZZO DI NOME 'TYLER GLAIEL' HA REALIZZATO UNA MASCHERA VISO ATTIVATA VOCALE CHE È DIVENTATA VIRALE… DOPO CHE MOLTI L'HANNO FATTO MA NESSUNO HA FORNITO TUTTI I DETTAGLI NECESSARI PER IL COMPLETAMENTO. TYLER STESSO HA ELIMINATO LA GUIDA FAI DA TE E IL GITHUB CO
Vocal GOBO - Scudo smorzatore del suono - Cabina vocale - Box vocale - Filtro di riflessione - Scudo vocale: 11 passaggi
Vocal GOBO - Sound Dampener Shield - Vocal Booth - Vocal Box - Reflexion Filter - Vocalshield: ho iniziato a registrare più voci nel mio home studio e volevo ottenere un suono migliore e dopo alcune ricerche ho scoperto che cosa è un "GOBO" era. Avevo visto queste cose che smorzano il suono, ma non mi rendevo davvero conto di cosa facessero. Ora faccio. ho trovato un y
Sonoff multicanale - Luci ad attivazione vocale: 4 passaggi (con immagini)
Sonoff multicanale - Luci ad attivazione vocale: 5 anni fa, le luci nella mia cucina stavano andando come le cose da fare. L'illuminazione della pista non funzionava e l'illuminazione del bancone era solo spazzatura. Volevo anche suddividere l'illuminazione in canali in modo da poter illuminare meglio la stanza per i diff
LED ad attivazione vocale: 8 passaggi
LED ad attivazione vocale: Webduino utilizza il browser Internet Chrome per controllare tutti i tipi di componenti elettronici, quindi dovremmo essere in grado di utilizzare tutte le altre funzioni che Chrome ha da offrire. In questo esempio di progetto utilizzeremo l'API Speech di Chrome. Utilizzando il riconoscimento vocale di Google
Pulsante del telecomando ad attivazione vocale: 4 passaggi (con immagini)
Pulsante del telecomando ad attivazione vocale: se hai visto gli altri miei istruttori, sai che nostro figlio ha la distrofia muscolare. Questo è un pezzo di un progetto per rendere le cose più accessibili per lui. Abbiamo una porta azionata da un telecomando per l'apriporta del garage. Questo è stato fantastico in l