Dalam pemrosesan data, sebelum data tersebut bisa digali lebih jauh menggunakan berbagai macam algoritma dan metode, langkah pertama yang harus dilakukan yaitu dengan membersihkan dan merapikan data. Hal ini juga berlaku pada data yang berupa teks.
Data teks yang diperoleh dari berbagai macam sumber tentunya tidak serta merta mempunyai struktur yang pantas untuk diolah. Pada kebanyakan kasus, data tersebut cenderung memiliki struktur yang acak, sembarang, atau bahkan tidak terstruktur sama sekali.
Contoh yang paling sederhana misalnya jika kita mendapatkan sekumpulan data berupa teks yang didalamnya memuat kata-kata dengan huruf besar dan huruf kecil, apakah kita akan memperlakukan kata tersebut secara sama atau berbeda? Misalnya kata “Manusia” dengan “manusia”.
Kalau kita setuju bahwa dua kata tersebut dianggap memiliki makna yang sama, maka seharusnya algoritma yang kita kembangkan bisa menganggap bahwa dua kata tersebut adalah sama, meskipun yang satu menggunakan huruf kecil dan yang satu menggunakan huruf besar. Belum lagi jika teks tersebut mengandung karakter-karakter yang tidak umum, seperti tanda baca, spasi, whitespace, simbol, dan sebagainya.
Nah, proses semacam inilah yang dalam studi natural language processing (NLP) disebut dengan text preprocessing. Data teks yang kita terima harus dilakukan proses preprocessing untuk mendapatkan hasil yang lebih akurat. Selanjutnya data tersebut baru bisa dieksekusi untuk kebutuhan yang lain misalnya untuk analisis sentimen (sentiment analysis), pemodelan topik (topic modelling), dan lain-lain.
Dalam bahasa Python, library yang cukup populer untuk melakukan text preprocessing yaitu Natural Language Toolkit (NLTK). Library NLTK sejauh ini merupakan library yang cukup lengkap untuk menyiapkan teks sebelum diolah dengan algoritma-algoritma seperti machine learning hingga deep learning.
Untuk menginstall library NLTK bisa gunakan perintah berikut pada terminal Anda.
pip install nltk
Kemudian, untuk mengunduh paket-paket dasar NLTK, bisa gunakan script sebagai berikut.
import nltk nltk.download()
Ada beberapa operasi dasar yang sering digunakan pada tahap text preprocessing, seperti Case Folding, Tokenizing, Filtering, dan Stemming. Tutorial kali ini akan secara spesifik membahas mengenai Case Folding. Untuk operasi-operasui yang lain akan dibahas di artikel selanjutnya.
Case folding merupakan istilah yang digunakan untuk mengubah semua bentuk huruf dalam sebuah teks atau dokumen menjadi huruf kecil semua. Sementara itu, karakter lain yang bukan termasuk huruf dan angka, seperti tanda baca dan spasi dianggap sebagai delimiter. Delimiter ini bisa juga dihapus atau diabaikan dengan menggunakan perintah yang ada di Python.
Operasi case folding ini termasuk text preprocessing yang paling sederhana, sehingga kadang diabaikan. Namun, pada kebanyakan kasus, untuk mendapatkan data yang akurat dan tidak redundant, operasi ini wajib dilakukan.
Operasi ini bisa dilakukan dengan modul bawaan yang tersedia di Python, tanpa perlu menggunakan external library. Sebagai catatan, tutorial berikut dijalankan menggunakan Python 3 dan dieksekusi pada lingkungan jupyter notebook.
Mengubah Teks menjadi Lowercase
Script berikut akan mengubah kalimat yang sebelumnya mengandung huruf kapital atau huruf besar menjadi huruf kecil semua dengan memanfaatkan kelas lower(). Anda bisa juga mengganti kelas tersebut menjadi upper(), sehingga hasilnya akan menampilkan kalimat dalam bentuk huruf kapital semua.
# Mengubah Teks Menjadi Lowercase kalimat = "KOMPAS.com - Pakar sepak bola Spanyol BBC, Guillem Balague, mengutarakan bahwa kekalahan historis 2-8 Barcelona dari FC Bayern Muenchen sebagai buah dari kebusukan klub yang berlangsung selama bertahun-tahun." lower_case = kalimat.lower() print(lower_case) # OUTPUT # kompas.com - pakar sepak bola spanyol bbc, guillem balague, mengutarakan bahwa kekalahan historis 2-8 barcelona dari fc bayern muenchen sebagai buah dari kebusukan klub yang berlangsung selama bertahun-tahun.
Menghapus Angka
Script berikut menjalankan perintah untuk menghapus karakter angka. Semua angka yang ada di dalam variabel kalimat akan dihapus. Script ini membutuhkan modul operasi ekspresi regex atau regular expression yang fungsinya untuk memfilter karakter-karakter tertentu.
# Menghapus Angka # impor modul regular expression import re kalimat = "KOMPAS.com - Pakar sepak bola Spanyol BBC, Guillem Balague, mengutarakan bahwa kekalahan historis 2-8 Barcelona dari FC Bayern Muenchen sebagai buah dari kebusukan klub yang berlangsung selama bertahun-tahun." hasil = re.sub(r"\d+", "", kalimat) print(hasil) # OUTPUT # KOMPAS.com - Pakar sepak bola Spanyol BBC, Guillem Balague, mengutarakan bahwa kekalahan historis - Barcelona dari FC Bayern Muenchen sebagai buah dari kebusukan klub yang berlangsung selama bertahun-tahun.
Menghapus Tanda Baca
Script berikut menjalankan perintah untuk menghapus tanda baca seperti tanda titik, koma, petik, dan lain-lain. Hasilnya berupa kalimat tanpa tanda baca. Script berikut membutuhkan modul string yang fungsinya untuk memberikan akses pada kelas string.punctuation.
# Menghapus Tanda Baca import string kalimat= "KOMPAS.com - Pakar sepak bola Spanyol BBC, Guillem Balague, mengutarakan bahwa kekalahan historis 2-8 Barcelona dari FC Bayern Muenchen sebagai buah dari kebusukan klub yang berlangsung selama bertahun-tahun." hasil = kalimat.translate(str.maketrans("","",string.punctuation)) print(hasil) # OUTPUT # KOMPAScom Pakar sepak bola Spanyol BBC Guillem Balague mengutarakan bahwa kekalahan historis 28 Barcelona dari FC Bayern Muenchen sebagai buah dari kebusukan klub yang berlangsung selama bertahuntahun
Menghapus Whitespace (karakter kosong)
Script berikut menjalankan perintah untuk menghapus karakter kosong pada variabel kalimat. Bisa dilihat variabel kalimat berikut berisi karakter “\t” di bagian awal dan akhir kalimat, sehingga outputnya berupa kalimat tanpa karakter pengganggu tersebut. Karakter semacam ini disebut sebagai whitespace atau karakter kosong yang termasuk jenis karakter yang tidak diperlukan.
# Menghapus karakter kosong (white space) kalimat= "\t KOMPAS.com - Pakar sepak bola Spanyol BBC, Guillem Balague, mengutarakan bahwa kekalahan historis 2-8 Barcelona dari FC Bayern Muenchen sebagai buah dari kebusukan klub yang berlangsung selama bertahun-tahun.\t" hasil = kalimat.strip() print(hasil) # OUTPUT # KOMPAS.com - Pakar sepak bola Spanyol BBC, Guillem Balague, mengutarakan bahwa kekalahan historis 2-8 Barcelona dari FC Bayern Muenchen sebagai buah dari kebusukan klub yang berlangsung selama bertahun-tahun.