Apa itu stemming?

29 November 2023

Penyusun

Jacob Murel Ph.D.

Senior Technical Content Creator

Eda Kavlakoglu

Program Manager

Stemming adalah salah satu dari beberapa teknik normalisasi teks yang mengubah data teks mentah menjadi format yang dapat dibaca untuk tugas pemrosesan bahasa alami.

Stemming adalah teknik prapemrosesan teks dalam Pemrosesan Bahasa Alami (NLP). Secara khusus, ini adalah proses mengurangi bentuk infleksi dari sebuah kata menjadi satu yang disebut "stem", atau bentuk dasar, yang juga dikenal sebagai "lema" dalam linguistik.1 Ini adalah salah satu dari dua metode utama—yang lainnya adalah lematisasi— yang mengurangi varian infleksional dalam kumpulan data teks menjadi satu leksem morfologis. Dengan demikian, stemming bertujuan untuk meningkatkan pemrosesan teks dalam machine learning dan sistem pengambilan informasi.

Mengapa menggunakan stemming?

Mesin, dari fungsi pencarian dan penemuan hingga model pembelajaran mendalam, memproses bahasa sebagian besar menurut bentuknya, dan banyak peneliti berpendapat bahwa komputer tidak dapat memahami makna dalam bahasa.2 Sementara beberapa orang memperdebatkan poin terakhir ini, tetap saja model machine learning perlu dilatih untuk mengenali kata-kata yang berbeda sebagai varian morfologis dari satu kata dasar. Misalnya, dalam mesin pencari atau katalog perpustakaan, pengguna dapat mengirimkan kueri dengan satu kata (misalnya, investing) tetapi mengharapkan hasil yang menggunakan bentuk kata apa pun yang mengalami infleksi (misalnya, invest, investment, investments, dll). Dengan mengurangi bentuk kata derivasional menjadi satu kata dasar, stemming membantu sistem pencarian informasi menyamakan kata-kata yang berhubungan secara morfologis.3

Untuk banyak tugas penambangan teks termasuk klasifikasi teks, pengelompokan, pengindeksan, dan lainnya, stemming membantu meningkatkan akurasi dengan mengecilkan dimensionalitas algoritma machine learning dan mengelompokkan kata menurut konsep. Pengurangan dimensionalitas algoritma dapat meningkatkan akurasi dan presisi model NLP statistik, seperti model topik dan penyisipan kata.4 Dengan demikian, stemming meningkatkan akurasi saat menjalankan berbagai tugas NLP, seperti analisis sentimen penandaan part of speech. Dengan cara ini, stemming berfungsi sebagai langkah penting dalam mengembangkan model bahasa besar.

Desain 3D bola yang menggelinding di lintasan

Berita + Insight AI terbaru 


Temukan insight dan berita yang dikurasi oleh para pakar tentang AI, cloud, dan lainnya di Buletin Think mingguan. 

Cara kerja stemming

Stemming adalah salah satu tahap dalam pipeline penambangan teks yang mengubah data teks mentah menjadi format terstruktur untuk pemrosesan mesin. Stemming pada dasarnya menghapus afiks dari kata, hanya menyisakan bentuk dasar.5 Ini berarti menghapus karakter dari akhir token kata. Namun, di luar kesamaan dasar ini, algoritma stemming sangat bervariasi.

Mixture of Experts | Podcast

Decoding AI: Rangkuman Berita Mingguan

Bergabunglah dengan panel insinyur, peneliti, pemimpin produk, dan sosok kelas dunia lainnya selagi mereka mengupas tuntas tentang AI untuk menghadirkan berita dan insight terbaru seputar AI.

Jenis algoritma stemming

Untuk mengeksplorasi perbedaan antara operasi algoritma stemming, kita dapat memproses baris ini dari A Midsummer Night's Dream karya Shakespeare: "Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind." Sebelum melakukan stemming, pengguna harus menandai data teks mentah. Tokenizer bawaan toolkit bahasa alami Python (NLTK) menghasilkan teks yang dikutip sebagai:

Tokenized: ['Love', 'looks', 'not', 'with', 'the', 'eyes', 'but', 'with', 'the', 'mind', ',', 'and', 'therefore', 'is', 'winged', 'Cupid', 'painted', 'blind', '.']

Dengan menjalankan output token melalui beberapa stemmer, kita dapat mengamati bagaimana algoritma stemming berbeda.

Lovins stemmer

Stemmer Lovins adalah algoritma stemming pertama yang diterbitkan. Pada dasarnya, ini berfungsi sebagai fungsi temukan dan ganti yang sangat parametris. Ini membandingkan setiap token input dengan daftar sufiks umum, dengan setiap sufiks dikondisikan oleh salah satu dari 29 aturan. Jika salah satu sufiks daftar ditemukan dalam token, dan menghapus sufiks tidak melanggar salah satu kondisi sufiks terkait, algoritma akan menghapus sufiks itu dari token. Token bertangkai kemudian dijalankan melalui serangkaian aturan lain, mengoreksi malformasi umum pada akar bertangkai, seperti huruf ganda (misalnya, hopping menjadi hopp menjadi hop).6

 Kode ini menggunakan pustaka stemming Python,7untuk membendung kutipan Shakespeare yang ditokenisasi:

from stemming.lovins import stem
from nltk.tokenize import word_tokenize
text = "Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind."
words = word_tokenize(text)
stemmed_words = [stem(word) for word in words]

Output kode:

Stemmed: ['Lov', 'look', 'not', 'with', 'th', 'ey', 'but', 'with', 'th', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'Cupid', 'paint', 'blind', '.']

Hasil menunjukkan bagaimana stemmer Lovins mengubah konjugasi dan bentuk kata menjadi bentuk dasar dengan tepat (misalnya, painted menjadi paint) sekaligus menghilangkan bentuk jamak (misalnya, eyes menjadi eye). Tetapi algoritma stemming Lovins juga mengembalikan sejumlah kata dasar yang salah bentuk, seperti lov, th, dan ey. Kata-kata dasar yang tidak berbentuk ini dihasilkan dari penghapusan terlalu banyak karakter. Seperti yang sering terjadi dalam machine learning, kesalahan seperti itu membantu mengungkapkan proses yang mendasarinya.

Jika dibandingkan dengan daftar sufiks dari stemmer Lovins, sufiks terpanjang yang sesuai dengan love dan the adalah -e yang hanya terdiri dari satu karakter. Satu-satunya syarat yang melekat pada sufiks ini adalah "Tidak ada batasan pada stem," yang berarti stemmer dapat menghapus -e berapa pun panjang stem yang tersisa. Sayangnya, tidak satu pun dari stem lov atau th yang mengandung karakteristik apa pun yang digunakan algoritma Lovins untuk mengidentifikasi kata-kata yang salah bentuk, seperti huruf ganda atau bentuk jamak yang tidak beraturan.8

Ketika kata dasar yang cacat tersebut lolos dari algoritma, stemmer Lovins dapat mengurangi kata-kata yang secara semantik tidak berhubungan dengan kata dasar yang sama - misalnya, the, these, dan this semuanya dikurangi menjadi th. Tentu saja, ketiga kata ini adalah demonstratif, dan memiliki fungsi tata bahasa yang sama. Tetapi kata demonstratif lainnya, seperti that dan those, tidak dapat direduksi menjadi th. Ini berarti stem yang dihasilkan Lovins tidak mewakili kelompok kata dengan benar.

Porter stemmer

Dibandingkan dengan stemmer Lovins, algoritma stemming Porter menggunakan algoritma stemming yang lebih matematis. Pada dasarnya, stemmer ini mengklasifikasikan setiap karakter dalam token yang diberikan sebagai konsonan (c) atau vokal (v), mengelompokkan konsonan berikutnya sebagai C dan vokal berikutnya sebagai V. Stemmer dengan demikian mewakili setiap token kata sebagai kombinasi dari kelompok konsonan dan vokal. Setelah dihitung dengan cara ini, stemmer menjalankan setiap token kata melalui daftar aturan yang menentukan karakter akhir yang akan dihapus sesuai dengan jumlah kelompok vokal-konsonan dalam token.9 Karena bahasa Inggris sendiri mengikuti aturan leksikal yang umum tetapi tidak mutlak, kriteria sistematis algoritma Porter stemmer untuk menentukan penghilangan sufiks bisa saja menghasilkan kesalahan.

Python NLTK berisi fungsi stemmer Porter bawaan. Kode ini menerapkan algoritma stemming Porter pada kutipan Shakespeare yang diberi token:

