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.
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.
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.
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.
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.
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.
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
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.
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
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.
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.
Rancang asisten dan agen AI yang dapat diskalakan dengan mudah, otomatiskan tugas berulang, dan sederhanakan proses kompleks dengan IBM watsonx Orchestrate.
Mempercepat nilai bisnis kecerdasan buatan dengan portofolio pustaka, layanan, dan aplikasi yang kuat dan fleksibel.
Temukan kembali alur kerja dan operasi yang penting dengan menambahkan AI untuk memaksimalkan pengalaman, pengambilan keputusan secara real-time, dan nilai bisnis.
IBM Granite adalah rangkaian model AI kami yang terbuka, berkinerja, dan tepercaya, yang dirancang untuk bisnis dan dioptimalkan untuk menskalakan aplikasi AI Anda. Jelajahi opsi bahasa, kode, deret waktu, dan batasan.
Temukan bagaimana pemrosesan bahasa alami dapat membantu Anda berkomunikasi lebih alami dengan komputer.
Kami menyurvei 2.000 organisasi tentang inisiatif AI mereka untuk mengetahui apa yang berhasil, apa yang tidak, dan cara Anda untuk maju.
Jelajahi situs web IBM Developer untuk mengakses blog, artikel, buletin, dan mempelajari lebih lanjut tentang AI yang dapat disematkan IBM.
Belajar konsep dasar dan bangun keterampilan Anda dengan laboratorium praktis, kursus, proyek terpandu, uji coba, dan lainnya.
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.