Stemming dan Lemmatisasi di Python NLTK dengan Contoh
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 prapemrosesan 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 normalisasi kata dalam Pengolahan Bahasa alami. Ini adalah teknik di mana sekumpulan kata dalam sebuah kalimat diubah menjadi urutan untuk mempersingkat pencariannya. Dalam metode ini, kata-kata yang mempunyai arti sama tetapi mempunyai beberapa variasi sesuai dengan konteks atau kalimat dinormalisasi.
Dengan kata lain, terdapat satu akar kata, namun terdapat banyak variasi kata yang sama. Misalnya, akar katanya adalah “makan” dan variasinya adalah “makan, makan, dimakan, dan sebagainya”. Dengan cara yang sama, dengan bantuan Stemming in Python, kita dapat menemukan akar kata dari variasi apa pun.
Misalnya
He was riding. He was taking the ride.
Pada dua kalimat di atas maknanya sama, yakni aktivitas berkuda di masa lampau. Manusia dapat dengan mudah memahami bahwa kedua makna itu sama. Namun untuk mesin, kedua kalimat tersebut berbeda. Oleh karena itu, menjadi sulit untuk mengubahnya menjadi baris data yang sama. Jika kami tidak menyediakan kumpulan data yang sama, maka mesin gagal memprediksi. Oleh karena itu, perlu dibedakan arti setiap kata untuk mempersiapkan dataset untuk pembelajaran mesin. Dan disini stemming digunakan untuk mengkategorikan suatu jenis data yang sama berdasarkan akar kata nya.
Mari kita terapkan ini dengan a Python program.NLTK memiliki algoritma yang disebut sebagai "PorterStemmer". Algoritme ini menerima daftar kata yang diberi token dan mengelompokkannya menjadi kata dasar.
Program untuk memahami 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
Penjelasan Kode:
- Ada modul batang di NLTk yang diimpor. Jika Anda mengimpor modul lengkap, maka program menjadi berat karena berisi ribuan baris kode. Jadi dari seluruh modul induk, kami hanya mengimpor “PorterStemmer.”
- Kami menyiapkan daftar dummy data variasi kata yang sama.
- Sebuah objek dibuat milik kelas nltk.stem.porter.PorterStemmer.
- Selanjutnya, kami meneruskannya ke PorterStemmer satu per satu menggunakan loop “for”. Akhirnya, kami mendapatkan keluaran kata dasar dari setiap kata yang disebutkan dalam daftar.
Dari penjelasan di atas juga dapat disimpulkan bahwa stemming dianggap sebagai langkah preprocessing yang penting karena menghilangkan redundansi data dan variasi pada kata yang sama. Hasilnya, data disaring yang akan membantu pelatihan mesin yang lebih baik.
Sekarang kita memberikan kalimat lengkap dan memeriksa perilakunya sebagai keluaran.
Program:
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
Penjelasan Kode:
- Paket PorterStemer diimpor dari batang modul
- Paket untuk tokenisasi kalimat dan kata-kata diimpor
- Sebuah kalimat ditulis yang akan diberi token pada langkah berikutnya.
- Lemmatisasi stemming tokenisasi kata diterapkan pada langkah ini.
- Objek untuk PorterStemmer dibuat di sini.
- Loop dijalankan dan stemming setiap kata dilakukan menggunakan objek yang dibuat pada baris kode 5
Kesimpulan:
Stemming adalah modul pemrosesan awal data. Bahasa Inggris memiliki banyak variasi dari satu kata. Variasi ini menciptakan ambiguitas dalam pelatihan dan prediksi pembelajaran mesin. Untuk membuat model yang sukses, sangat penting untuk memfilter kata-kata tersebut dan mengonversinya menjadi jenis data berurutan yang sama menggunakan stemming. Selain itu, ini merupakan teknik penting untuk mendapatkan data baris dari sekumpulan kalimat dan menghilangkan data berlebihan yang juga dikenal sebagai normalisasi.
Apa itu Lemmatisasi?
Lemmatisasi di NLTK adalah proses algoritmik untuk menemukan lemma suatu kata tergantung pada makna dan konteksnya. Lemmatisasi biasanya mengacu pada analisis morfologi kata, yang bertujuan untuk menghilangkan akhiran infleksional. Ini membantu dalam mengembalikan bentuk dasar atau kamus dari sebuah kata yang dikenal sebagai lemma.
Metode Lemmatisasi NLTK didasarkan pada fungsi morph bawaan WorldNet. Pemrosesan awal teks mencakup stemming dan lemmatisasi. Banyak orang menganggap kedua istilah ini membingungkan. Beberapa orang menganggap hal ini sama, tetapi ada perbedaan antara stemming dan lemmatisasi. Lemmatisasi lebih disukai daripada yang pertama karena alasan di bawah ini.
Mengapa Lemmatisasi lebih baik dibandingkan Stemming?
Algoritma stemming bekerja dengan memotong akhiran dari sebuah kata. Dalam arti yang lebih luas, memotong awal atau akhir kata.
Sebaliknya, Lemmatisasi adalah operasi yang lebih kuat, dan mempertimbangkan analisis morfologis kata-kata. Lemmatisasi 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 lemmatisasi adalah operasi cerdas di mana bentuk yang tepat akan dicari dalam kamus. Oleh karena itu, lemmatisasi membantu dalam membentuk kata yang lebih baik. Mesin belajar fitur.
Kode untuk membedakan Lemmatisasi dan Stemming
Kode Batang:
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
Kode Lemmatisasi:
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 mencari stemming untuk studi dan pembelajaran, hasilnya sama (studi) tetapi lemmatizer NLTK memberikan lemma yang berbeda untuk token belajar untuk studi dan belajar untuk belajar. Jadi ketika kita perlu membuat set fitur untuk melatih mesin, alangkah baiknya jika lemmatisasi lebih disukai.
Kasus Penggunaan Lemmatizer
Lemmatizer meminimalkan ambiguitas teks. Contoh kata seperti sepeda atau sepeda diubah menjadi kata dasar sepeda. Pada dasarnya, ini akan mengubah semua kata yang memiliki arti sama tetapi representasi berbeda ke bentuk dasarnya. Ini mengurangi kepadatan kata dalam teks yang diberikan dan membantu dalam mempersiapkan fitur yang akurat untuk mesin pelatihan. Semakin bersih datanya, semakin cerdas dan akurat model pembelajaran mesin Anda. NLTK Lemmatizer juga akan menghemat memori serta biaya komputasi.
Contoh Waktu Nyata yang menunjukkan penggunaan Lemmatisasi Wordnet dan Penandaan POS di 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)
Penjelasan Kode
- Pertama, wordnet pembaca korpus diimpor.
- WordNetLemmatizer diimpor dari wordnet.
- Tokenisasi kata serta tag bagian ucapan diimpor dari nltk.
- Kamus Default diimpor dari koleksi.
- Kamus dibuat di mana pos_tag (huruf pertama) adalah nilai kunci yang nilainya dipetakan dengan nilai dari kamus wordnet. Kami telah mengambil satu-satunya huruf pertama karena kami akan menggunakannya nanti dalam loop.
- Teks ditulis dan diberi token.
- Objek lemma_function dibuat yang akan digunakan di dalam loop.
- Loop dijalankan dan lemmatize akan mengambil dua argumen, satu adalah token dan lainnya adalah pemetaan pos_tag dengan nilai wordnet.
Keluaran:
guru99 => guru99 is => be totally => totally new => new kind => kind of => of learning => learn experience => experience . => .
Python Lemmatisasi mempunyai hubungan yang erat dengan kamus jaringan kata, jadi penting untuk mempelajari topik ini, jadi kami menjadikan ini sebagai topik berikutnya.