from nltk.stem import PorterStemmer
from nltk.tokenize import word_tokenize
porter_stemmer = PorterStemmer()
text = "Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind."
words = word_tokenize(text)
stemmed_words = [porter_stemmer.stem(word) for word in words]

Kode ini mengembalikan:

Stemmed: ['love', 'look', 'not', 'with', 'the', 'eye', 'but', 'with', 'the', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'cupid', 'paint', 'blind', '.']

Seperti halnya Lovins, Porter dengan benar mengubah konjugasi kata kerja dan pluralisasi kata benda. Meskipun tidak memiliki batang Lovins yang cacat lainnya (misalnya, love menjadi lov), algoritma yang berasal dari Porter secara keliru menghapus -e dari akhir therefore.

Berdasarkan metode pengelompokan konsonan-vokal stemmer Porter, therefore direpresentasikan sebagai CVCVCVCV, atau C(VC)3V, dengan eksponen yang menandakan pengulangan kelompok konsonan-vokal.

Salah satu langkah terakhir algoritma menyatakan bahwa, jika sebuah kata belum mengalami stemming dan memiliki nilai eksponen lebih besar dari 1, -e akan dihilangkan dari akhiran kata tersebut (jika ada). Nilai eksponen therefore sama dengan 3, dan tidak mengandung sufiks yang tercantum dalam kondisi lain algoritma.10 Oleh karena itu, therefore menjadi therefor.

Harus diakui, ini adalah satu-satunya kesalahan dari stemmer Porter, yang mungkin menjadi bukti mengapa algoritma ini merupakan algoritma stemming yang paling banyak diadopsi. Memang, stemmer Porter telah berfungsi sebagai dasar untuk algoritma stemming berikutnya.

Snowball stemmer

Stemmer Snowball adalah versi terbaru dari stemmer Porter. Meskipun bertujuan untuk menerapkan seperangkat aturan yang lebih kuat untuk menentukan penghapusan akhiran, tetapi tetap saja stemmer ini masih rentan terhadap banyak kesalahan yang sama. Sama seperti stemmer Porter, Python NLTK berisi fungsi stemmer Snowball bawaan:

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]

Ini menghasilkan hasil yang sama dari teks Shakespeare dengan stemmer Porter, secara salah mengurangi therefore menjadi therefor:

Stemmed: ['love', 'look', 'not', 'with', 'the', 'eye', 'but', 'with', 'the', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'cupid', 'paint', 'blind', '.']

Stemmer Snowball berbeda dari Porter dalam dua hal utama. Pertama, sementara stemmer Lovins dan Porter hanya stemming dari kata-kata bahasa Inggris, stemmer Snowball dapat menyusun teks dalam sejumlah bahasa aksara Romawi lainnya, seperti Belanda, Jerman, Prancis, dan bahkan Rusia. Kedua, stemmer Snowball, ketika diimplementasikan melalui pustaka Python NLTK, dapat mengabaikan stopword. Stopword adalah kumpulan kata non-universal yang dihapus dari kumpulan data selama prapemrosesan. Stoplist yang telah ditentukan sebelumnya dari stemmer Snowball berisi kata-kata tanpa definisi konseptual langsung dan yang lebih berfungsi sebagai fungsi tata bahasa daripada semantik. Stopwords yang termasuk dalam stoplist bahasa Inggris stemmer Snowball meliputi the, a, being, dan sejenisnya.11

Lancaster stemmer

Banyak sumber yang menggambarkan stemmer Lancaster—juga dikenal sebagai stemmer Paice—sebagai stemmer bahasa Inggris yang paling agresif. Stemmer Lancaster berisi daftar lebih dari 100 aturan yang menentukan string karakter akhir mana, jika ada, yang harus diganti dengan string lain, jika ada. Stemmer mengulangi setiap token kata, memeriksanya terhadap semua aturan. Jika string akhir token cocok dengan aturan, algoritma akan memberlakukan operasi yang dijelaskan oleh aturan dan kemudian menjalankan kata baru yang telah ditransformasi melalui semua aturan lagi. Stemmer mengulangi semua aturan sampai token yang diberikan melewati semua aturan tanpa diubah.12

Meskipun tidak tersedia di Python NLTK, stemmer Lancaster tersedia di pustaka stemming:13

