Nel precedente articolo abbiamo descritto e spiegato come installare il software e tutte le librerie necessarie alla creazione e al funzionamento del chatbot IA. In questo articolo, descriveremo il progetto attraverso l'analisi delle funzioni principali del codice, creeremo il programma chatbot con Python e vedremo in opera il chatbot mediante una conversazione che potrete instaurare e testare voi stessi con questa macchina virtuale intelligente.
Introduzione - Creazione di chatbot
Abbiamo visto che con lo Shell interprete di Python è possibile inviare un comando per eseguire una funzione. Inoltre, dalla riga di comando si può anche lanciare un codice per eseguire un file Python. Ma, utilizzare un ambiente di sviluppo d’interfaccia utente come l’IDLE (Integrated Development and Learning Environment) di Python consente di eseguire programmi, modificarli e testarli con la funzione di debug. Per avviare l’IDLE di Python occorre aprire la cartella “idlelib” dove è installato Python, ad es. C:\.....\Python3X\Lib\idlelib, e cliccare due volte sul file “idlelib.pyw”. Un’alternativa più rapida è aprire IDLE con Start -> Tutti i Programmi -> Python 3.X -> IDLE (Python 3.X 64-bit); se volete, cliccando con il destro sul file IDLE (Python 3.X 64-bit), con Invia a Desktop (crea collegamento), potete creare il collegamento sul desktop del vostro computer per aprire l’IDLE più comodamente e rapidamente.
Per entrare nella effettiva funzionalità visuale di Python, ovvero l’IDLE, con File -> Open File, oppure con File -> New File, si può rispettivamente aprire un file con estensione .py creato con un editor testuale come Notepad++, Notepad e simili (ma non con Word), oppure crearne uno nuovo sempre con estensione .py. La Figura 1 mostra la schermata dell’IDLE dopo l’apertura del file di esempio helloworld.py contenente uno script per stampare a schermo una frase. Cliccando sul menu Run -> Run Module, si otterrà il risultato dello script, come si può notare in basso all’immagine di Figura 1.
Programmazione del codice del Chatbot
Prima di programmare e avviare il codice nell’IDLE, dovrete salvarlo con estensione .py, come abbiamo visto nel file di esempio. Inoltre, è consigliabile verificare nello Shell di Python con la riga di comando “import XXXX“ (inserendo al posto della parola con le X il nome della libreria) che siano state installate correttamente tutte le librerie. Se non viene riconosciuta la libreria riceverete un messaggio di errore e dovrete installare la libreria con la procedura descritta in precedenza utilizzando il prompt dei comandi DOS e il gestore dei pacchetti pip. Durante l’installazione delle librerie, potreste ricevere l’avviso che la libreria è installata in C:\....\AppData\Local\Programs\Python\Python37\Scripts, ma questo percorso non è inserito nella variabile di sistema PATH, quindi si consiglia di farlo con la procedura descritta precedentemente per inserire il percorso di Python nella PATH. Per verificare se il percorso risulta effettivamente inserito nella PATH, digitate il seguente comando nel prompt dei comandi DOS:
echo %PATH%
Dopo l’invio di questo comando seguirà un elenco con i percorsi inseriti nella PATH.
Descrizione del codice
Il codice del chatbot inizia importando tutte le librerie:
# For speech-to-text: import speech_recognition as sr # For text-to-speech from gTTS: import gTTS # For language model: import tensorflow import transformers import os import time # For data : import datetime import numpy as np
Poi viene creata la classe ChatBot():
# Building the AI class ChatBot(): def __init__(self, name): print("----- Starting up", name, "-----") self.name = name
Con il seguente codice viene utilizzata la libreria SpeechRecognition, un’API di Google. Il riconoscimento vocale SpeechRecognition è un sottocampo della tecnologia NLP. Il riconoscimento vocale funziona con metodi e tecnologie per consentire il riconoscimento e la traduzione delle lingue parlate dall'uomo in qualcosa che il computer o l'Intelligenza Artificiale possono comprendere ed a cui rispondere:
def speech_to_text(self): recognizer = sr.Recognizer() with sr.Microphone() as mic: print("Listening...") audio = recognizer.listen(mic) self.text="ERROR" try: self.text = recognizer.recognize_google(audio) print("Me --> ", self.text) except: print("Me --> ERROR")
Per conversare con chatbot, la prima operazione consiste nella conversione da voce a testo, ovvero la conversione dei segnali vocali audio in dati di testo. Chatbot acquisisce il segnale vocale (ascolta) e compila un file di testo contenente il parlato dell’utente:
# Running the AI if __name__ == "__main__": ai = ChatBot(name="dev") nlp = transformers.pipeline("conversational", model="microsoft/DialoGPT-medium") os.environ["TOKENIZERS_PARALLELISM"] = "true" ex=True while ex: ai.speech_to_text()
Successivamente, l’Intelligenza Artificiale deve essere in grado di rispondere ai segnali audio inviati dall’utente, ossia, dopo che il chatbot ha ricevuto l'input audio, deve elaborarlo e fornire risposte adeguate all’argomento della conversazione:
## wake up if ai.wake_up(ai.text) is True: res = "Hello I am Dave the AI, what can I do for you?"
Il programma richiede anche il modulo di sintesi vocale GTTS o la libreria Google Text to Speech per salvare i file audio mp3 nel file system, che possono essere facilmente riprodotti:
@staticmethod def text_to_speech(text): print("Dev --> ", text) speaker = gTTS(text=text, lang="en", slow=False) speaker.save("res.mp3") statbuf = os.stat("res.mp3") mbytes = statbuf.st_size / 1024 duration = mbytes / 200 os.system('start res.mp3') #if you are using mac->afplay or else for windows->start time.sleep(int(50*duration)) os.system("close res.mp3")
Fino a questo punto, il codice utilizza tecniche di riconoscimento vocale per far sì che chatbot risponda ai segnali vocali con frasi predeterminate o preimpostate, quindi il chatbot “non è ancora molto intelligente” poiché non è in grado di rispondere a tutto ciò che non è predeterminato. Quindi, il codice seguente incorpora l'Intelligenza Artificiale nel chatbot che gli consentirà di creare risposte intelligenti alle interazioni vocali umane, ovvero integra un modello Machine Learning addestrato utilizzando la tecnologia NLP. Viene utilizzato in modo specifico il DialogGPT addestrato e creato da Microsoft sulla base di milioni di conversazioni e chat sulla piattaforma Reddit in un determinato intervallo di tempo.
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 1705 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.