Stemming dan Lemmatisasi di Python NLTK dengan Contoh
โก Ringkasan Cerdas
Stemming dan Lemmatisasi adalah teknik normalisasi teks dalam Python NLTK yang mengurangi variasi kata menjadi basis umum, di mana stemming memangkas sufiks dengan cepat tanpa konteks dan lematisasi mengembalikan kata kamus sejati menggunakan makna.

Apa itu Stemming dan Lemmatisasi Python NLTK?
Stemming dan Lemmatization in Python NLTK adalah teknik normalisasi teks untuk Pemrosesan Bahasa Alami. Teknik ini banyak digunakan untuk pra-pemrosesan teks. Perbedaan antara stemming dan lemmatisasi adalah stemming lebih cepat karena memotong kata tanpa mengetahui konteksnya, sedangkan lemmatisasi lebih lambat karena mengetahui konteks kata sebelum diproses.
Apa itu Stemming?
Suasana hati adalah metode menormalisasi kata-kata dalam Pengolahan Bahasa alamiIni adalah teknik di mana sekumpulan kata dalam sebuah kalimat diubah menjadi urutan untuk mempersingkat pencarian. Dalam metode ini, kata-kata yang memiliki arti yang sama tetapi beberapa variasi sesuai dengan konteks atau kalimat dinormalisasi. Dengan kata lain, ada satu kata dasar, tetapi ada banyak variasi dari kata yang sama. Misalnya, kata dasarnya adalah "makan" dan variasinya adalah "makan", "makan", "dimakan", dan seterusnya. Dengan cara yang sama, dengan bantuan Stemming dalam Python, kita dapat menemukan kata dasar dari variasi apa pun.
Sebagai contoh:
He was riding. He was taking the ride.
Dalam dua kalimat di atas, maknanya sama, yaitu aktivitas berkuda di masa lalu. Manusia dapat dengan mudah memahami bahwa kedua makna tersebut sama. Namun bagi mesin, kedua kalimat tersebut berbeda. Sehingga sulit untuk mengonversinya menjadi baris data yang sama. Jika kita tidak menyediakan dataset yang sama, maka mesin akan gagal memprediksi. Jadi, perlu untuk membedakan makna setiap kata untuk mempersiapkan dataset untuk pembelajaran mesin. Di sini, stemming digunakan untuk mengkategorikan jenis data yang sama dengan mendapatkan kata dasarnya.
Mari kita terapkan ini dengan sebuah Python program. NLTK memiliki algoritma bernama PorterStemmerAlgoritma ini menerima daftar kata yang telah dipecah menjadi token dan mengembalikannya ke kata dasar.
Program Pemahaman Stemming
from nltk.stem import PorterStemmer e_words= ["wait", "waiting", "waited", "waits"] ps =PorterStemmer() for w in e_words: rootWord=ps.stem(w) print(rootWord)
Keluaran:
wait wait wait wait
Code Penjelasan:
- Terdapat modul stem di NLTK yang diimpor. Jika Anda mengimpor seluruh modul, program akan menjadi berat karena berisi ribuan baris kode. Jadi dari seluruh modul stem, kami hanya mengimpor "PorterStemmer".
- Kami menyiapkan daftar dummy data variasi kata yang sama.
- Sebuah objek dibuat yang termasuk dalam kelas nltk.stem.porter.PorterStemmer.
- Kami meneruskannya ke PorterStemmer satu per satu menggunakan perulangan โforโ. Akhirnya, kami mendapatkan kata dasar keluaran dari setiap kata yang disebutkan dalam daftar.
Dari uraian di atas, stemming merupakan langkah pra-pemrosesan yang penting karena menghilangkan redundansi dan variasi dalam kata yang sama. Hasilnya, data tersaring, yang membantu dalam pelatihan mesin yang lebih baik. Sekarang kita akan memasukkan kalimat lengkap dan memeriksa hasilnya.
from nltk.stem import PorterStemmer from nltk.tokenize import sent_tokenize, word_tokenize sentence="Hello Guru99, You have to build a very good site and I love visiting your site." words = word_tokenize(sentence) ps = PorterStemmer() for w in words: rootWord=ps.stem(w) print(rootWord)
Keluaran:
hello
guru99
,
you
have
build
a
veri
good
site
and
I
love
visit
your
site
Code Penjelasan:
- Paket PorterStemmer diimpor dari modul stem.
- Paket untuk tokenisasi kalimat maupun kata diimpor.
- Sebuah kalimat ditulis yang akan diberi token pada langkah berikutnya.
- Objek untuk PorterStemmer dibuat di sini.
- Sebuah perulangan dijalankan dan setiap kata di-stemming menggunakan objek yang dibuat pada baris kode 5.
Singkatnya, stemming adalah modul pra-pemrosesan data. Bahasa Inggris memiliki banyak variasi dari satu kata, yang menciptakan ambiguitas dalam pelatihan dan prediksi pembelajaran mesin. Untuk membangun model yang sukses, sangat penting untuk menyaring kata-kata tersebut ke dalam data berurutan yang sama menggunakan stemming. Ini juga dikenal sebagai normalisasi.
Apa itu Lemmatisasi?
Lemmatisasi Dalam NLTK, lematisasi adalah proses algoritmik untuk menemukan lemma suatu kata berdasarkan makna dan konteksnya. Lematisasi biasanya mengacu pada analisis morfologi kata, yang bertujuan untuk menghilangkan akhiran infleksional. Ini membantu mengembalikan bentuk dasar atau bentuk kamus suatu kata, yang dikenal sebagai lemma. Metode Lematisasi NLTK didasarkan pada fungsi morph bawaan WordNet. Praproses teks mencakup stemming dan lematisasi. Banyak orang menganggap kedua istilah ini membingungkan. Beberapa orang menganggapnya sama, tetapi ada perbedaan antara stemming dan lematisasi. Lematisasi lebih disukai daripada stemming karena alasan berikut.
Mengapa Lemmatisasi lebih baik dibandingkan Stemming?
Algoritma stemming bekerja dengan memotong sufiks dari kata. Secara lebih luas, ia memotong bagian awal atau akhir kata. Sebaliknya, lematisasi adalah operasi yang lebih ampuh, dan mempertimbangkan analisis morfologi kata. Ia mengembalikan lemma, yang merupakan bentuk dasar dari semua bentuk infleksinya. Pengetahuan linguistik yang mendalam diperlukan untuk membuat kamus dan mencari bentuk kata yang tepat. Stemming adalah operasi umum, sedangkan lematisasi adalah operasi cerdas di mana bentuk yang tepat dicari dalam kamus. Oleh karena itu, lematisasi membantu dalam membentuk kata yang lebih baik. Mesin belajar fitur.
Code untuk membedakan antara Lemmatisasi dan Stemming
Suasana hati Code:
import nltk from nltk.stem.porter import PorterStemmer porter_stemmer = PorterStemmer() text = "studies studying cries cry" tokenization = nltk.word_tokenize(text) for w in tokenization: print("Stemming for {} is {}".format(w,porter_stemmer.stem(w)))
Keluaran:
Stemming for studies is studi Stemming for studying is studi Stemming for cries is cri Stemming for cry is cri
Lemmatisasi Code:
import nltk from nltk.stem import WordNetLemmatizer wordnet_lemmatizer = WordNetLemmatizer() text = "studies studying cries cry" tokenization = nltk.word_tokenize(text) for w in tokenization: print("Lemma for {} is {}".format(w, wordnet_lemmatizer.lemmatize(w)))
Keluaran:
Lemma for studies is study Lemma for studying is studying Lemma for cries is cry Lemma for cry is cry
Pembahasan Keluaran
Jika Anda melihat proses stemming untuk kata "studies" dan "studying", hasilnya sama (studi), tetapi lemmatizer NLTK memberikan lemma yang berbeda untuk kedua token tersebut: "study" untuk "studies" dan "studying" untuk "studying". Jadi, ketika kita perlu membuat kumpulan fitur untuk melatih mesin, akan lebih baik jika lemmatisasi diutamakan.
Kasus Penggunaan Lemmatizer
Lemmatizer meminimalkan ambiguitas teks. Kata-kata seperti sepeda atau sepeda-sepeda dikonversi ke kata dasar sepeda. Ia mengkonversi semua kata dengan arti yang sama tetapi representasi yang berbeda ke bentuk dasarnya, mengurangi kepadatan kata dan membantuping Mempersiapkan fitur yang akurat untuk melatih mesin. Semakin bersih data, semakin akurat model pembelajaran mesin Anda. NLTK Lemmatizer juga menghemat memori dan biaya komputasi.
Contoh nyata yang menunjukkan penggunaan WordNet Lemmatization dan POS Tagging dalam Python:
from nltk.corpus import wordnet as wn from nltk.stem.wordnet import WordNetLemmatizer from nltk import word_tokenize, pos_tag from collections import defaultdict tag_map = defaultdict(lambda : wn.NOUN) tag_map['J'] = wn.ADJ tag_map['V'] = wn.VERB tag_map['R'] = wn.ADV text = "guru99 is a totally new kind of learning experience." tokens = word_tokenize(text) lemma_function = WordNetLemmatizer() for token, tag in pos_tag(tokens): lemma = lemma_function.lemmatize(token, tag_map[tag[0]]) print(token, "=>", lemma)
Keluaran:
guru99 => guru99 is => be totally => totally new => new kind => kind of => of learning => learn experience => experience . => .
Code Penjelasan:
- Pembaca korpus wordnet diimpor, dan WordNetLemmatizer diimpor dari wordnet.
- Tokenisasi kata dan penandaan bagian ucapan diimpor dari nltk, dan Kamus Default dari collections.
- Sebuah kamus dibuat di mana huruf pertama dari pos_tag adalah kuncinya, yang dipetakan ke nilai dari kamus wordnet.
- Teks ditulis dan dipecah menjadi token, dan objek lemma_function dibuat untuk digunakan di dalam loop.
- Perulangan dijalankan, dan lemmatize menerima dua argumen: token dan sebuah map.ping dari pos_tag dengan nilai wordnet.
Python Lematisasi memiliki hubungan yang erat dengan Kamus WordNetOleh karena itu, sangat penting untuk mempelajari topik tersebut selanjutnya.
