Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Tokenizzazione Tramite Espressioni Regolari | Fondamenti della Pre-Elaborazione del Testo
Introduzione alla NLP

bookTokenizzazione Tramite Espressioni Regolari

Perché le espressioni regolari?

Sebbene le funzioni word_tokenize() e sent_tokenize() della libreria NLTK offrano modalità pratiche per suddividere il testo in parole e frasi, potrebbero non essere sempre adatte a esigenze specifiche di elaborazione del testo. Esploriamo quindi un approccio alternativo: la tokenizzazione tramite espressioni regolari (regex).

Note
Definizione

Espressione regolare (regex) è una sequenza di caratteri che definisce un modello di ricerca. Le espressioni regolari possono essere utilizzate per vari compiti di elaborazione del testo, tra cui ricerca, sostituzione e suddivisione del testo in base a modelli specifici.

Nel contesto della tokenizzazione, le regex permettono di definire modelli personalizzati in grado di identificare i token, offrendo un maggiore controllo sul processo rispetto alle funzioni predefinite.

Utilizzo di regexp_tokenize()

Fortunatamente, la libreria NLTK include la funzione regexp_tokenize() nel modulo tokenize, che suddivide una stringa in sottostringhe utilizzando un'espressione regolare. Questa funzione è particolarmente utile quando è necessario suddividere il testo in base a schemi che non sono gestiti adeguatamente dai tokenizzatori standard.