from stemming.paicehusk import stem
from nltk.tokenize import word_tokenize
text = "Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind."
words = word_tokenize(text)
stemmed_words = [stem(word) for word in words]

Kode tersebut melakukan stemming pada paragraf Shakespeare yang diberi token sebagai:

Stemmed: ['Lov', 'look', 'not', 'with', 'the', 'ey', 'but', 'with', 'the', 'mind', ',', 'and', 'theref', '', 'wing', 'Cupid', 'paint', 'blind', '.']

Jelas, pendekatan berulang stemmer Lancaster adalah yang paling agresif dari stemmer, seperti yang ditunjukkan dengan theref. Pertama, stemmer Lancaster memiliki aturan "e1>". Aturan ini menghapus karakter tunggal ­-e tanpa pengganti. Setelah algoritma menghapus -e dari therefore, ia menjalankan therefor yang baru melalui setiap aturan. Kata yang baru diubah sesuai dengan aturan "ro2>." Aturan ini menghapus akhiran dua karakter -or tanpa pengganti. Stem yang dihasilkan theref tidak cocok dengan aturan lain algoritma dan karenanya dikembalikan sebagai basis stem. Tidak seperti Lovins, algoritma Lancaster tidak memiliki sarana untuk memperhitungkan kata-kata yang cacat.

Batasan stemming

Dukungan bahasa

Ada banyak stemmer bahasa Inggris, serta stemmer untuk bahasa skrip Romawi lainnya. Baru-baru ini, penelitian telah beralih ke pengembangan dan evaluasi algoritma stemming untuk bahasa skrip non-Romawi. Bahasa Arab, khususnya, dapat menjadi tantangan karena morfologi dan variasi ortografinya yang kompleks. Beberapa penelitian membandingkan kemanjuran stemmer bahasa Arab yang berbeda dalam kaitannya dengan tugas-tugas seperti klasifikasi.14 Selain itu, para peneliti menyelidiki akurasi stemming dalam meningkatkan tugas pencarian informasi dalam bahasa Tamil15 dan Sansekerta.16

Over-stemming and under-stemming

Sementara penelitian membuktikan peran stemming dalam meningkatkan akurasi tugas NLP, stemming memang memiliki dua masalah utama yang perlu diperhatikan pengguna. Over-stemming adalah ketika dua kata yang berbeda secara semantik direduksi menjadi akar yang sama, dan digabungkan dengan demikian. Under-stemming menandakan ketika dua kata yang terkait secara semantik tidak direduksi menjadi akar yang sama.17 Contoh dari over-stemming adalah pengurangan stemmer Lancaster dari wander menjadi wand, dua istilah yang berbeda secara semantik dalam bahasa Inggris. Baik stemmer Porter dan Lovins tidak mengubah wander sama sekali. Contoh under-stemming adalah non-reduksi stemmer Porter dari knavish ke knavish dan knave ke knave, yang memiliki akar semantik yang sama. Sebagai perbandingan, stemmer Lovins mengurangi kedua kata menjadi knav.

Formasi dasar

Meskipun memiliki penggunaan dan tujuan yang sama, stemming dan lematisasi berbeda dalam beberapa hal kecil tetapi penting. Literatur sering menggambarkan stemming sebagai proses yang lebih heuristik, yang pada dasarnya melucuti sufiks umum dari kata-kata untuk menghasilkan akar kata. Lematisasi, sebagai perbandingan, melakukan analisis morfologi yang lebih terperinci dari kata-kata yang berbeda untuk menentukan bentuk kata dasar kamus, tidak hanya menghilangkan sufiks, tetapi juga prefiks. Meskipun stemming lebih cepat dan lebih mudah diimplementasikan, banyak pengembang alat pembelajaran mendalam mungkin lebih memilih lematisasi karena proses pengupasannya yang lebih bernuansa.

Solusi terkait
IBM watsonx Orchestrate

Rancang asisten dan agen AI yang dapat diskalakan dengan mudah, otomatiskan tugas berulang, dan sederhanakan proses kompleks dengan IBM watsonx Orchestrate.

Temukan watsonx Orchestrate
Alat dan API pemrosesan bahasa alami

Mempercepat nilai bisnis kecerdasan buatan dengan portofolio pustaka, layanan, dan aplikasi yang kuat dan fleksibel.

