Cosa sono i modelli neurali chiamati “transformers” e come si usano. Esempio di applicazione di un chatbot.
I modelli neurali chiamati “transformers” sono un tipo di modello di intelligenza artificiale progettato per comprendere e generare testo. Funzionano in modo simile ai modelli di linguaggio tradizionali, ma utilizzano una tecnica chiamata “attenzione” per concentrarsi su parti specifiche del testo e comprenderle meglio. In questo modo, i modelli transformer possono capire il contesto e il significato delle parole nel testo in modo più accurato rispetto ai modelli di linguaggio convenzionali. Ciò li rende molto utili per un’ampia gamma di applicazioni, come la traduzione automatica, la generazione di testo e il riconoscimento del linguaggio naturale.
Come già accennato, i modelli transformer utilizzano la tecnica dell'”attenzione” per comprendere e generare testo. In parole semplici, l’attenzione funziona dando maggior peso ad alcune parti del testo rispetto ad altre, in modo da concentrare la capacità del modello su quelle parti specifiche. Questo permette al modello di comprendere meglio il contesto e il significato delle parole nel testo, rendendolo più preciso nella comprensione del linguaggio naturale. Inoltre, l’utilizzo dell’attenzione consente ai modelli transformer di elaborare grandi quantità di testo in modo efficiente, rendendoli adatti a una vasta gamma di applicazioni.
In questo articolo cercheremo di analizzare una possibile via per creare un chatbot utilizzando i modelli transformer. Per raggiungere questo obiettivo è necessario seguire i seguenti passi:
1. Caricare un modello di linguaggio pre-addestrato, che può essere ottenuto ad esempio su Hugging Face.
2. Definire una funzione che utilizzi il modello per generare una risposta a una domanda specifica.
3. Creare un ciclo che chieda all’utente una domanda e stampi la risposta del chatbot generata dal modello.
Partendo da un modello pre-addestrato, è possibile migliorare il risultato del chatbot utilizzando tecniche avanzate di elaborazione del linguaggio naturale ed addestrando il modello su un corpus di testo specifico per il dominio di interesse.
Ecco un esempio di come sia possibile utilizzare i modelli transformer per creare un semplice chatbot in Python:
import torch from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained('microsoft/DialoGPT-medium') model = AutoModelForCausalLM.from_pretrained('microsoft/DialoGPT-medium') def generate_response(text): # Codifica il testo di input e aggiungi i token EOS alla fine input_ids = tokenizer.encode(text + tokenizer.eos_token, return_tensors='pt') # Genera una risposta dal modello with torch.no_grad(): response_ids = model.generate(input_ids, max_length=1000, pad_token_id=tokenizer.eos_token_id) # Decodifica la risposta e rimuovi il testo di input response_text = tokenizer.decode(response_ids[:, input_ids.shape[-1]:][0], skip_special_tokens=True) return response_text # Chiedi all'utente una domanda e genera una risposta while True: question = input("You: ") response = generate_response(question) print("Bot: ", response)
Nello script, faccio uso della libreria Transformers di Hugging Face per caricare un modello pre-addestrato chiamato “DialoGPT-medium”, specializzato nella generazione di testo in conversazioni, in particolare per rispondere alle domande dell’utente. La funzione “generate_response” prende come input una stringa di testo, ne effettua la tokenizzazione, genera una risposta utilizzando il modello e decodifica l’output in testo leggibile. Infine, il ciclo while chiede all’utente di inserire una domanda e utilizza la funzione generate_response per generare una risposta del chatbot.
Per creare un chatbot che sia in grado di interpretare la lingua italiana è sufficiente cambiare il modello preaddestrato da caricare. Nell’esempio seguente ho utilizzato il modello chiamato: ‘it5/it5-large-repubblica-to-ilgiornale’
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM tokenizer = AutoTokenizer.from_pretrained("it5/it5-large-ilgiornale-to-repubblica") model = AutoModelForSeq2SeqLM.from_pretrained("it5/it5-large-ilgiornale-to-repubblica") def generate_response(text): input_ids = tokenizer.encode(text, return_tensors="pt") outputs = model.generate(input_ids, max_length=40, num_beams=5, early_stopping=True) response_text = tokenizer.decode(outputs[0], skip_special_tokens=True) return response_text # Chiedi all'utente una domanda e genera una risposta while True: question = input("You: ") response = generate_response(question) print("Bot: ", response)
Per trovare altri modelli disponibili per l’italiano, puoi visitare il seguente link: https://huggingface.co/models?filter=italian, puoi esplorare i diversi modelli disponibili per la lingua italiana e scegliere quello che meglio si adatta alle tue esigenze.
Per migliorare il chatbot, è possibile addestrare il modello su un corpus di testo specifico per il tuo dominio di interesse, o utilizzare tecniche avanzate di elaborazione del linguaggio naturale per migliorare la qualità delle risposte del chatbot.
Per addestrare un modello transformer con i tuoi testi, è possibile seguire questi passaggi generali:
1. Raccogliere dei dati: il primo passo consiste nel raccogliere i testi che vuoi utilizzare per addestrare il modello. Questi testi devono essere pertinenti per il dominio di interesse del modello e devono essere in un formato adatto per l’addestramento (ad esempio, un file di testo con una parola o una frase per ogni riga).
2. Pre-elaborazione dei dati: una volta raccolti i dati, dovrai pre-elaborarli per prepararli per l’addestramento. Questo può includere operazioni come la rimozione della punteggiatura, la tokenizzazione del testo e la creazione di sequenze di lunghezza fissa per alimentare il modello durante l’addestramento.
3. Addestramento: Dopo aver preparato i tuoi dati, puoi iniziare a addestrare il tuo modello. Questo processo richiede di alimentare il modello con i tuoi dati di addestramento e di aggiustare i parametri del modello per minimizzare l’errore nelle previsioni del modello. L’addestramento di un modello transformer può richiedere molto tempo e risorse computazionali, quindi è importante avere una buona comprensione dei requisiti prima di iniziare.
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments