Sommario:

Assistente ad attivazione vocale - MAX: 10 passaggi
Assistente ad attivazione vocale - MAX: 10 passaggi

Video: Assistente ad attivazione vocale - MAX: 10 passaggi

Video: Assistente ad attivazione vocale - MAX: 10 passaggi
Video: Assistente vocale Google: Risolvere l’errore di attivazione del Voice Match 2024, Luglio
Anonim
Assistente ad attivazione vocale - MAX
Assistente ad attivazione vocale - MAX

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

Conoscere il Concorso
Conoscere il Concorso
Conoscere il Concorso
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?

Dove ho saputo delle cose?
Dove ho saputo delle cose?
Dove ho saputo delle cose?
Dove ho saputo delle cose?
Dove ho saputo delle cose?
Dove ho saputo 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:

  1. Intelligenza artificiale Un approccio moderno
  2. Intelligenza. Artificiale.nel.21°. Secolo.2a. Edizione
  3. 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:

  1. Persone che hanno esperienza con la programmazione
  2. 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?

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: