Progetto di un Chatbot IA con NLP e Python – Puntata 3

IA

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.

chatbot

Figura 1: IDLE con lo script del file di esempio helloworld.py

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.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend