Text Preprocessing: Tahap Awal dalam Natural Language Processing (NLP)

Original article was published by Rianita Giovanni Katryn on Artificial Intelligence on Medium


Text Preprocessing: Tahap Awal dalam Natural Language Processing (NLP)

(Sumber: pch.vector, www.freepik.com)

Pernahkah Anda bertanya-tanya mengapa chatbot dapat membalas pesan yang kita kirimkan? Atau mengapa Google Assistant dan Siri dapat berinteraksi dengan manusia? Jawabannya adalah karena mereka dibangun menggunakan metode NLP.

“Natural Language Processing (NLP) adalah ilmu dalam bidang komputer dan bahasa (linguistik) yang berkaitan dengan interaksi antara komputer dan bahasa alami manusia.” [3]

NLP mempelajari bagaimana mesin dapat berinteraksi dengan bahasa manusia. NLP digunakan untuk menerapkan algoritma Machine Learning dalam bentuk teks dan ucapan. Dalam NLP, data yang digunakan adalah dokumen dengan data tidak terstruktur. Karena itu, diperlukan tahap persiapan data sebelum data tersebut diolah lebih lanjut sesuai dengan kebutuhan penerapannya.

Text Preprocessing

Merupakan tahap awal dalam metode NLP untuk dokumen yang berupa teks (NLP for Text). Text Preprocessing mempersiapkan teks yang tidak terstruktur menjadi data yang baik dan siap untuk diolah.

Ada berbagai proses yang dapat digunakan dalam tahap Text Preprocessing. Tidak ada aturan yang baku mengenai proses apa saja serta urutan yang digunakan dalam tahap Text Preprocessing. Semua tergantung dari output yang kita inginkan dari data tersebut. Kali ini, kita akan mencoba melakukan Text Preprocessing menggunakan bahasa pemrograman Python dengan library Natural Language Toolkit (NLTK).

Beberapa proses yang dapat digunakan dalam Text Preprocessing, antara lain:

1. Parsing

Suatu dokumen dapat tersusun dari beberapa bagian, bahasa atau format tertentu. Penguraian atau Parsing merupakan tahap memecah suatu rangkaian dokumen menjadi komponen-komponen terpisah. Pada tahap ini, kita menentukan unit dokumen mana yang akan digunakan sesuai dengan kebutuhan penerapan yang diinginkan.

Sebagai contoh:

  • Akan dilakukan analisa pada tiap paragraf dalam suatu artikel. Maka, artikel tersebut akan dipecah menjadi beberapa dokumen, sebanyak paragraf yang ada.
  • Dalam analisa tweet atau ulasan produk, maka masing-masing tweet/ulasan dapat dijadikan sebagai 1 dokumen.
Contoh Parsing pada Ulasan Produk

2. Case Folding

Case Folding merupakan proses untuk mengkonversi teks ke dalam format huruf kecil (lowercase). Hal ini bertujuan untuk memberikan bentuk standar pada teks.

Berikut ini merupakan contoh proses Case Folding yang diterapkan pada salah satu ulasan produk:

ulasan   = 'Barangnya oke. Penjualnya juga ramah dan respon cepat. Mantaplah pokoknya! Very good!'# Case Folding
hasil_cf = str.lower(ulasan)
print (hasil_cf)
# OUTPUT:
# barangnya oke. penjualnya juga ramah dan respon cepat. mantaplah pokoknya! very good!

3. Tokenizing/Lexical Analysis

Tokenizing atau disebut juga tahap Lexical Analysis adalah proses pemotongan teks menjadi bagian-bagian yang lebih kecil, yang disebut token. Pada proses ini juga dilakukan penghilangan angka, tanda baca dan karakter lain yang dianggap tidak memiliki pengaruh terhadap pemrosesan teks.

Berikut ini merupakan contoh proses Tokenizing pada ulasan produk yang sebelumnya telah melalui tahap Case Folding:

