Guide e TutorialIngegneriaIngegneria InformaticaTech

Come creare un chatbot con Python

Chat bot, chatbot o chatterbot, è un software progettato per simulare una conversazione con un essere umano. Il dialogo, nella maggior parte dei casi avviene in modalità testuale, ma può avvenire anche in modalità vocale. Lo sviluppo dei chatbot è aumentato nel corso degli anni soprattutto grazie all’intelligenza artificiale, al machine learning ed all’elaborazione del linguaggio naturale per le macchine. Questi possono essere di diversi tipi. Più semplici e diffusi, capaci di rispondere con delle frasi “standard” tramite il riconoscimento di parole chiave ma ne esistono anche di più sviluppati. Questi ultimi riescono a sfruttare le tecniche avanzate del machine learning e dell’Intelligenza Artificiale per elaborare risposte basate sull’attività colloquiale. Oggi vedremo come creare un chatbot “standard” con python.

Chat bot semplice

Per iniziare, ci avvicineremo al mondo della programmazione dei chatbot grazie a python. Quest’ultimo è un linguaggio di programmazione molto noto e versatile. Per questo progetto useremo una libreria specifica nltk (Natural Language ToolKit).

Python: installazione

Se non avete mai programmato in Python, nessun problema. Il codice infatti è piuttosto semplice ed immediato. Altrimenti, vi consiglio di passare direttamente al prossimo passaggio. Come prima cosa abbiamo bisogno di installare Python sul nostro computer. A questo link troverete l’ultima versione disponibile (al momento 3.9.6). Dopo aver seguito la procedura d’installazione saremo pronti ad iniziare.

 

 

Python: prompt comandi

Come detto prima, avremo bisogno della libreria “nltk”. Se avete già programmato o avete già la libreria installata, vi consiglio di passare al prossimo punto. Altrimenti, installare la libreria sarà molto semplice. Ci basterà accede al prompt dei comandi. Per utenti Windows il comando è: Windows + r e digitare “cmd” nel campo esegui. Altrimenti basterà cercare “cmd” nella barra di ricerca di sistema. Per utenti Mac il comando è: command + spazio e nella barra di ricerca digitare “terminale”. Per utenti Linux il comando è: Ctrl + Alt + t.

 

 

Python: installazione libreria

Non appena entrati nel nostro prompt comandi, se l’installazione di Python è andata a buon fine dovremmo avere installato correttamente il pip. Per controllare sarà sufficiente digitare “pip -V” e ci verrà mostrata la versione installata. A questo punto, per versione python superiore alla 3, dovremo digitare “pip3 install nltk”. Altrimenti, se la versione è precedente, dovremo digitare “pip install nltk”. Dopo qualche secondo la libreria sarà correttamente installata.

 

 

Il codice: l’inizio

Completata la preparazione, finalmente il codice. Come editor useremo l’IDLE, per facilitare la comprensione del codice. La scelta di quest’ultimo tuttavia è personale. Dopo aver creato un nuovo documento, possiamo iniziare a scrivere. Iniziamo dall’importazione della libreria. Quindi il comando è “from nltk.chat.util import Chat, reflections”. Ci interessa infatti importare solo parte della libreria, se avessimo voluto importare tutto sarebbe stato sufficiente scrivere “import nltk”.

 

 

Il codice: “dizionario”

La prossima parte è il vero e proprio “dizionario” del nostro chatbot. Come detto prima, va tenuto sempre presente il fatto che il nostro bot non sarà in grado di capire nient’altro se non le esatte espressioni che scriviamo nel codice. Le risposte inoltre, saranno esattamente quelle da noi inserite. Prossimamente vedremo una versione più “avanzata” del chatbot, capace di imparare dall’utente. Creiamo quindi un array “pairs” in cui definiamo tutte le coppie di domanda-risposta. Qui riporto 3 esempi sulla base dei quali se ne potranno creare a volontà.

 

 

Coppie: modulo standard

Ogni coppia, delimitata dalle parentesi quadre, è definita da un elemento “r”, ovvero l’input dell’utente, ed una risposta. Primo esempio: r”(.*) mi chiamo (.*)”,La virgola alla fine non è un errore di battitura ma fondamentale per la distinzione tra domanda e risposta. — . Come detto prima, l’elemento r indica ciò che l’utente scrive al bot, il contenuto va indicato tra doppi apici. L’elemento particolare (.*) si chiama Regex (espressione regolare). Vuol dire che qualsiasi parola scriva l’utente, quella sarà racchiusa in questa categoria. Se io, utente, ad esempio scrivessi “Io mi chiamo Cristina”, per il mio Chatbot, “io” e “cristina” che sono indefiniti all’interno della frase, verranno raccolti rispettivamente nel primo e nel secondo Regex. La risposta a questo sarà: [“Ciao %2, come va?”]. Le parentesi quadre definiscono la mia risposta, posta all’interno di queste, tra doppi apici. Anche qui vediamo un elemento particolare %2. Questo ci permetterà di richiamare il secondo Regex e di inserirlo nella nostra frase. Quindi, continuando l’esempio di prima, la risposta sarebbe “Ciao cristina, come va?”. Questo perché il chatbot recupera l’informazione che sono state fornite nel secondo Regex e la inserisce nella sua risposta.

 

 

Coppie: modulo pipe

Le coppie seguono bene o male tutte lo stesso schema. Tuttavia nel linguaggio parlato siamo soliti usare molte espressioni diverse per indicare uno stesso concetto. Vediamo quindi come farle riconoscere tutte, o quasi, al nostro chatbot. Esempio: r”(We|Ciao|Hey|hola)(.*)”,Ancora, la virgola alla fine non è un errore di battitura —. L’unica variazione rispetto all’esempio precedente è “|” questa “sbarra” che divide i nomi. Questa viene chiamata “pipe” e indica proprio il nostro “o”. Quindi il chatbot, se anche solo una di quelle condizioni è verificata, userà la risposta associata. Per la risposta è diverso. Per fare in modo che il nostro chatbot prenda una risposta random tra quelle inserite dovremo procedere così. Esempio: [“Ciao a te!”, “Chi si vede!”, “Ti stavo aspettando.”]. Dovremo quindi inserire le nostre risposte all’interno delle parentesi quadre, ognuna all’interno dei doppi apici e divise tra loro dalla virgola.

 

 

Coppie: modulo quit

Ultimo comando, fondamentale per il nostro codice è il comando d’uscita. Questo è definito dalla libreria quindi non possiamo cambiare l’input, la risposta sì. Come prima, input: r”quit”,Attenzione sempre alla virgola finale —. Per la risposta ne scriviamo diverse in modo che sia il programma a scegliere casualmente. Quindi, ad esempio: [“A presto!”, “È stato bello, torna presto!”, “Alla prossima!”].

 

Il codice: conclusione

Finito il nostro array di coppie, dobbiamo definire semplicemente una frase di benvenuto, che sarà scritta all’avvio del programma. Esempio: print(“Ehi ciao! Io sono un ChatBot. Dimmi come posso aiutarti.”). Infine un elemento “chat” che poniamo uguale a “chat = Chat(pairs, reflections)” che serve alla nostra libreria per distinguere domande e risposte. Infine il comando “chat.converse()” per far sì che inizi la conversazione. Nel complesso il codice è semplice e immediato e può essere totalmente personalizzato e arricchito.

Cristina Genduso
Mi appassiona il progresso scientifico-tecnologico in tutti i suoi campi e mi piace studiare le novità introdotte nel campo della tecnologia che possono migliorarci la vita.

    You may also like

    Leave a reply

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *