Elaborazione del linguaggio naturale per principianti assoluti

NLP for absolute beginners

Risolvere complessi compiti di NLP in 10 righe di codice Python

Immagine generata dall'autore

È in gran parte vero che l’NLP (Natural Language Processing) è un’area complessa della scienza informatica. Framework come SpaCy o NLTK sono estesi e spesso richiedono un po’ di apprendimento. Ma con l’aiuto di modelli di linguaggio open-source ampi (LLMs) e moderne librerie Python, molti compiti possono essere risolti in modo molto più semplice. E ancora di più, risultati che solo alcuni anni fa erano disponibili solo in articoli scientifici, ora possono essere raggiunti con soli 10 righe di codice Python.

Senza ulteriori indugi, iniziamo.

1. Traduzione di lingue

Vi siete mai chiesti come funziona Google Translate? Google utilizza un modello di apprendimento profondo addestrato su una vasta quantità di testo. Ora, con l’aiuto della libreria Transformers, può essere fatto non solo nei laboratori di Google, ma su un normale PC. In questo esempio, utilizzerò un modello T5-base (Text-to-Text Transfer Transformer) pre-addestrato. Questo modello è stato prima addestrato su dati di testo grezzi, quindi è stato affinato su coppie sorgente-destinazione come (“traduci l’inglese in tedesco: la casa è meravigliosa”, “Das Haus ist Wunderbar”). Qui “traduci l’inglese in tedesco” è un prefisso che “dice” al modello cosa fare, e le frasi sono il contesto effettivo che il modello dovrebbe imparare.

Avviso importante. I modelli di linguaggio ampi sono letteralmente molto grandi. La classe T5ForConditionalGeneration, utilizzata in questo esempio, scaricherà automaticamente il modello “t5-base”, che ha una dimensione di circa 900 MB. Prima di eseguire il codice, assicurati di avere abbastanza spazio su disco e che il tuo traffico non sia limitato.

Un modello T5 pre-addestrato può essere utilizzato in Python:

from transformers import T5Tokenizer, T5ForConditionalGenerationpreprocessed_text = "traduci l'inglese in tedesco: il tempo è buono"tokenizer = T5Tokenizer.from_pretrained('t5-base',                                        max_length=64,                                        model_max_length=512,                                        legacy=False)tokens = tokenizer.encode(preprocessed_text,                          return_tensors="pt",                          max_length=512,                          truncation=True)model =…