Stamming
Forståelse av stemming
Stemming er en tekstnormaliseringsteknikk brukt i NLP for å redusere bøyde ord til deres stamme.
Mer presist innebærer stemming å fjerne affikser (vanligvis bare suffikser) fra ord for å oppnå deres rotform, kjent som stamme. For eksempel er stammen til "running", "runs" og "run" alle "run."
Formålet med stemming er å forenkle analysen ved å behandle lignende ord som samme enhet, noe som til slutt forbedrer effektiviteten i ulike NLP-oppgaver.
Stemming med NLTK
NLTK tilbyr ulike algoritmer for stemming, hvor de mest populære er Porter Stemmer og Lancaster Stemmer. Disse algoritmene bruker spesifikke regler for å fjerne affikser og finne stammen til et ord.
Alle stemmer-klassene i NLTK har et felles grensesnitt. Først må du opprette en instans av stemmer-klassen, og deretter bruke dens stem()-metode for hver av tokenene.
1234567891011121314151617181920212223242526272829import 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)
Først brukte vi tokenisering, deretter filtrerte vi ut stoppordene og til slutt brukte vi stemming på tokenene våre ved hjelp av list comprehension. Når det gjelder resultatene, ga disse to stemmerne ganske forskjellige resultater. Dette skyldes at Lancaster Stemmer har omtrent dobbelt så mange regler som Porter Stemmer og er en av de mest "aggressive" stemmerne.
Generelt er Porter Stemmer det mest populære alternativet og gir mer meningsfulle resultater enn Lancaster Stemmer, som ofte overstammer ord.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 3.45
Stamming
Sveip for å vise menyen
Forståelse av stemming
Stemming er en tekstnormaliseringsteknikk brukt i NLP for å redusere bøyde ord til deres stamme.
Mer presist innebærer stemming å fjerne affikser (vanligvis bare suffikser) fra ord for å oppnå deres rotform, kjent som stamme. For eksempel er stammen til "running", "runs" og "run" alle "run."
Formålet med stemming er å forenkle analysen ved å behandle lignende ord som samme enhet, noe som til slutt forbedrer effektiviteten i ulike NLP-oppgaver.
Stemming med NLTK
NLTK tilbyr ulike algoritmer for stemming, hvor de mest populære er Porter Stemmer og Lancaster Stemmer. Disse algoritmene bruker spesifikke regler for å fjerne affikser og finne stammen til et ord.
Alle stemmer-klassene i NLTK har et felles grensesnitt. Først må du opprette en instans av stemmer-klassen, og deretter bruke dens stem()-metode for hver av tokenene.
1234567891011121314151617181920212223242526272829import 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)
Først brukte vi tokenisering, deretter filtrerte vi ut stoppordene og til slutt brukte vi stemming på tokenene våre ved hjelp av list comprehension. Når det gjelder resultatene, ga disse to stemmerne ganske forskjellige resultater. Dette skyldes at Lancaster Stemmer har omtrent dobbelt så mange regler som Porter Stemmer og er en av de mest "aggressive" stemmerne.
Generelt er Porter Stemmer det mest populære alternativet og gir mer meningsfulle resultater enn Lancaster Stemmer, som ofte overstammer ord.
Takk for tilbakemeldingene dine!