Tokenizing atau disebut juga tahap Lexical Analysis adalah proses pemotongan teks menjadi bagian-bagian yang lebih kecil, yang disebut token. Pada proses ini juga dilakukan penghilangan angka, tanda baca dan karakter lain yang dianggap tidak memiliki pengaruh terhadap pemrosesan teks.

Berikut ini merupakan contoh proses Tokenizing pada ulasan produk yang sebelumnya telah melalui tahap Case Folding:

# Tokenizing
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer(r'\w+')
hasil_token = tokenizer.tokenize(hasil_cf)
print (hasil_token)
# OUTPUT:
# ['barangnya', 'oke', 'penjualnya', 'juga', 'ramah', 'dan', 'respon', 'cepat', 'mantaplah', 'pokoknya', 'very', 'good']

4. Stemming

Stemming adalah proses pengubahan bentuk kata menjadi kata dasar atau tahap mencari root dari tiap kata.

Beberapa contoh algoritma stemming yang dapat digunakan, yaitu:

  • Porter Stemmer (English & Indonesia)
  • Stemming Nazief-Adriani (Indonesia)
  • Stemming Arifin-Setiono (Indonesia)
  • Khoja (Arabic)

Sebagai contoh, berikut ini digunakan library Sastrawi (Stemming Nazief-Adriani) pada proses Stemming:

# Stemming
from Sastrawi.Stemmer.StemmerFactory import StemmerFactory
factory = StemmerFactory()
stemmer = factory.create_stemmer()
input_stemm = str(hasil_token)
hasil_stemm = stemmer.stem(input_stemm)
print (hasil_stemm)
# OUTPUT:
# barang oke jual juga ramah dan respon cepat mantap pokok very good

Pada output, dapat terlihat bahwa imbuhan pada kata telah hilang dan setiap kata yang ditampilkan merupakan kata dasar.

5. Filtering/Stopword Removal

Tahap Filtering atau Stopword Removal adalah tahap pemilihan kata-kata yang dianggap penting. Terdapat dua metode yang dapat digunakan dalam tahap ini, yaitu:

  • Stoplist
    Pada metode ini, kita menyiapkan kumpulan kata yang tidak deskriptif (tidak penting) yang disebut stoplist/stopword. Kata yang termasuk ke dalam stoplist akan dibuang dan tidak digunakan pada proses selanjutnya.
  • Wordlist
    Kebalikan dari stoplist, pada metode ini kita menyiapkan kumpulan kata yang deskriptif (penting) yang disebut wordlist. Hanya kata yang termasuk ke dalam wordlist yang akan digunakan pada proses selanjutnya, sementara kata lainnya akan dibuang.

Di bawah ini merupakan proses Filtering dengan metode wordlist pada ulasan produk yang sebelumnya telah melalui tahap Stemming. Sebagai contoh, file wordlist diberi nama ‘indonesia’, yang berisi kumpulan kata dalam Bahasa Indonesia.

# Filtering
from nltk.corpus import stopwords
wordlist = set(stopwords.words('indonesia'))
hasil_sw = [i for i in hasil_stemm.split() if i in wordlist]
print (hasil_sw)
# OUTPUT:
# ['barang', 'oke', 'jual', 'juga', 'ramah', 'dan', 'respon', 'cepat', 'mantap', 'pokok']

Pada output, dapat terlihat bahwa kata yang ditampilkan hanya kata yang terdapat dalam wordlist (Bahasa Indonesia), sementara kata lainnya tidak akan disimpan untuk pemrosesan teks selanjutnya. Pada proses Filtering, data pada stoplist atau wordlist dapat ditambahkan atau dikurangi sesuai dengan kebutuhan yang diinginkan.

Setelah melewati tahap Text Preprocessing, maka data telah siap untuk diproses sesuai dengan kebutuhannya dalam Natural Language Processing (NLP). Contoh penerapan yang dilakukan dengan menggunakan metode NLP for Text antara lain: chatbot, sistem penerjemah, analisis sentimen, dan lainnya.