Apa itu Stemming?
Stemming adalah sejenis normalisasi kata. Normalisasi adalah teknik di mana sekumpulan kata dalam kalimat diubah menjadi urutan untuk mempersingkat pencariannya. Kata-kata yang memiliki arti yang sama tetapi memiliki variasi sesuai konteks atau kalimatnya dinormalisasi.
Dengan kata lain, hanya ada satu akar kata, tetapi ada banyak variasi dari kata yang sama. Misalnya, akar kata adalah "makan" dan variasinya adalah "makan, makan, dimakan, dan sebagainya". Dengan cara yang sama, dengan bantuan Stemming, kita dapat menemukan akar kata dari variasi apa pun.
Sebagai contoh
He was riding.He was taking the ride.
Pada dua kalimat di atas artinya sama, yakni aktivitas berkuda di masa lalu. Seorang manusia dapat dengan mudah memahami bahwa kedua arti itu sama. Namun untuk mesin, kedua kalimat tersebut berbeda. Jadi, sulit untuk mengubahnya menjadi baris data yang sama. Jika kami tidak memberikan kumpulan data yang sama, maka mesin gagal memprediksi. Sehingga perlu adanya pembedaan arti dari setiap kata untuk mempersiapkan dataset untuk pembelajaran mesin. Dan di sini stemming digunakan untuk mengkategorikan jenis data yang sama dengan mendapatkan kata akarnya.
Mari kita implementasikan ini dengan program Python.NLTK memiliki algoritme bernama "PorterStemmer". Algoritme ini menerima daftar kata yang dipatokkan dan memasukkannya ke dalam kata dasar.
Program untuk memahami Stemming
from nltk.stem import PorterStemmere_words= ["wait", "waiting", "waited", "waits"]ps =PorterStemmer()for w in e_words:rootWord=ps.stem(w)print(rootWord)
Keluaran :
waitwaitwaitwait
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 keseluruhan modul batang, kami hanya mengimpor "PorterStemmer."
- Kami menyiapkan daftar dummy data variasi dari kata yang sama.
- Sebuah objek dibuat yang termasuk dalam kelas nltk.stem.porter.PorterStemmer.
- Selanjutnya, kami meneruskannya ke PorterStemmer satu per satu menggunakan loop "for". Akhirnya, kami mendapatkan akar kata keluaran dari setiap kata yang disebutkan dalam daftar.
Dari penjelasan di atas juga dapat disimpulkan bahwa stemming dianggap sebagai tahapan preprocessing yang penting karena menghilangkan redundansi pada data dan variasi pada kata yang sama. Hasilnya, data difilter yang akan membantu pelatihan mesin yang lebih baik.
Sekarang kita meneruskan kalimat lengkap dan memeriksa perilakunya sebagai keluaran.
Program:
from nltk.stem import PorterStemmerfrom nltk.tokenize import sent_tokenize, word_tokenizesentence="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:
helloguru99,youhavebuildaverigoodsiteandIlovevisityoursite
Penjelasan Kode
- Paket PorterStemer diimpor dari batang modul
- Paket untuk tokenisasi kalimat serta kata-kata diimpor
- Sebuah kalimat ditulis yang akan diberi token pada langkah berikutnya.
- 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 data awal. Bahasa Inggris memiliki banyak variasi dari satu kata. Variasi ini menciptakan ambiguitas dalam pelatihan dan prediksi machine learning. Untuk membuat model yang sukses, penting untuk memfilter kata-kata seperti itu dan mengonversi ke jenis data berurutan yang sama menggunakan stemming. Selain itu, ini adalah teknik penting untuk mendapatkan data baris dari sekumpulan kalimat dan penghapusan data yang berlebihan yang juga dikenal sebagai normalisasi.
Apa itu lemmatisasi?
Lemmatisasi adalah proses algoritmik untuk menemukan lemma sebuah kata tergantung pada maknanya. Lemmatisasi biasanya mengacu pada analisis morfologi kata, yang bertujuan untuk menghilangkan ujung infleksi. Ini membantu dalam mengembalikan bentuk dasar atau kamus dari sebuah kata, yang dikenal sebagai lemma. Metode Lemmatization NLTK didasarkan pada fungsi morph built-in WorldNet. Pemrosesan awal teks mencakup stemming serta lemmatization. Banyak orang menganggap kedua istilah itu membingungkan. Beberapa orang menganggapnya sama, tetapi ada perbedaan di antara keduanya. Lemmatisasi lebih disukai daripada yang pertama karena alasan di bawah ini.
Mengapa Lemmatization lebih baik daripada Stemming?
Algoritma stemming bekerja dengan cara memotong sufiks dari kata tersebut. Dalam arti yang lebih luas memotong awal atau akhir kata.
Sebaliknya, lemmatisasi adalah operasi yang lebih kuat, dan mempertimbangkan analisis morfologis kata-kata. Ia mengembalikan lemma yang merupakan bentuk dasar dari semua bentuk infleksionalnya. Pengetahuan linguistik yang mendalam dibutuhkan untuk membuat kamus dan mencari bentuk kata yang tepat. Stemming adalah operasi umum sedangkan lemmatization adalah operasi cerdas di mana bentuk yang tepat akan dicari di kamus. Karenanya, lemmatisasi membantu dalam membentuk fitur pembelajaran mesin yang lebih baik.
Kode untuk membedakan antara Lemmatization dan Stemming
Kode batang
import nltkfrom nltk.stem.porter import PorterStemmerporter_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 studiStemming for studying is studiStemming for cries is criStemming for cry is cri
Kode lemmatisasi
import nltkfrom nltk.stem import WordNetLemmatizerwordnet_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 studyLemma for studying is studyingLemma for cries is cryLemma for cry is cry
Diskusi keluaran:
Jika Anda melihat stemming untuk studi dan studi, outputnya sama (studi) tetapi lemmatizer memberikan lemma yang berbeda untuk studi token untuk studi dan studi untuk belajar. Jadi, ketika kita perlu membuat fitur disetel ke mesin pelatihan, alangkah baiknya jika lemmatization 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 yang 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. Bersihkan data, semakin cerdas dan akurat model pembelajaran mesin Anda. Lemmatizer juga akan menghemat memori serta biaya komputasi.
Contoh Real Time menunjukkan penggunaan Lemmatization Wordnet dan POS Tagging dengan Python
from nltk.corpus import wordnet as wnfrom nltk.stem.wordnet import WordNetLemmatizerfrom nltk import word_tokenize, pos_tagfrom collections import defaultdicttag_map = defaultdict(lambda : wn.NOUN)tag_map['J'] = wn.ADJtag_map['V'] = wn.VERBtag_map['R'] = wn.ADVtext = "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 dari 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 di loop.
- Teks ditulis dan diberi tokenized.
- Objek lemma_function dibuat yang akan digunakan di dalam loop
- Loop dijalankan dan lemmatize akan mengambil dua argumen, satu token dan lainnya adalah pemetaan pos_tag dengan nilai wordnet.
Keluaran:
guru99 => guru99is => betotally => totallynew => newkind => kindof => oflearning => learnexperience => experience. => .
Lemmatisasi memiliki keterkaitan yang erat dengan kamus wordnet, oleh karena itu topik ini penting untuk dipelajari, untuk itu kami pertahankan sebagai topik selanjutnya.