Corso
Sei stanco di aspettare in lunghe code perché la tua chiamata venga collegata a un operatore del servizio clienti? Leggere le FAQ ti fa venire sonnolenza? Allora sei sulla pagina giusta. Ricordi l’ultima volta che hai scritto in chat all’assistenza clienti per un articolo sbagliato consegnato a casa? È molto probabile che a risponderti non fosse una persona, ma un bot. Ma cosa sono esattamente i bot? Come si costruiscono? Di quale codice hanno bisogno? In questo post risponderemo a queste e ad altre domande!
L’intelligenza artificiale, che mette in gioco il machine learning e l’elaborazione del linguaggio naturale (NLP) per costruire bot o chatbot, è pensata proprio per rendere fluida l’interazione tra esseri umani e computer. I chatbot sono ovunque: siti bancari, pizzerie, negozi di e-commerce… li trovi dappertutto. Offrono assistenza clienti in tempo reale su una serie di domande predefinite legate al dominio per cui sono stati creati. Adottano il linguaggio naturale e conversano con le persone in modo simile a un umano.
Per semplificare la definizione, possiamo dire che i chatbot sono l’evoluzione dei sistemi di domanda-risposta che utilizzano l’elaborazione del linguaggio naturale. Secondo alcune fonti, entro il 2024 il mercato globale della conversazione crescerà fino a 15,7 miliardi di dollari, con un tasso di crescita annuo del 30,2%. Per esempio, durante la pandemia di Coronavirus abbiamo visto circolare migliaia di bufale su WhatsApp, come presunte cure contro il COVID, consigli su come aumentare l’immunità o teorie secondo cui il virus sarebbe stato creato in laboratorio. Per contrastare queste bufale, Facebook ha lanciato un chatbot che funge da fact-checker.
Ti interessa creare un chatbot con strumenti come OpenAI e Pinecone? Dai un’occhiata al nostro code-along qui sotto:
Che cos’è un chatbot?
Il termine “chatterbot” è nato nel 1994, quando Michael Mauldin creò il suo primo chatbot chiamato “Julia”. Secondo l’Oxford Dictionary, un chatbot è “Un programma informatico progettato per simulare una conversazione con utenti umani, specialmente su internet.” Possiamo considerarlo un assistente virtuale che comunica con gli utenti tramite messaggi di testo e aiuta le aziende ad avvicinarsi ai propri clienti. È un programma ideato per imitare il modo in cui gli umani comunicano tra loro. Può farlo tramite un’interfaccia di chat o tramite chiamata vocale. Gli sviluppatori in genere progettano i chatbot in modo che sia difficile per gli utenti capire se stanno parlando con una persona o con un robot.
I chatbot aiutano qualsiasi azienda/organizzazione a raggiungere i seguenti obiettivi:
- Aumentare l’efficienza operativa.
- Automatizzare l’evasione delle richieste dei clienti.
- Gestire le domande di base, liberando così i dipendenti per occuparsi di richieste più complesse e di maggior valore.
- Offrire supporto multilingue.
- Risparmiare tempo e fatica automatizzando il supporto clienti.
- Migliorare i tempi di risposta e il coinvolgimento dei clienti.
- Personalizzare la comunicazione.

Come funziona un chatbot?
I chatbot sono applicazioni software composte da un application layer, un database e API. Per semplificare, possiamo dire che funzionano tramite pattern matching per classificare il testo e produrre una risposta adatta alle domande/richieste dell’utente. Il chatbot risponde in base al programma con cui è stato configurato. Esistono diversi tipi di chatbot, a seconda dell’uso. Principalmente se ne distinguono tre:
-
Chatbot basati su regole: Sono i chatbot più basilari: l’utente interagisce usando opzioni predefinite. Per ottenere risposte, deve cliccare su determinate scelte. Questi bot raccolgono la richiesta dell’utente, la analizzano e offrono risultati sotto forma di pulsanti. Sono comunemente usati in sostituzione delle FAQ; per richieste complesse non sono sempre la soluzione migliore.
-
Chatbot indipendenti (a parole chiave): Sono bot di machine learning: a differenza dei bot basati su regole, analizzano cosa vuole l’utente e rispondono di conseguenza. Usano parole chiave personalizzabili e tecniche di machine learning per determinare come rispondere in modo efficace ed efficiente alle richieste.
-
Chatbot NLP (contestuali): Sono i più avanzati. Combinano il meglio dei bot a regole e a parole chiave. Usano l’NLP per capire contesto e intento nelle richieste dell’utente e agire di conseguenza. Possono gestire con facilità più richieste provenienti dallo stesso utente.
Confronto tra piattaforme per chatbot
Molte piattaforme offrono chatbot personalizzati con automazioni che garantiscono assistenza continua, puntuale e di alto livello, disponibile ai clienti quando ne hanno bisogno, anche senza capacità conversazionali “out of the box”. I clienti, inoltre, preferiscono acquistare da aziende con cui possono comunicare facilmente via messaggio.
Ecco alcune piattaforme per creare chatbot con AI nel 2020:
-
Azure Bot Service: Consente di costruire un chatbot da zero: puoi creare, connettere, testare e distribuire. Permette agli sviluppatori di usare SDK e strumenti open source. Consente anche di creare bot avanzati come assistenti virtuali per gestire richieste complesse.
-
Botsify: La sua particolarità è permettere anche agli utenti non tecnici di creare un chatbot grazie a un’interfaccia intuitiva. I bot sono rappresentati come “storie”: puoi creare più storie o più chatbot e distribuirli in base alle esigenze. Un’altra ottima funzione è la possibilità di salvare le risposte degli utenti in un modulo facilmente esportabile in CSV.
-
Amazon Lex: Consente agli sviluppatori di creare interfacce conversazionali tramite testo e voce. Include funzionalità avanzate di deep learning e NLP per comprendere il contesto del testo. Offre una console facile da usare per creare un chatbot in pochi minuti.
-
Mobile Monkey: Consente di creare chatbot specifici per il marketing. Permette di realizzare bot per Facebook Ads, bot SMS e chatbot nativi per il web su un’unica piattaforma. Offre anche template di chatbot pronti all’uso per qualsiasi tipo di business, direttamente integrabili in un sito.
-
ChatterOn: Dichiara di gestire diversi tipi di risposte ricche dal bot consentendo agli sviluppatori di collegare API diverse a ogni interazione con l’utente. Offre oltre 20 bot predefiniti utilizzabili con un solo clic. Richiede poco codice, rendendo più semplice per gli utenti non tecnici creare chatbot.
-
TARS: Ti permette di creare una landing page conversazionale, ovvero un chatbot automatico che accoglie i clienti, fornisce informazioni pertinenti sui loro quesiti relativi ai tuoi prodotti e al contempo chiede i loro contatti. Tars offre molti template predefiniti di chatbot, classificati per settore e per caso d’uso.
A questo punto, probabilmente sei curioso di creare un tuo chatbot. E cosa c’è di meglio di un chatbot NLP personalizzabile? Iniziamo a costruire il nostro chatbot in Python usando la libreria chatterbot.
Chatterbot

Come suggerisce il nome, chatterbot è una libreria Python pensata per generare chatbot. Questo algoritmo utilizza una selezione di algoritmi di machine learning per produrre risposte diverse agli utenti in base alle loro richieste.
Chatterbot rende più semplice sviluppare chatbot in grado di sostenere conversazioni. Si parte creando un chatterbot non addestrato, senza esperienza o conoscenze pregresse su come comunicare. Quando gli utenti inseriscono frasi, la libreria salva sia la richiesta sia le risposte inviate. Man mano che aumentano i casi registrati in chatterbot, aumenta anche l’accuratezza delle risposte.
Chatterbot è addestrato per cercare la risposta più analoga trovando la richiesta dell’utente più simile a quella nuova. Poi seleziona una risposta tra quelle già esistenti. Il punto di forza di chatterbot è permettere agli sviluppatori di creare con facilità propri dataset e strutture.
Creare un chatbot con Chatterbot
Cominciamo installando la libreria chatterbot. Per creare un chatbot è necessario installare anche chatterbot corpus. Corpus significa letteralmente raccolta di testi. Contiene un corpus di dati incluso nel modulo chatterbot. Ogni corpus non è altro che un prototipo di diversi input e delle loro risposte. Questi corpora sono usati dai bot per allenarsi. Il metodo consigliato per installare chatterbot e chatterbot_corpus è usare pip.
Comandi di installazione per terminale:
pip install chatterbot
pip install chatterbot_corpus
Comandi di installazione per Jupyter Notebook:
!pip install chatterbot
!pip install chatterbot_corpus
Importiamo innanzitutto la classe Chatbot del modulo chatterbot.
# Importing chatterbot
from chatterbot import ChatBot
Crea un’istanza del Chatbot
Ora arriva la parte più interessante: dare un nome al tuo chatbot creando un oggetto Chatbot. Puoi scegliere qualsiasi nome. Questa singola riga di codice genera il nostro nuovo bot chiamato Buddy. Dobbiamo specificare ancora alcuni parametri prima di eseguire il nostro primo programma.
# Create object of ChatBot class
bot = ChatBot('Buddy')
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data] /root/nltk_data...
[nltk_data] Unzipping taggers/averaged_perceptron_tagger.zip.
[nltk_data] Downloading package stopwords to /root/nltk_data...
[nltk_data] Unzipping corpora/stopwords.zip.
[nltk_data] Downloading package wordnet to /root/nltk_data...
[nltk_data] Unzipping corpora/wordnet.zip.
Puoi impostare lo storage adapter con l’oggetto chatbot. Gli storage adapter permettono di connettersi a un’unità o rete di archiviazione specifica. Per usarne uno, dobbiamo specificarlo. Lo imposteremo assegnandogli il percorso di import dello storage che vogliamo usare. Qui utilizziamo lo SQL Storage Adapter, che consente al chatbot di connettersi a database SQL. Con il parametro database creeremo un nuovo database SQLite. Segui il codice qui sotto per creare un nuovo database per il chatbot.
# Create object of ChatBot class with Storage Adapter
bot = ChatBot(
'Buddy',
storage_adapter='chatterbot.storage.SQLStorageAdapter',
database_uri='sqlite:///database.sqlite3'
)
Puoi anche impostare il logical adapter con un oggetto chatbot. Come suggerisce il nome, il Logical Adapter regola la logica di chatterbot, cioè sceglie le risposte per qualsiasi input. Questo parametro contiene un elenco di operatori logici. Chatterbot permette di usare diversi logical adapter. Quando se ne usa più di uno, il chatbot calcola il livello di confidenza e restituisce in output la risposta con la confidenza più alta. Qui abbiamo usato due logical adapter: BestMatch e TimeLogicAdapter.
# Create object of ChatBot class with Logic Adapter
bot = ChatBot(
'Buddy',
logic_adapters=[
'chatterbot.logic.BestMatch',
'chatterbot.logic.TimeLogicAdapter'],
)
Addestrare il chatbot
L’ultimo passaggio per creare un chatbot è addestrarlo usando i moduli disponibili in chatterbot. Addestrare un chatbot con chatterbot è semplice quanto fornire una conversazione nel database del chatbot. Non appena il chatbot riceve un dataset, crea le voci necessarie nel grafo di conoscenza per rappresentare in modo corretto input e output. Per prima cosa importiamo ListTrainer, creiamo il suo oggetto passando l’oggetto Chatbot e chiamiamo il metodo train() passando una lista di frasi.
# Inport ListTrainer
from chatterbot.trainers import ListTrainer
trainer = ListTrainer(bot)
trainer.train([
'Hi',
'Hello',
'I need your assistance regarding my order',
'Please, Provide me with your order id',
'I have a complaint.',
'Please elaborate, your concern',
'How long it will take to receive an order ?',
'An order takes 3-5 Business days to get delivered.',
'Okay Thanks',
'No Problem! Have a Good Day!'
])
List Trainer: [####################] 100%
Test del chatbot
L’ultimo step di questo tutorial è testare le capacità conversazionali di chatterbot. Per verificarne le risposte, chiameremo il metodo get_responses() dell’istanza di Chatbot.
# Get a response to the input text 'I would like to book a flight.'
response = bot.get_response('I have a complaint.')
print("Bot Response:", response)
Bot Response: Please elaborate, your concern
Creeremo un ciclo while in cui far girare il nostro chatbot. Inserendo frasi nel ciclo, otterremo una risposta adeguata, dato che abbiamo già inserito i dati nel database. Se dall’utente riceviamo la frase "Bye" o "bye", possiamo interrompere il ciclo e terminare il programma.
name=input("Enter Your Name: ")
print("Welcome to the Bot Service! Let me know how can I help you?")
while True:
request=input(name+':')
if request=='Bye' or request =='bye':
print('Bot: Bye')
break
else:
response=bot.get_response(request)
print('Bot:',response)
Enter Your Name: Avinash
Welcome to the Bot Service! Let me know how can I help you?
Avinash:I need your assistance regarding my order
Bot: Please, Provide me with your order id
Avinash:12345
Bot: No Problem! Have a Good Day!
Avinash:Bye
Bot: Bye
Conclusioni
Congratulazioni, sei arrivato alla fine di questo tutorial!
Questo articolo era incentrato su come creare un chatbot in Python usando la libreria ChatterBot. Costruire un chatbot con ChatterBot non è stato solo semplice, ma anche accurato nei risultati. Con i progressi dell’intelligenza artificiale e del machine learning, tutto è possibile: dai bot con capacità conversazionali simili a quelle umane ad altro ancora. Dai un’occhiata al tutorial di DataCamp su Distribuire chatbot Facebook con Python.


