Stemming & Lemmatization
Apa itu Stemming?
Stemming adalah teknik yang digunakan untuk mengekstrak bentuk dasar kata dengan menghilangkan imbuhan dari kata tersebut. Ini seperti menebang dahan pohon ke batangnya. Misalnya, akar kataeating, eats, eaten adalah eat.
Mesin pencari menggunakan stemming untuk mengindeks kata-kata. Itulah mengapa daripada menyimpan semua bentuk kata, mesin pencari hanya dapat menyimpan akarnya. Dengan cara ini, stemming mengurangi ukuran indeks dan meningkatkan akurasi pengambilan.
Berbagai algoritma Stemming
Di NLTK, stemmerI, yang memiliki stem()metode, antarmuka memiliki semua stemmer yang akan kita bahas selanjutnya. Mari kita pahami dengan diagram berikut
Algoritma stemming porter
Ini adalah salah satu algoritma stemming yang paling umum yang pada dasarnya dirancang untuk menghapus dan mengganti sufiks kata-kata bahasa Inggris yang terkenal.
Kelas PorterStemmer
NLTK memiliki PorterStemmerkelas dengan bantuan yang kita dapat dengan mudah menerapkan algoritma Porter Stemmer untuk kata yang ingin kita stem. Kelas ini mengetahui beberapa bentuk kata biasa dan sufiks dengan bantuan yang dapat mengubah kata masukan menjadi akar akhir. Akar yang dihasilkan seringkali merupakan kata yang lebih pendek yang memiliki arti akar yang sama. Mari kita lihat contohnya -
Pertama, kita perlu mengimpor toolkit bahasa alami (nltk).
import nltk
Sekarang, impor file PorterStemmer kelas untuk mengimplementasikan algoritma Porter Stemmer.
from nltk.stem import PorterStemmer
Selanjutnya, buat instance kelas Porter Stemmer sebagai berikut -
word_stemmer = PorterStemmer()
Sekarang, masukkan kata yang ingin Anda batang.
word_stemmer.stem('writing')
Keluaran
'write'
word_stemmer.stem('eating')
Keluaran
'eat'
Contoh implementasi lengkap
import nltk
from nltk.stem import PorterStemmer
word_stemmer = PorterStemmer()
word_stemmer.stem('writing')
Keluaran
'write'
Algoritma stemming Lancaster
Ini dikembangkan di Lancaster University dan merupakan algoritma stemming yang sangat umum.
Kelas LancasterStemmer
NLTK memiliki LancasterStemmerkelas dengan bantuan yang kita dapat dengan mudah menerapkan algoritma Lancaster Stemmer untuk kata yang ingin kita stem. Mari kita lihat contohnya -
Pertama, kita perlu mengimpor toolkit bahasa alami (nltk).
import nltk
Sekarang, impor file LancasterStemmer kelas untuk mengimplementasikan algoritma Lancaster Stemmer
from nltk.stem import LancasterStemmer
Selanjutnya, buat instance LancasterStemmer kelas sebagai berikut -
Lanc_stemmer = LancasterStemmer()
Sekarang, masukkan kata yang ingin Anda batang.
Lanc_stemmer.stem('eats')
Keluaran
'eat'
Contoh implementasi lengkap
import nltk
from nltk.stem import LancatserStemmer
Lanc_stemmer = LancasterStemmer()
Lanc_stemmer.stem('eats')
Keluaran
'eat'
Algoritme stemming Ekspresi Reguler
Dengan bantuan algoritma stemming ini, kita dapat membuat stemmer kita sendiri.
RegexpStemmer
NLTK memiliki RegexpStemmerkelas dengan bantuan yang kita dapat dengan mudah menerapkan algoritma Regular Expression Stemmer. Ini pada dasarnya mengambil satu ekspresi reguler dan menghapus awalan atau sufiks yang cocok dengan ekspresi tersebut. Mari kita lihat contohnya -
Pertama, kita perlu mengimpor toolkit bahasa alami (nltk).
import nltk
Sekarang, impor file RegexpStemmer kelas untuk mengimplementasikan algoritma Regular Expression Stemmer.
from nltk.stem import RegexpStemmer
Selanjutnya, buat instance RegexpStemmer kelas dan memberikan sufiks atau awalan yang ingin Anda hapus dari kata sebagai berikut -
Reg_stemmer = RegexpStemmer(‘ing’)
Sekarang, masukkan kata yang ingin Anda batang.
Reg_stemmer.stem('eating')
Keluaran
'eat'
Reg_stemmer.stem('ingeat')
Keluaran
'eat'
Reg_stemmer.stem('eats')
Keluaran
'eat'
Contoh implementasi lengkap
import nltk
from nltk.stem import RegexpStemmer
Reg_stemmer = RegexpStemmer()
Reg_stemmer.stem('ingeat')
Keluaran
'eat'
Algoritma batang bola salju
Ini adalah algoritma stemming yang sangat berguna.
Kelas SnowballStemmer
NLTK memiliki SnowballStemmerkelas dengan bantuan yang kita dapat dengan mudah menerapkan algoritma Snowball Stemmer. Ini mendukung 15 bahasa non-Inggris. Untuk menggunakan kelas pengukusan ini, kita perlu membuat sebuah instance dengan nama bahasa yang kita gunakan dan kemudian memanggil metode stem (). Mari kita lihat contohnya -
Pertama, kita perlu mengimpor toolkit bahasa alami (nltk).
import nltk
Sekarang, impor file SnowballStemmer kelas untuk mengimplementasikan algoritma Snowball Stemmer
from nltk.stem import SnowballStemmer
Mari kita lihat bahasa yang didukungnya -
SnowballStemmer.languages
Keluaran
(
'arabic',
'danish',
'dutch',
'english',
'finnish',
'french',
'german',
'hungarian',
'italian',
'norwegian',
'porter',
'portuguese',
'romanian',
'russian',
'spanish',
'swedish'
)
Selanjutnya, buat instance kelas SnowballStemmer dengan bahasa yang ingin Anda gunakan. Di sini, kami membuat stemmer untuk bahasa 'Prancis'.
French_stemmer = SnowballStemmer(‘french’)
Sekarang, panggil metode stem () dan masukkan kata yang ingin Anda stem.
French_stemmer.stem (‘Bonjoura’)
Keluaran
'bonjour'
Contoh implementasi lengkap
import nltk
from nltk.stem import SnowballStemmer
French_stemmer = SnowballStemmer(‘french’)
French_stemmer.stem (‘Bonjoura’)
Keluaran
'bonjour'
Apa itu lemmatisasi?
Teknik lemmatisasi seperti stemming. Output yang akan kita peroleh setelah lemmatization disebut 'lemma', yang merupakan kata dasar daripada akar kata, keluaran dari stemming. Setelah lemmatisasi, kita akan mendapatkan kata valid yang artinya sama.
NLTK menyediakan WordNetLemmatizer kelas yang merupakan pembungkus tipis di sekitar wordnetkorpus. Kelas ini menggunakanmorphy() berfungsi ke WordNet CorpusReaderkelas untuk menemukan lemma. Mari kita pahami dengan sebuah contoh -
Contoh
Pertama, kita perlu mengimpor toolkit bahasa alami (nltk).
import nltk
Sekarang, impor file WordNetLemmatizer kelas untuk menerapkan teknik lemmatization.
from nltk.stem import WordNetLemmatizer
Selanjutnya, buat instance WordNetLemmatizer kelas.
lemmatizer = WordNetLemmatizer()
Sekarang, panggil metode lemmatize () dan masukkan kata yang ingin Anda temukan lemma.
lemmatizer.lemmatize('eating')
Keluaran
'eating'
lemmatizer.lemmatize('books')
Keluaran
'book'
Contoh implementasi lengkap
import nltk
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize('books')
Keluaran
'book'
Perbedaan antara Stemming & Lemmatization
Mari kita pahami perbedaan antara Stemming dan Lemmatization dengan bantuan contoh berikut -
import nltk
from nltk.stem import PorterStemmer
word_stemmer = PorterStemmer()
word_stemmer.stem('believes')
Keluaran
believ
import nltk
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize(' believes ')
Keluaran
believ
Output dari kedua program menunjukkan perbedaan utama antara stemming dan lemmatization. PorterStemmerkelas memotong 'es' dari kata. Di samping itu,WordNetLemmatizerkelas menemukan kata yang valid. Secara sederhana, teknik stemming hanya melihat pada bentuk kata sedangkan teknik lemmatisasi melihat pada arti kata tersebut. Artinya setelah menerapkan lemmatization, kita akan selalu mendapatkan kata yang valid.