Chatterbot: come creare un chatbot con Python

chatbot

Un chatbot è un software in grado di simulare una conversazione con un utente. ChatterBot è una libreria Python che semplifica la generazione di risposte automatiche agli input di un utente. ChatterBot utilizza una selezione di algoritmi di apprendimento automatico per produrre diversi tipi di risposte. Ciò rende facile per gli sviluppatori creare chatbot e automatizzare le conversazioni con gli utenti. In questo articolo andremo a descrivere come sia facile creare un chatbot utilizzando le funzionalità offerte da questa libreria Python.

Introduzione

Un chatbot, noto anche come agente artificiale, è fondamentalmente un software che ha lo scopo di effettuare conversazioni con l'utente tramite testi o parole. I chatbot spesso eseguono attività specifiche come effettuare una transazione, prenotare un hotel, inviare moduli, ecc. Le possibilità offerte dai chatbot sono infinite, grazie anche ai progressi tecnologici nel dominio dell'Intelligenza Artificiale. Quasi il 30 percento delle attività in una generica azienda viene oggi eseguito dai chatbot.

I chatbot operano attraverso uno di 2 meccanismi fondamentali che guidano la tecnologia.

  1. I chatbot basati su regole eseguono comportamenti pre-programmati.
  2. I chatbot di Intelligenza Artificiale utilizzano la tecnologia di Natural Language Processing (NLP) per riconoscere la struttura delle frasi, interpretarle e migliorare la loro capacità di rispondere alle domande. Invece di fare affidamento su una risposta pre-programmata, i chatbot di IA determinano innanzitutto ciò che il cliente o l'utente sta dicendo. Quindi, una volta capito forniscono una risposta che ritengono corretta in base ai dati disponibili. La macchina apprende la risposta "giusta" nel tempo analizzando le risposte corrette ed errate.

In questo articolo andremo a creare un chatbot basato su IA grazie al linguaggio di programmazione Python, avvalendoci della libreria Chatterbot.

La libreria ChatterBot

ChatterBot è una libreria Python progettata per semplificare la creazione di software in grado di conversare autonomamente con un utente umano. La libreria ChatterBot combina corpora linguistici, elaborazione del testo, algoritmi di apprendimento automatico e archiviazione e recupero dei dati per consentire di creare chatbot flessibili. ChatterBot è stato progettato per essere addestrato a parlare qualsiasi lingua. Inoltre, la natura di apprendimento automatico di ChatterBot consente, ad un'istanza dell'agente, di migliorare la propria conoscenza delle possibili risposte mentre interagisce con gli esseri umani e altre fonti informative. Un'istanza non addestrata di ChatterBot inizia senza sapere come comunicare. Ogni volta che un utente immette un'affermazione, la libreria salva il testo immesso e il testo a cui l'affermazione era in risposta. Man mano che ChatterBot riceve più input, il numero di risposte a cui può rispondere e l'accuratezza di ciascuna risposta in relazione all'istruzione di input aumentano. La Figura 1 riporta una rappresentazione grafica del processo descritto.

chatbot

Figura 1: Rappresentazione grafica del funzionamento di un'istanza Chatterbot

Descrizione del progetto

In questo articolo andremo a realizzare un chatbot utilizzando la libreria Chatterbot. Partiremo con un chatbot non addestrato che mostrerà quanto velocemente sia possibile creare un chatbot interattivo utilizzando ChatterBot. In questa fase il vocabolario del nostro chatbot non addestrato sarà davvero piccolo e le sue performance pessime. Per questo motivo, andremo ad addestrare il chatbot per ottenere dei risultati leggermente migliori. Più abbondanti e di alta qualità saranno i dati di addestramento, migliori saranno le risposte del software. Per questa esperienza andremo ad utilizzare Google Colab. Per poter utilizzare Google Colab basterà avere un'account Google e avremo così a disposizione un ambiente gratuito e dotato delle risorse computazionali necessarie. Inoltre, non dovremo preoccuparci delle problematiche relative alla compatibilità delle versioni.

Creazione del chatbot

