Apa itu NLTK
Natural Language Toolkit (NLTK) adalah sebuah perpustakaan Python untuk bekerja dengan data bahasa manusia. NLTK menyediakan antarmuka yang mudah digunakan untuk lebih dari 50 korpora dan resource leksikal, bersama dengan rangkaian perpustakaan pemrosesan teks untuk klasifikasi, tokenisasi, stemming, tagging, parsing, dan pemikiran semantik.
NLTK menawarkan beberapa keuntungan termasuk:
- Beragam fungsi dan alat pemrosesan teks yang tersedia
- Akses mudah ke lebih dari 50 korpora dan resource leksikal
- Dokumentasi yang komprehensif dan mudah dipahami
- Komunitas pengguna dan pengembang yang aktif
- Integrasi dengan perpustakaan Python populer lainnya, seperti NumPy, pandas, dan scikit-learn
Instalasi dan Pengaturan NLTK
Persyaratan
Sebelum Anda mulai menginstal NLTK, pastikan bahwa sistem Anda memenuhi persyaratan berikut:
- Python 3.6 atau versi lebih baru terinstal
- pip (paket installer untuk Python) terinstal
Menginstal NLTK
Untuk menginstal NLTK, buka terminal atau prompt perintah, dan jalankan perintah berikut:
$ pip install nltk
Mengunduh Data NLTK
NLTK dilengkapi dengan berbagai korpora, dataset, dan resource untuk dikerjakan. Untuk mengunduh resource ini, Anda perlu menggunakan NLTK Data Downloader. Dalam interpreter Python atau skrip, jalankan perintah berikut:
import nltk
nltk.download()
Jendela baru bernama NLTK Downloader
akan terbuka. Di sini, Anda dapat memilih resource mana yang ingin Anda unduh. Untuk pemula, disarankan untuk mengunduh koleksi popular
, yang mencakup subset dari resource yang paling sering digunakan.
Untuk mengunduh koleksi popular
, klik pada tab Collections
, pilih popular
, dan kemudian klik tombol Download
. Pengunduhan mungkin memakan beberapa menit, tergantung pada koneksi internet Anda.
Anda juga dapat mengunduh resource tertentu dengan memilihnya dari tab Corpora
dan Models
.
Opsi nltk.download()
Anda dapat menggunakan opsi yang berbeda dengan fungsi nltk.download()
untuk mengunduh resource atau koleksi tertentu.
Berikut adalah beberapa opsi yang dapat Anda gunakan dengan fungsi nltk.download()
:
- Mengunduh resource tertentu
Untuk mengunduh resource tertentu, lewatkan pengenal resource sebagai parameter ke fungsinltk.download()
. Misalnya, untuk mengunduh model tokenizerpunkt
, Anda dapat menggunakan kode berikut:
import nltk
nltk.download('punkt')
- Mengunduh koleksi
NLTK menyediakan koleksi yang telah ditentukan sebelumnya, sepertibook
,popular
, danall
. Untuk mengunduh koleksi tertentu, lewatkan pengenal koleksi sebagai parameter ke fungsinltk.download()
. Misalnya, untuk mengunduh koleksipopular
, Anda dapat menggunakan kode berikut:
import nltk
nltk.download('popular')
- Mengunduh resource untuk paket tertentu
Beberapa paket NLTK memerlukan data tambahan untuk berfungsi dengan benar. Untuk mengunduh data untuk paket tertentu, lewatkan pengenal paket diikuti dengan pengenal resource sebagai parameter ke fungsinltk.download()
. Misalnya, untuk mengunduh datawordnet
untuk paketcorpora
, Anda dapat menggunakan kode berikut:
import nltk
nltk.download('corpora/wordnet')
- Mengunduh semua resource
Untuk mengunduh semua resource NLTK yang tersedia, lewatkan pengenalall
sebagai parameter ke fungsinltk.download()
. Harap dicatat bahwa mengunduh semua resource dapat memakan waktu yang lama dan membutuhkan ruang disk yang signifikan.
import nltk
nltk.download('all')
- Mengunduh resource ke lokasi tertentu
Secara default, fungsinltk.download()
mengunduh resource ke direktori data NLTK. Jika Anda ingin mengunduh resource ke lokasi tertentu, Anda dapat menggunakan parameterdownload_dir
. Misalnya, untuk mengunduh model tokenizerpunkt
ke direktori kustom, Anda dapat menggunakan kode berikut:
import nltk
nltk.download('punkt', download_dir='/path/to/your/custom/directory')
Preprocessing Teks dengan NLTK
Tokenisasi
Tokenisasi adalah proses memisahkan teks menjadi kata-kata atau token individual. Ini merupakan langkah penting dalam NLP, karena membantu dalam memahami dan menganalisis struktur dan konten teks. NLTK menyediakan dua jenis tokenisasi: tokenisasi kata dan tokenisasi kalimat.
Tokenisasi Kata
Untuk melakukan tokenisasi teks menjadi kata menggunakan NLTK, Anda dapat menggunakan fungsi word_tokenize
:
from nltk.tokenize import word_tokenize
text = "NLTK provides various tools for text preprocessing."
tokens = word_tokenize(text)
print(tokens)
Output yang dihasilkan adalah:
['NLTK', 'provides', 'various', 'tools', 'for', 'text', 'preprocessing', '.']
Tokenisasi Kalimat
Untuk melakukan tokenisasi teks menjadi kalimat, Anda dapat menggunakan fungsi sent_tokenize
:
from nltk.tokenize import sent_tokenize
text = "NLTK is an amazing library. It provides various tools for NLP."
sentences = sent_tokenize(text)
print(sentences)
Output yang dihasilkan adalah:
['NLTK is an amazing library.', 'It provides various tools for NLP.']
Penghapusan Stopword
Stopword adalah kata-kata umum seperti 'a', 'an', 'the', 'in', dan 'is', yang tidak banyak berkontribusi pada makna keseluruhan dari teks. Menghapus stopword dapat membantu dalam mengurangi noise dan dimensi dari data teks. NLTK menyediakan daftar stopword predefined untuk berbagai bahasa.
Untuk menghapus stopword dari daftar token, Anda dapat menggunakan kode berikut:
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
text = "NLTK provides various tools for text preprocessing."
tokens = word_tokenize(text)
filtered_tokens = [token for token in tokens if token.lower() not in stopwords.words('english')]
print(filtered_tokens)
Output yang dihasilkan adalah:
['NLTK', 'provides', 'various', 'tools', 'text', 'preprocessing', '.']
Stemming dan Lemmatization
Stemming dan lemmatization adalah teknik yang digunakan untuk mengurangi kata-kata menjadi bentuk dasar atau akarnya. Ini membantu dalam mengurangi dimensi data teks dan mengelompokkan kata-kata yang serupa.
Stemming
Stemming menghapus akhiran kata untuk mendapatkan bentuk dasarnya. NLTK menyediakan berbagai algoritma stemming, seperti Porter Stemmer dan Snowball Stemmer. Berikut adalah contoh menggunakan Porter Stemmer:
from nltk.stem import PorterStemmer
from nltk.tokenize import word_tokenize
text = "The cats are playing with their toys."
tokens = word_tokenize(text)
stemmer = PorterStemmer()
stemmed_tokens = [stemmer.stem(token) for token in tokens]
print(stemmed_tokens)
Output yang dihasilkan adalah:
['the', 'cat', 'are', 'play', 'with', 'their', 'toy', '.']
Lemmatization
Lemmatization mengurangi kata-kata menjadi bentuk dasar atau kata dasar, yang dikenal sebagai lemma. Ini mempertimbangkan konteks dan bagian ucapan dari kata tersebut. Untuk melakukan lemmatization di NLTK, Anda dapat menggunakan WordNetLemmatizer
:
from nltk.stem import WordNetLemmatizer
from nltk.tokenize import word_tokenize
text = "The cats are playing with their toys."
tokens = word_tokenize(text)
lemmatizer = WordNetLemmatizer()
lemmatized_tokens = [lemmatizer.lemmatize(token) for token in tokens]
print(lemmatized_tokens)
Output yang dihasilkan adalah:
['The', 'cat', 'are', 'playing', 'with', 'their', 'toy', '.']
Perlu diperhatikan bahwa lemmatization umumnya lebih akurat daripada stemming, karena mempertimbangkan konteks dan bagian ucapan. Namun, ini dapat lebih lambat karena kompleksitasnya.
Normalisasi Teks
Normalisasi teks adalah proses mengubah teks menjadi bentuk standar atau kanonikal. Ini dapat mencakup berbagai tugas seperti mengubah teks menjadi huruf kecil, menghapus karakter khusus, memperluas kontraksi, dan memperbaiki kesalahan ejaan. Berikut adalah beberapa contohnya:
Mengubah Teks ke Huruf Kecil
Untuk mengubah teks menjadi huruf kecil, Anda dapat menggunakan metode lower()
di Python:
text = "NLTK provides various tools for text preprocessing."
lowercase_text = text.lower()
print(lowercase_text)
Output yang dihasilkan adalah:
'nltk provides various tools for text preprocessing.'
Menghapus Karakter Khusus
Untuk menghapus karakter khusus dari teks, Anda dapat menggunakan modul re
di Python:
import re
text = "NLTK provides various tools for text preprocessing!."
clean_text = re.sub(r'[^\w\s]', '', text)
print(clean_text)
Output yang dihasilkan adalah:
'NLTK provides various tools for text preprocessing'
Referensi