Mengenal Text Preprocessing, Pengertian, Apa itu NLTK Library? Macam Tahapan Basic atau Dasar serta Contoh Simple dan Kodenya!
Seperti yang kita ketahui, dalam tugas machine learning apa pun, pembersihan atau prapemrosesan data sama pentingnya dengan pembuatan sebuah model.
Data teks pada dasarnya adalah salah satu bentuk data (baca pengertian tentang apa itu data di sini) yang tersedia yang paling tidak terstruktur dan ketika berurusan dengan bahasa manusia maka itu terlalu rumit.
Terkait pembahasan Kami beberapa minggu sebelumnya, pernahkah Anda bertanya-tanya bagaimana Alexa, Siri, asisten Google dapat memahami, memproses, dan merespons dalam bahasa kita sebagai manusia.
Yup! NLP-lah teknologi yang bekerja di belakangnya di mana sebelum ada respons, banyak pra-pemrosesan teks dilakukan.
Postingan Kami kali ini akan mempelajari teknik preprocessing teks utama yang harus Anda ketahui untuk bermain dengan data teks apa pun.
Mari kita simak ulasannya berikut ini!
Daftar Isi Konten:
Sekilas tentang NLP
Seperti yang sudah Kami bahas sebelumnya, ini merupakan kepanjangan dari Natural Language Processing yang juga dikenal dengan istilah Natural Language Understanding (NLU), NLP adalah subbidang ilmu komputer dan kecerdasan buatan yang berhubungan dengan interaksi antara komputer dan bahasa manusia (alami).
Terkait bidang ilmu data atau data science, kadang-kadang, NLP ini digunakan dalam penerapan algoritme machine learning pada teks dan ucapan.
Sebagai contoh misalnya, dapat menggunakan Natural Language Processing (NLP) ini dalam pembuatan sistem seperti pengenalan suara, ringkasan dokumen, terjemahan mesin, deteksi spam, pengenalan entitas bernama, penjawab pertanyaan, pelengkapan otomatis, prediksi pengetikan, dan lain sebagainya.
Apa itu NLTK Library pada Python?
Merupakan singkatan dari Natural Language Toolkit, NLTK adalah platform terkemuka untuk membangun program Python untuk bekerja dengan data bahasa manusia.
NLTK menyediakan interface yang mudah digunakan ke banyak sumber daya korpora dan leksikal, mereka berisi library suite pemrosesan teks untuk klasifikasi, tokenization, stemming, tagging, parsing, dan semantic reasoning.
Secara umum, dapat kita katakan bahwa NLTK adalah library terbaik dalam Python, khususnya karena mereka proyek berbasis komunitas gratis, open source.
Macam-Macam Tahapan Dasar atau Basic Text Preprocessing dan Menghasilkan Document Term of Matrix dengan TF-IDF serta Contohnya
Basic text preprocessing adalah langkah-langkah yang terbilang sangat penting dilakukan untuk mentransfer teks dari bahasa manusia ke format yang dapat dibaca mesin untuk diproses ke tahap yang lebih lanjut.
Dalam tahapan atau prosesnya sendiri, setelah teks diperoleh, kita mulai dengan normalisasi teks.
Sebelum memulainya, saran Kami kalian dapat menggunakan Google Colab atau perangkat lunak Jupyter agar lebih mudah.
Adapun untuk proses dalam tahapan basic text preprocessing ini meliputi:
- Transformasi semua huruf menjadi huruf kecil atau besar.
- Pengubahan angka menjadi kata atau menghapus angka.
- Penghapusan tanda baca, tanda aksen, dan diakritik lainnya.
- Penghilangan spasi atau yang dikenal dengan istilah white space..
- Memperluas singkatan.
- Menghilangkan kata henti, istilah jarang, dan kata-kata tertentu yang sering disebut dengan tahapan stop word removal.
- Melakukan kanonikalisasi teks.
Di bawah ini adalah macam tahapan dan contoh penerapan tahapan basic text preprocessing dan menemukan document term of matrix (menggunakan TF-IDF) dengan menggunakan bahasa pemrograman Python dengan menggunakan teks yang berasal dari dataset “Computer Glossary”.
a. Sentence Tokenization
Tokenisasi kalimat, sentence tokenization (atau yang juga disebut dengan sentence segmentation) adalah suatu permasalah terkait dalam pembagian string bahasa tertulis ke dalam kalimat komponennya.
Sederhananya, seperti dalam bahasa Inggris dan beberapa bahasa lain, kita dapat memisahkan kalimat setiap kali kita melihat tanda baca.
Berikut adalah contohnya:
import nltk
# Import Library jika kalian melakukannya melalui Google Colaboratory
nltk.download('punkt')
nltk.download('wordnet')
nltk.download('stopwords')
Code language: PHP (php)
Lalu, kode di bawah ini sudah dapat Anda jalankan.
# Rifqi Mulyawan - Sentence Tokenization
teks = "4G is the fourth generation of cellular data standards. Like 3G, there is no single 4G technology. Instead, 4G an umbrella of technologies that conform to the requirements established by the International Telecommunications Union. All 4G devices must support a data transfer rate of at least 100 Mbps."
kalimat = nltk.sent_tokenize(teks)
for sentence in sentences:
print(sentence)
print()
Code language: PHP (php)
b. Word Tokenization
Berarti tokenisasi kata, word tokenization atau yang juga disebut dengan word segmentation adalah suatu permasalahan terkait pembagian string bahasa tertulis menjadi kata-kata komponennya.
Dalam bahasa Inggris dan banyak bahasa lain (seperti bahasa Indonesia) yang menggunakan beberapa bentuk abjad Latin, dalam hal ini tanda “space” atau spasi adalah perkiraan yang baik untuk pemisah katanya.
Adapun contoh kode simple-nya dengan salah satu fungsi NLTK yaitu:
# Rifqi Mulyawan - Word Tokenization
for sentence in sentences:
words = nltk.word_tokenize(sentence)
print(words)
print()
Code language: PHP (php)
c. Text Lemmatization dan Stemming
Dalam tata bahasa, dokumen dapat berisi berbagai bentuk kata seperti make, makes, making.
Juga, terkadang kita memiliki kata-kata yang terkait dengan arti yang sama, seperti human, humanial, humanity.
Tujuan dari ini text lemmatization dan stemming adalah untuk mengurangi bentuk-bentuk infleksional serta juga kadang berbagai macam bentuk kata terkait (secara turunan katanya) menjadi bentuk dasar kata yang sama.
Stemming mengacu ke proses heuristik kasar yang memotong ujung kata yang ada, ini dilakukan dengan harapan mencapai tujuan tersebut dengan benar setiap saat, serta sering kali mencakup penghapusan afiks derivasinya.
Kemudian, lemmatization ini dapat mengacu pada proses melakukan sesuatu dengan benar dengan penggunaan kosakata dan analisis morfologis kata yang ada.
Ini bertujuan untuk menghilangkan akhiran infleksional serta untuk mengembalikan bentuk dasar atau kamus dari sebuah kata saja, atau yang juga dikenal sebagai lemma.
Perbedaan stemmer dengan lemmatization yaitu stemmer beroperasi tanpa pengetahuan tentang konteksnya, sehingga dia tidak dapat memahami perbedaan antara kata-kata yang memiliki arti berbeda berdasarkan bagian pengucapannya.
Kelebihannya, stemmer ini lebih mudah terkait penerapannya sendiri dan ini biasanya berjalan lebih cepat, terlebih jika pengurangan “accurary” yang mungkin tidak masalah untuk beberapa aplikasi.
Contohnya menggunakan tool NLTK yaitu:
# Rifqi Mulyawan - Text Lemmatization dan Stemming
from nltk.stem import PorterStemmer, WordNetLemmatizer
from nltk.corpus import wordnet
def compare_stemmer_and_lemmatizer(stemmer, lemmatizer, word, pos):
print("Stemmer:", stemmer.stem(word))
print("Lemmatizer:", lemmatizer.lemmatize(word, pos))
print()
lemmatizer = WordNetLemmatizer()
stemmer = PorterStemmer()
compare_stemmer_and_lemmatizer(stemmer, lemmatizer, word = "Working", pos = wordnet.VERB)
compare_stemmer_and_lemmatizer(stemmer, lemmatizer, word = "Colaboration", pos = wordnet.VERB)
Code language: PHP (php)
d. Stop Words
Stop words atau stopword (tanpa spasi) adalah penyaringan kata-kata sebelum dan sesudah pemrosesan teks.
Saat menerapkan pembelajaran mesin ke dalam sebuah teks, kata-kata yang ada seringkali dapat menambahkan banyak gangguan, sehinggan karena itulah kita perlu untuk melakukan penghapusan pada kumpulan kata non-relevan yang ada.
Stopwords di sini mengacu pada kata-kata yang paling umum seperti kata hubung “and”, “the”, “a” dalam suatu bahasa.
Perlu untuk diketahui bahwa tidak ada list atau daftar stopword universal tunggal, ini dapat berubah tergantung pada aplikasi Anda.
Contohnya yaitu seperti:
# Rifqi Mulyawan - Stop Words
from nltk.corpus import stopwords
print(stopwords.words("english"))
Code language: PHP (php)
Kemudian, untuk menghilangkan stop words dari sebuah kalimat, kita dapat melakukan:
# Rifqi Mulyawan - Contoh Stop Words
stop_words = set(stopwords.words("english"))
sentence = "4G is the fourth generation of cellular data standards. Like 3G, there is no single 4G technology. Instead, 4G an umbrella of technologies that conform to the requirements established by the International Telecommunications Union. All 4G devices must support a data transfer rate of at least 100 Mbps."
words = nltk.word_tokenize(sentence)
without_stop_words = [word for word in words if not word in stop_words]
print(without_stop_words)
Code language: PHP (php)
Cara lain untuk mendapatkan hasil yang sama, terlebih jika Anda tidak paham dengan list comprehensions dalam Python, walaupun perlu diingat bahwa dia lebih cepat karena dioptimalkan untuk interpreter Python dalam menemukan pola yang dapat diprediksi selama perulangan yaitu:
# Rifqi Mulyawan - Contoh Stop Words 2
stop_words = set(stopwords.words("english"))
sentence = "4G is the fourth generation of cellular data standards. Like 3G, there is no single 4G technology. Instead, 4G an umbrella of technologies that conform to the requirements established by the International Telecommunications Union. All 4G devices must support a data transfer rate of at least 100 Mbps."
words = nltk.word_tokenize(sentence)
without_stop_words = []
for word in words:
if word not in stop_words:
without_stop_words.append(word)
print(without_stop_words)
Code language: PHP (php)
e. Regex
Ekspresi regular, regular expression, regex, atau regexp adalah urutan karakter yang digunakan untuk menentukan pola pencarian.
Kita dapat menggunakannya dalam penerapan filter tambahan pada teks yang ada.
Sebagai contoh misalnya, kita dapat menghapus semua karakter simbol atau yang bukan kata (non-kata).
Dalam bahasa pemrograman Python, modul “re” seperti contoh di bawah menyediakan operasi pencocokan regular expressiong yang mirip dengan bahasa pemrograman lainnya seperti Perl:
# Rifqi Mulyawan - Regex
import re
sentence = "4G is the fourth generation of cellular data standards. Like 3G, there is no single 4G technology. Instead, 4G an umbrella of technologies that conform to the requirements established by the International Telecommunications Union. All 4G devices must support a data transfer rate of at least 100 Mbps."
pattern = r"[^\w]"
print(re.sub(pattern, " ", sentence))
Code language: PHP (php)
f. Bag Of Words (BOW)
Algoritma dalam machine learning tidak dapat bekerja dengan teks mentah (yang dikenal dengan sebutan raw) secara langsung, sehingga mengubah teks (text processing) menjadi vektor angka merupakan sebuah keharusan.
Ini biasa disebut dengan ekstraksi fitur sederhana (simple feature extraction) dan disingkat dengan BOW, model bag-of-words adalah teknik ekstraksinya yang populer dan seringkali digunakan saat kita bekerja dengan teks.
Ini menggambarkan (peristiwa) terjadinya setiap kata dalam sebuah dokumen.
Untuk menggunakan model ini, kita harus melakukan beberapa hal sebagai berikut:
- Merancang kosakata dari kata-kata yang dikenal (token).
- Memilih ukuran keberadaan kata-kata yang dikenal.
Informasi apa pun tentang urutan atau struktur kata akan dibuang, itulah sebabnya ini disebut “bag” yang artinya kantong dari “of words” kata-kata.
Model ini mencoba memahami apakah kata yang dikenal muncul dalam dokumen, tetapi tidak tahu di mana kata itu dalam dokumen.
Intuisinya adalah bahwa dokumen serupa memiliki konten yang serupa.
Selain itu, dari sebuah konten, maka kita dapat mempelajari sesuatu tentang arti dari dokumen tersebut.
Di bawah ini adalah contoh untuk membuat model bag-of-words yang kita mulai dengan memuat datanya.
Katakanlah, data file .txt
kita adalah sebagai berikut:
4G is the fourth generation of cellular data standards. Like 3G, there is no single 4G technology. Instead, 4G an umbrella of technologies that conform to the requirements established by the International Telecommunications Union. All 4G devices must support a data transfer rate of at least 100 Mbps. 4G networks and devices were first available in the United States in 2009. Sprint was the first company to offer 4G service, followed by Verizon, AT&T, and T-Mobile.
Buat kalian yang malas mengubahnya menjadi file teks dengan eksensi .txt
, kalian dapat mengunduh filenya dengan mengklik link download di bawah ini.
Kemudian, kita muat datanya:
# Rifqi Mulyawan - Bag-of-words
# Langkah 1. Memuat data
from google.colab import drive
drive.mount('/content/drive')
path = "/content/drive/MyDrive/NLP/"
with open(path + "What is 4G.txt", "r") as file:
documents = file.read().splitlines()
print(documents)
Code language: PHP (php)
Lalu, lanjutkan dengan membuat desain kosakata (vocabulary) dan vektor dokumennya dengan:
# Import library yang dibutuhkan
from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd
# Langkah 2. Mendesain vocabulary (kosakata)
# Pola token bawaan menghilangkan token karakter tunggal, karena itulah kita tidak punya token "I" dan "s" pada outputnya
count_vectorizer = CountVectorizer()
# Langkah 3. Membuat model Bag-of-Words
bag_of_words = count_vectorizer.fit_transform(documents)
# Menampilkan model Bag-of-Words sebagai DataFrame pandas
feature_names = count_vectorizer.get_feature_names()
pd.DataFrame(bag_of_words.toarray(), columns = feature_names)
Code language: PHP (php)
g. TF-IDF
Merupakan singkatan dari Term Frequency-Inverse Document Frequency, TF-IDF adalah ukuran statistik yang digunakan untuk mengevaluasi pentingnya sebuah kata bagi sebuah dokumen dalam kumpulan atau korpus.
Nilai pemberian skor TF-IDF biasanya akan meningkat secara proporsional dengan berapa kali sebuah kata muncul dalam dokumen, namun diimbangi dengan jumlah dokumen dalam korpus yang memuat kata tersebut.
Contoh melakukan proses TF-IDF dengan bahasa pemrograman Python adalah sebagai berikut:
# Rifqi Mulyawan - TF-IDF
from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
tfidf_vectorizer = TfidfVectorizer()
values = tfidf_vectorizer.fit_transform(documents)
# Menampilkan model sebagai DataFrame pandas
feature_names = tfidf_vectorizer.get_feature_names()
pd.DataFrame(values.toarray(), columns = feature_names)
Code language: PHP (php)
Kesimpulan
Baiklah, Kami pikir sudah cukup untuk pembahasan pengenalan Text Preprocessing, Pengertian, Apa itu NLTK Library? Macam Tahapan Basic atau Dasar serta Contoh Simple dan Kodenya.
Sekarang kita tahu dasar-dasar cara mengekstrak fitur dari teks, di mana kemudian, fitur-fitur tersebut dapat kita gunakan sebagai input untuk algoritma machine learning.
Dalam praktiknya, kalian dapat mencoba code (baca pengertian code di sini) atau kode yang sudah Kami contohkan di atas dan menyesuaikannya untuk pembelajaran kalian.
Selain itu, adapun beberapa teknik text-preprocessing yang advanced atau lanjuttan lainnya yaitu seperti:
- Expand Contractions
- Lower Case
- Remove Punctuations
- Remove words and digits containing digits
- Remove Stopwords
- Rephrase Text
- Stemming and Lemmatization
- Remove White spaces
Bagaimana? Apa kalian juga tertarik dengan NLP?
Penutup
Demikianlah postingan artikel yang dapat Kami bagikan kali ini, di mana Kami membahas terkait pengenalan Text Preprocessing, Pengertian, Apa itu NLTK Library? Macam Tahapan Basic atau Dasar serta Contoh Simple dan Kodenya.
Semoga apa yang sudah Kami coba sampaikan serta jelaskan di sini dapat bermanfaat dan juga dapat menambah wawasan dan pengetahuan kita semua terutama dalam bidang teknologi, bisnis khususnya ilmu data dan pembelajaran mesin.
Silahkan bagikan artikel atau postingan Kami di sini kepada teman, kerabat serta rekan kerja dan bisnis kalian semua khususnya jika kalian temukan ini bermanfaat dan juga jangan lupa subscribe Blog dan YouTube Kami. Sekian dari Saya Rifqi Mulyawan, Terima Kasih.
Postingan ini juga tersedia dalam versi: