Stemming to technika polegająca na wykorzystaniu algorytmów (z wykorzystaniem konkretnych reguł) do uzyskania podstawowej formy słowa. Przykładowo słowem podstawowym dla słowa koty będzie kot. Podobnie dla słowa chłopięcy, będzie to słowo chłopak. Niestety z racji dużego skomplikowania języków stemming okazuje się nie najlepszym wyborem, z racji na jego nieodporność na wyjątki.
Najpopularniejsze algorytmy
Porter Stemmer
Jest to algorytm wymyślony poprzez Martina Portera w 1980 roku. Przykładowe wyniki algorytmu:
from nltk.stem.porter import PorterStemmer
p_stemmer = PorterStemmer()
words = ['run', 'runner', 'ran', 'runs', 'easily', 'fairly', 'dummiest']
def show_stems(text):
for word in words:
print(f'{word:{12}} {p_stemmer.stem(word)}')
show_stems(words)run run
runner runner
ran ran
runs run
easily easili
fairly fairli
dummiest dummiest
Snowball Stemmer
Jest ulepszona wersja algorytmu Porter Stemmer, stworzona także przez Martina Portera. Przykładowe wyniki algorytmu:
from nltk.stem.snowball import SnowballStemmer
s_stemmer = SnowballStemmer(language='english')
words = ['run', 'runner', 'ran', 'runs', 'easily', 'fairly', 'dummiest']
def show_stems(text):
for word in words:
print(f'{word:{12}} {s_stemmer.stem(word)}')
show_stems(words)run run
runner runner
ran ran
runs run
easily easili
fairly fair
dummiest dummiest
