Traffine I/O

Bahasa Indonesia

2023-01-20

Pemrosesan Bahasa Alam dengan NLTK

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:

bash
$ 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:

python
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 fungsi nltk.download(). Misalnya, untuk mengunduh model tokenizer punkt, Anda dapat menggunakan kode berikut:
python
import nltk
nltk.download('punkt')
  • Mengunduh koleksi
    NLTK menyediakan koleksi yang telah ditentukan sebelumnya, seperti book, popular, dan all. Untuk mengunduh koleksi tertentu, lewatkan pengenal koleksi sebagai parameter ke fungsi nltk.download(). Misalnya, untuk mengunduh koleksi popular, Anda dapat menggunakan kode berikut:
python
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 fungsi nltk.download(). Misalnya, untuk mengunduh data wordnet untuk paket corpora, Anda dapat menggunakan kode berikut:
python
import nltk
nltk.download('corpora/wordnet')
  • Mengunduh semua resource
    Untuk mengunduh semua resource NLTK yang tersedia, lewatkan pengenal all sebagai parameter ke fungsi nltk.download(). Harap dicatat bahwa mengunduh semua resource dapat memakan waktu yang lama dan membutuhkan ruang disk yang signifikan.
python
import nltk
nltk.download('all')
  • Mengunduh resource ke lokasi tertentu
    Secara default, fungsi nltk.download() mengunduh resource ke direktori data NLTK. Jika Anda ingin mengunduh resource ke lokasi tertentu, Anda dapat menggunakan parameter download_dir. Misalnya, untuk mengunduh model tokenizer punkt ke direktori kustom, Anda dapat menggunakan kode berikut:
python
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:

python
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:

python
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:

python
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:

python
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:

python
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:

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

https://www.nltk.org/
https://github.com/nltk/nltk

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!