Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Stemming | Stemming e Lemmatizzazione
Introduzione alla NLP

bookStemming

Comprendere lo Stemming

Note
Definizione

Lo stemming è una tecnica di normalizzazione del testo utilizzata nell'NLP per ridurre le parole flesse al loro stelo.

Per essere più precisi, lo stemming consiste nella rimozione degli affissi (solitamente solo suffissi) dalle parole per ottenere la loro forma radice, nota come stelo. Ad esempio, gli steli di "running", "runs" e "run" sono tutti "run".

Lo scopo dello stemming è semplificare l'analisi trattando parole simili come la stessa entità, migliorando così l'efficienza in vari compiti di NLP.

Stemming con NLTK

NLTK offre diversi algoritmi di stemming, tra cui i più popolari sono il Porter Stemmer e il Lancaster Stemmer. Questi algoritmi applicano regole specifiche per rimuovere affissi e ricavare la radice di una parola.

Tutte le classi di stemmer in NLTK condividono una stessa interfaccia. Prima è necessario creare un'istanza della classe stemmer e poi utilizzare il suo metodo stem() per ciascuno dei token.

1234567891011121314151617181920212223242526272829
import nltk from nltk.stem import PorterStemmer, LancasterStemmer from nltk.tokenize import word_tokenize from nltk.corpus import stopwords nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) # Create a Porter Stemmer instance porter_stemmer = PorterStemmer() # Create a Lancaster Stemmer instance lancaster_stemmer = LancasterStemmer() text = "Stemming is an essential technique for natural language processing." text = text.lower() tokens = word_tokenize(text) # Filter out the stop words tokens = [token for token in tokens if token.lower() not in stop_words] # Apply stemming to each token porter_stemmed_tokens = [porter_stemmer.stem(token) for token in tokens] lancaster_stemmed_tokens = [lancaster_stemmer.stem(token) for token in tokens] # Display the results print("Original Tokens:", tokens) print("Stemmed Tokens (Porter Stemmer):", porter_stemmed_tokens) print("Stemmed Tokens (Lancaster Stemmer):", lancaster_stemmed_tokens)
copy

Per prima cosa è stata applicata la tokenizzazione, poi sono state filtrate le stop word e infine è stato applicato lo stemming ai token utilizzando la list comprehension. Per quanto riguarda i risultati, questi due stemmer hanno prodotto risultati piuttosto diversi. Questo perché il Lancaster Stemmer possiede circa il doppio delle regole rispetto al Porter Stemmer ed è uno degli stemmer più "aggressivi".

Note
Nota

Nel complesso, il Porter Stemmer è l'opzione più popolare, producendo risultati più significativi rispetto al Lancaster Stemmer, che tende a ridurre eccessivamente le parole.

question mark

Quali delle seguenti affermazioni sui Porter e Lancaster stemmer sono vere?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 1

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

bookStemming

Scorri per mostrare il menu

Comprendere lo Stemming

Note
Definizione

Lo stemming è una tecnica di normalizzazione del testo utilizzata nell'NLP per ridurre le parole flesse al loro stelo.

Per essere più precisi, lo stemming consiste nella rimozione degli affissi (solitamente solo suffissi) dalle parole per ottenere la loro forma radice, nota come stelo. Ad esempio, gli steli di "running", "runs" e "run" sono tutti "run".

Lo scopo dello stemming è semplificare l'analisi trattando parole simili come la stessa entità, migliorando così l'efficienza in vari compiti di NLP.

Stemming con NLTK

NLTK offre diversi algoritmi di stemming, tra cui i più popolari sono il Porter Stemmer e il Lancaster Stemmer. Questi algoritmi applicano regole specifiche per rimuovere affissi e ricavare la radice di una parola.

Tutte le classi di stemmer in NLTK condividono una stessa interfaccia. Prima è necessario creare un'istanza della classe stemmer e poi utilizzare il suo metodo stem() per ciascuno dei token.

1234567891011121314151617181920212223242526272829
import nltk from nltk.stem import PorterStemmer, LancasterStemmer from nltk.tokenize import word_tokenize from nltk.corpus import stopwords nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) # Create a Porter Stemmer instance porter_stemmer = PorterStemmer() # Create a Lancaster Stemmer instance lancaster_stemmer = LancasterStemmer() text = "Stemming is an essential technique for natural language processing." text = text.lower() tokens = word_tokenize(text) # Filter out the stop words tokens = [token for token in tokens if token.lower() not in stop_words] # Apply stemming to each token porter_stemmed_tokens = [porter_stemmer.stem(token) for token in tokens] lancaster_stemmed_tokens = [lancaster_stemmer.stem(token) for token in tokens] # Display the results print("Original Tokens:", tokens) print("Stemmed Tokens (Porter Stemmer):", porter_stemmed_tokens) print("Stemmed Tokens (Lancaster Stemmer):", lancaster_stemmed_tokens)
copy

Per prima cosa è stata applicata la tokenizzazione, poi sono state filtrate le stop word e infine è stato applicato lo stemming ai token utilizzando la list comprehension. Per quanto riguarda i risultati, questi due stemmer hanno prodotto risultati piuttosto diversi. Questo perché il Lancaster Stemmer possiede circa il doppio delle regole rispetto al Porter Stemmer ed è uno degli stemmer più "aggressivi".

Note
Nota

Nel complesso, il Porter Stemmer è l'opzione più popolare, producendo risultati più significativi rispetto al Lancaster Stemmer, che tende a ridurre eccessivamente le parole.

question mark

Quali delle seguenti affermazioni sui Porter e Lancaster stemmer sono vere?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 1
some-alt