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.

  • ๐ŸŒฑ Berasal: PorterStemmer memangkas akhiran untuk mencapai akar kata yang mungkin bukan kata sebenarnya.
  • ๐Ÿ“š Lemmatisasi: WordNetLemmatizer mengembalikan bentuk dasar kamus, yang disebut lemma.
  • ๏ธ Perbedaan: Stemming lebih cepat, lemmatisasi lebih lambat tetapi lebih akurat dan peka terhadap konteks.
  • ๐Ÿ”ค Normalisasi: Keduanya mengurangi kepadatan kata sehingga mesin memperlakukan varian sebagai satu fitur.
  • ๏ธ Tag POS: Menambahkan tag bagian ucapan membuat lematisasi jauh lebih presisi.
  • ๐Ÿค– Manfaat AI: Teks yang dinormalisasi dan lebih bersih menghasilkan fitur dan model pembelajaran mesin yang lebih kuat.

Stemming dan Lemmatisasi di Python NLTK

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.

Pertanyaan Umum Demo Slot

Porter stemmer adalah kelas PorterStemmer milik NLTK. Kelas ini menerapkan penghapusan akhiran.ping Aturan dari algoritma Martin Porter tahun 1980 untuk mereduksi kata-kata bahasa Inggris ke bentuk dasarnya, sehingga "waiting," "waited," dan "waits" semuanya menjadi "wait."

Gunakan stemming ketika kecepatan dan kesederhanaan lebih penting daripada keterbacaan, seperti pengindeksan pencarian, analisis sentimen skala besar, atau pengurangan fitur. Pilih lematisasi ketika output harus berupa kata yang valid dan mudah dibaca manusia.

Normalisasi teks mengubah berbagai bentuk kata menjadi satu representasi umum. Stemming dan lemmatisasi adalah dua teknik normalisasi yang mengurangi kepadatan kata sehingga model memperlakukan varian seperti "study" dan "studies" sebagai satu fitur tunggal.

NLTK menyediakan PorterStemmer (dan stemmer lain seperti Snowball) untuk stemming, dan WordNetLemmatizer untuk lemmatisasi. Lemmatizer ini mengandalkan kamus WordNet untuk mengembalikan bentuk dasar yang benar dari setiap kata.

Mereka menghilangkan variasi kata yang berlebihan, sehingga model pembelajaran mesin melihat fitur yang lebih bersih dan berdimensi lebih rendah. Lebih sedikit token duplikat berarti lebih sedikit ambiguitas selama pelatihan dan prediksi yang lebih akurat pada teks yang belum pernah dilihat sebelumnya.

Model AI modern menyimpulkan konteks secara otomatis, tetapi WordNetLemmatizer dari NLTK membutuhkan tag bagian ujaran untuk melakukan disambiguasi. Dengan menyediakan tag tersebut, ia dapat memilih lemma yang tepat, misalnya mengubah "learning" menjadi "learn" ketika diberi tag sebagai kata kerja.

Suatu kata dapat berupa kata benda atau kata kerja dengan lema yang berbeda. Tanpa tag bagian ujaran, WordNetLemmatizer menganggapnya sebagai kata benda. Dengan memberikan tag yang tepat, seperti kata kerja atau kata sifat, akan menghasilkan bentuk dasar yang benar.

Tidak. Stemming hanya memangkas sufiks, jadi "studies" menjadi "studi" dan "cries" menjadi "cri," yang bukan kata yang valid. Sebaliknya, lematisasi selalu mengembalikan kata kamus yang sebenarnya seperti "study."

Ringkaslah postingan ini dengan: