Stemming – czyli próba algorytmicznego uzyskania podstawowej formy słowa

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

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *