Code
nlp
import nltk
from nltk.stem import PorterStemmer, SnowballStemmer, WordNetLemmatizer
nltk.download("wordnet", quiet=True)
nltk.download("omw-1.4", quiet=True)
words = ["running", "ran", "runs", "easily", "fairly", "studies"]
# Porter stemmer
porter = PorterStemmer()
print([porter.stem(w) for w in words])
# Snowball stemmer (more aggressive, supports languages)
snow = SnowballStemmer("english")
print([snow.stem(w) for w in words])
# Lemmatization produces real words using POS
lemma = WordNetLemmatizer()
print([lemma.lemmatize(w) for w in words])
print([lemma.lemmatize(w, pos="v") for w in words]) # as verbs
# spaCy lemmatization with context-aware POS
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("The mice were running quickly.")
print([t.lemma_.lower() for t in doc])