I parametri più importanti di regexp_tokenize() sono i primi due: text (la stringa da suddividere) e pattern (il pattern dell'espressione regolare).

123456
from nltk.tokenize import regexp_tokenize text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = regexp_tokenize(text, r'\w+') print(tokens)
copy

Come si può vedere, il processo è simile all'utilizzo della funzione word_tokenize(), tuttavia i risultati possono variare a seconda del pattern utilizzato. Nell'esempio, il pattern '\w+' viene utilizzato per individuare sequenze di uno o più caratteri alfanumerici (lettere e numeri) e underscore.

Questo produce un elenco di parole senza segni di punteggiatura, che si differenzia da word_tokenize() in quanto quest'ultima solitamente include la punteggiatura come token separati.

Utilizzo di RegexpTokenizer

Un approccio alternativo per la tokenizzazione personalizzata prevede l'uso della classe RegexpTokenizer dal modulo tokenize di NLTK. Per prima cosa, creare un'istanza di RegexpTokenizer specificando il pattern di espressione regolare desiderato come argomento. Una volta creata l'istanza con il pattern specificato, è possibile passare il testo come argomento al suo metodo tokenize().

12345678
from nltk.tokenize import RegexpTokenizer # Define a tokenizer with a regular expression tokenizer = RegexpTokenizer(r'\w+') text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Questo approccio produce gli stessi risultati e può essere preferibile nei casi in cui sia necessario un unico tokenizer per testi diversi, poiché consente di creare il tokenizer una sola volta e applicarlo a vari input testuali senza ridefinire il pattern ogni volta.

Procediamo con un altro esempio. Supponiamo di voler considerare solo le cifre come token; in tal caso, il nostro pattern '\d+' cercherà una o più cifre, come nell'esempio seguente:

1234567
from nltk.tokenize import RegexpTokenizer tokenizer = RegexpTokenizer(r'\d+') text = "Give my $100 back right now or $20 each month" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Nel complesso, la tokenizzazione tramite espressioni regolari consente una tokenizzazione altamente personalizzata, rendendola ideale per la gestione di pattern complessi e regole di tokenizzazione specifiche che non possono essere facilmente gestite da metodi standard come word_tokenize(). Nel nostro esempio, quando si desiderava utilizzare i numeri come token, word_tokenize() non sarebbe stato adatto a questo compito.

question mark

Quale delle seguenti opzioni descrive meglio cosa corrisponde il pattern di espressione regolare '\w+' quando viene utilizzato con regexp_tokenize() o RegexpTokenizer?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 5

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 3.45

bookTokenizzazione Tramite Espressioni Regolari

Scorri per mostrare il menu

Perché le espressioni regolari?

Sebbene le funzioni word_tokenize() e sent_tokenize() della libreria NLTK offrano modalità pratiche per suddividere il testo in parole e frasi, potrebbero non essere sempre adatte a esigenze specifiche di elaborazione del testo. Esploriamo quindi un approccio alternativo: la tokenizzazione tramite espressioni regolari (regex).

Note
Definizione

Espressione regolare (regex) è una sequenza di caratteri che definisce un modello di ricerca. Le espressioni regolari possono essere utilizzate per vari compiti di elaborazione del testo, tra cui ricerca, sostituzione e suddivisione del testo in base a modelli specifici.

Nel contesto della tokenizzazione, le regex permettono di definire modelli personalizzati in grado di identificare i token, offrendo un maggiore controllo sul processo rispetto alle funzioni predefinite.

Utilizzo di regexp_tokenize()

Fortunatamente, la libreria NLTK include la funzione regexp_tokenize() nel modulo tokenize, che suddivide una stringa in sottostringhe utilizzando un'espressione regolare. Questa funzione è particolarmente utile quando è necessario suddividere il testo in base a schemi che non sono gestiti adeguatamente dai tokenizzatori standard.

I parametri più importanti di regexp_tokenize() sono i primi due: text (la stringa da suddividere) e pattern (il pattern dell'espressione regolare).

123456
from nltk.tokenize import regexp_tokenize text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = regexp_tokenize(text, r'\w+') print(tokens)
copy

Come si può vedere, il processo è simile all'utilizzo della funzione word_tokenize(), tuttavia i risultati possono variare a seconda del pattern utilizzato. Nell'esempio, il pattern '\w+' viene utilizzato per individuare sequenze di uno o più caratteri alfanumerici (lettere e numeri) e underscore.

Questo produce un elenco di parole senza segni di punteggiatura, che si differenzia da word_tokenize() in quanto quest'ultima solitamente include la punteggiatura come token separati.

Utilizzo di RegexpTokenizer

Un approccio alternativo per la tokenizzazione personalizzata prevede l'uso della classe RegexpTokenizer dal modulo tokenize di NLTK. Per prima cosa, creare un'istanza di RegexpTokenizer specificando il pattern di espressione regolare desiderato come argomento. Una volta creata l'istanza con il pattern specificato, è possibile passare il testo come argomento al suo metodo tokenize().

12345678
from nltk.tokenize import RegexpTokenizer # Define a tokenizer with a regular expression tokenizer = RegexpTokenizer(r'\w+') text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Questo approccio produce gli stessi risultati e può essere preferibile nei casi in cui sia necessario un unico tokenizer per testi diversi, poiché consente di creare il tokenizer una sola volta e applicarlo a vari input testuali senza ridefinire il pattern ogni volta.

Procediamo con un altro esempio. Supponiamo di voler considerare solo le cifre come token; in tal caso, il nostro pattern '\d+' cercherà una o più cifre, come nell'esempio seguente:

1234567
from nltk.tokenize import RegexpTokenizer tokenizer = RegexpTokenizer(r'\d+') text = "Give my $100 back right now or $20 each month" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Nel complesso, la tokenizzazione tramite espressioni regolari consente una tokenizzazione altamente personalizzata, rendendola ideale per la gestione di pattern complessi e regole di tokenizzazione specifiche che non possono essere facilmente gestite da metodi standard come word_tokenize(). Nel nostro esempio, quando si desiderava utilizzare i numeri come token, word_tokenize() non sarebbe stato adatto a questo compito.

question mark

Quale delle seguenti opzioni descrive meglio cosa corrisponde il pattern di espressione regolare '\w+' quando viene utilizzato con regexp_tokenize() o RegexpTokenizer?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 5
some-alt