Jelajahi solusi NLP
Konsultasi dan layanan AI

Temukan kembali alur kerja dan operasi yang penting dengan menambahkan AI untuk memaksimalkan pengalaman, pengambilan keputusan secara real-time, dan nilai bisnis.

Jelajahi layanan AI
Ambil langkah selanjutnya

Rancang asisten dan agen AI yang dapat diskalakan dengan mudah, otomatiskan tugas berulang, dan sederhanakan proses kompleks dengan IBM watsonx Orchestrate.

Temukan watsonx Orchestrate Jelajahi solusi NLP
Catatan kaki

1 Ruslan Mitkov, Oxford Handbook of Computational Linguistics, Edisi ke-2, Oxford University Press, 2014.

2 Emily Bender and Alexander Koller, “Climbing towards NLU: On Meaning, Form, and Understanding in the Age of Data,” Prosiding 58th Annual Meeting of the Association for Computational Linguistics, 2020 , hlm. 5185-5198 , https://aclanthology.org/2020.acl-main.463

3 Steven Bird, Ewan Klein, dan Edward Loper, Natural Language Processing with Python, O’Reilley, 2009.

4 Gary Miner, Dursun Delen, John Elder, Andrew Fast, Thomas Hill, dan Robert A. Nisbet, Practical Text Mining and Statistical Analysis for Non-Structured Text Data Applications, Academic Press, 2012.

5 Christopher Manning dan Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 1999.

6 Julie Beth Lovins, "Development of a stemming algorithm," Mechanical Translation and Computational Linguistics, Vol. 11, No. 1 dan 2, 1968, hlm. 22-31, https://aclanthology.org/www.mt-archive.info/MT-1968-Lovins.pdf

7, 13 https://pypi.org/project/stemming/1.0

8 Julie Beth Lovins, "Development of a stemming algorithm," Mechanical Translation and Computational Linguistics, Vol. 11, No. 1 dan 2, 1968, hlm. 22-31, https://aclanthology.org/www.mt-archive.info/MT-1968-Lovins.pdf

9 Martin Porter, "An algorithm for suffix stripping", Program: electronic library and information systems, Vol. 14, No. 3, 1980, hlm. 130-137, https://www.emerald.com/insight/content/doi/10.1108/eb046814/full/html 

10 Martin Porter, "An algorithm for suffix stripping", Program: electronic library and information systems, Vol. 14, No. 3, 1980, hlm. 130-137, https://www.emerald.com/insight/content/doi/10.1108/eb046814/full/html 

11 Martin Porter, “Snowball: A language for stemming algorithms,” 2001, https://snowballstem.org/texts/introduction.html

12 Chris Paice, “Another stemmer," ACM SIGIR Forum, Vol. 24, No. 3, 1990, hlm.56-61, https://dl.acm.org/doi/10.1145/101306.101310

14 Y. A. Alhaj, J. Xiang, D. Zhao, M. A. A. Al-Qaness, M. Abd Elaziz dan A. Dahou, "A Study of the Effects of Stemming Strategies on Arabic Document Classification," IEEE Access, Vol. 7, hlm. 32664-32671, https://ieeexplore.ieee.org/document/8664087. Janneke van der Zwaan, Maksim Abdul Latif, Dafne van Kuppevelt, Melle Lyklema, Christian Lange, "Are you sure your tool does what it is supposed to do? Validating Arabic root extraction," Digital Scholarship in the Humanities, Vol.36, 2021, hlm.137-150, https://academic.oup.com/dsh/article/36/Supplement_1/i137/5545478

15 Ratnavel Rajalakshmi, Srivarshan Selvaraj, Faerie Mattins, Pavitra Vasudevan, Anand Kumar, "HOTTEST: Hate and Offensive content identification in Tamil using Transformers and Enhanced Stemming," Computer Speech & Language, Vol. 78, 2023, https://www.sciencedirect.com/science/article/abs/pii/S0885230822000870?via%3Dihub

16 Siba Sankar Sahu and Sukomal Pal, "Building a text retrieval system for the Sanskrit language: Exploring indexing, stemming, and searching issues," Computer Speech & Language, Vol. 81, 2023, https://www.sciencedirect.com/science/article/abs/pii/S0885230823000372?via%3Dihub

17 Chris Paice, “Stemming,” Encyclopedia of Database Systems, Springer, 2020.