Una volta entrati in Google Colab con il proprio account, facciamo click su File -> Nuovo blocco note. Si aprirà un nuovo file con un blocco codice già pronto da riempire. All'interno del blocco codice inseriamo quindi le seguenti righe di codice:

!pip install chatterbot
!pip install chatterbot_corpus

Stiamo in sostanza installando la libreria Chatterbot e i corpora linguistici necessari. In linguistica, un corpus (plurale corpora) o corpus testuale è un insieme ampio e strutturato di testi. Sono utilizzati per eseguire analisi statistiche e test di ipotesi, controllare occorrenze o convalidare regole linguistiche all'interno di uno specifico territorio linguistico. Facciamo clic sull'icona a forma di "Play" presente sulla cella, o andiamo su Runtime -> Esegui tutte. Il processo di installazione dovrebbe essere un pò lungo, occorre quindi munirsi di un pò di pazienza. Naturalmente, tutto avviene sulle macchine che Google mette a disposizione come risorse di calcolo; niente viene installato sui nostri PC. Una volta terminato il processo di installazione facciamo click su +Codice per inserire una nuova cella di codice. All'interno di questa cella inseriamo il codice per importare la classe Chatbot dalla libreria.

from chatterbot import ChatBot

Anche in questo caso facciamo click sull'icona di esecuzione della cella e andiamo quindi ad inserire una nuova cella di codice. Nella nuova cella inseriamo il seguente codice:

chatbot = ChatBot("Chatbot")

Stiamo creando un'istanza della classe ChatBot. L'unico argomento richiesto è il nome da dare al nostro agente e lo chiamiamo "Chatbot". Nell'ultima cella di codice andiamo ad inserire le seguenti righe:

exit_conditions = (":q", "quit", "exit")

while True:
 query = input("> ")
  if query in exit_conditions:
   break
  else:
   print(f"{chatbot.get_response(query)}")

In questo ultimo blocco, per prima cosa definiamo una tupla (un elenco immutabile) con le condizioni di uscita (exit_conditions). Il ciclo while continuerà a ripetersi a meno che l'utente non inserisca una delle stringhe definite nella tupla. In sostanza, quando l'utente inserirà una delle tre stringhe, il chatbot terminerà il suo funzionamento. L'inserimento degli input da parte dell'utente avviene tramite la funzione input(). Gli input vengono salvati nella variabile query. Se in query vi è una delle condizioni di uscita, come abbiamo già visto, il ciclo si interrompe, altrimenti viene chiamato il metodo get_response() sull'istanza chatbot. Questo metodo restituisce la risposta del chatbot alla query dell'utente, che viene quindi stampata sulla console. Inserendo alcune frasi, possiamo notare che il chatbot funziona, in quanto risponde alle nostre sollecitazioni. Il problema in questo momento è che il suo vocabolario è troppo limitato e quindi risponde a tutti gli input nello stesso modo. Comunque, il chatbot impara man mano che viene usato. Per verificarlo, basta interrompere la sessione corrente digitando una delle condizioni di uscita ":q", "quit" o "exit". Quindi, avviando il chatbot nuovamente, andiamo ad inserire messaggi diversi. Possiamo notare che il chatbot ricorda ciò che è stato digitato durante l'esecuzione precedente. Durante la prima esecuzione, ChatterBot ha creato un database SQLite in cui ha memorizzato tutti gli input e li ha collegati con possibili risposte. Dovrebbero esserci tre nuovi file nella cartella di lavoro di Colab, il file principale del database è db.sqlite3, mentre gli altri due, che terminano con -wal e -shm, sono file di supporto temporanei. ChatterBot utilizza l'SQLStorageAdapter predefinito e crea un database SQLite a meno che non si specifichi un adattatore di archiviazione diverso. Se si interagisce con il chatbot appena creato, esso migliorerà le sue risposte, ma migliorare manualmente le risposte è un processo troppo lungo. Andiamo allora ad addestrare il software in modo da poter avere conversazioni leggermente più interessanti.

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2056 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

2 Commenti

  1. Avatar photo bb sof 3 Luglio 2023
    • Avatar photo Andrea Garrapa 4 Luglio 2023

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend