Algoritma stemming sangat berbeda, meskipun mereka memiliki beberapa mode operasi yang umum. Stemmer menghilangkan sufiks kata dengan menjalankan token kata input terhadap daftar sufiks umum yang telah ditentukan sebelumnya. Stemmer kemudian menghapus semua string karakter sufiks yang ditemukan dari kata tersebut, jika sufiks tersebut tidak melanggar aturan atau ketentuan yang melekat pada sufiks tersebut. Beberapa stemmer (misalnya, Lovins stemmer) menjalankan bit-bit yang dihasilkan melalui seperangkat aturan tambahan untuk mengoreksi akar kata yang cacat.
Algoritma yang paling banyak digunakan adalah algoritma Porter stemming, dan versi yang diperbarui adalah Snowball stemmer. Untuk lebih memahami stemming, kita dapat menjalankan paragraf berikut dari Hamlet karya Shakespeare melalui Snowball stemmer: "There is nothing either good or bad but thinking makes it so.”
Toolkit bahasa alami Python (NLTK) berisi fungsi bawaan untuk Snowball dan Porter stemmer. Setelah melakukan tokenisasi pada kutipan Hamlet menggunakan NLTK, kita dapat meneruskan teks yang telah ditokenisasi melalui Snowball stemmer menggunakan kode ini:
from nltk.stem.snowball import SnowballStemmer
from nltk.tokenize import word_tokenize
stemmer = SnowballStemmer("english", True)
text = "There is nothing either good or bad but thinking makes it so."
words = word_tokenize(text)
stemmed_words = [stemmer.stem(word) for word in words]
print("Original:", text)
print("Tokenized:", words)
print("Stemmed:", stemmed_words)
Output kode:
Original: There is nothing either good or bad but thinking makes it so.
Tokenized: ['There', 'is', 'nothing', 'either', 'good', 'or', 'bad', 'but', 'thinking', 'makes', 'it', 'so', '.']
Stemmed: ['there', 'is', 'noth', 'either', 'good', 'or', 'bad', 'but', 'think', 'make', 'it', 'so', '.']
Algoritma Snowball dan Porter stemmer memiliki metode yang lebih matematis untuk menghilangkan sufiks daripada stemmer lainnya. Bisa dikatakan, stemmer menjalankan setiap token kata berdasarkan daftar aturan yang menentukan string sufiks yang akan dihapus sesuai dengan jumlah kelompok vokal dan konsonan dalam sebuah token.5 Tentu saja, karena bahasa Inggris mengikuti aturan leksikal yang umum tetapi tidak mutlak, kriteria sistematis algoritma stemming mengembalikan kesalahan, seperti noth.
Stemmer menghilangkan -ing, yang menjadi akhiran umum yang menandakan present progressive. Namun, dalam kutipan Hamlet , menghapus -ing secara keliru menghasilkan noth stemming. Hal ini dapat menghambat analisis linguistik selanjutnya untuk mengasosiasikan nothing dengan kata benda yang serupa, seperti anything dan something. Selain itu, stemmer meninggalkan kata kerja tidak beraturan is berubah. Snowball stemmer juga meninggalkan konjugasi lain dari to be, seperti was dan are, tidak tanpa stemming. Ini dapat menghambat model untuk mengasosiasikan konjugasi tidak teratur dari kata kerja tertentu dengan benar.