Pada tutorial kali ini, kita akan membahas mengenai text preprocessing dengan python. Sebelum itu, kita harus tahu apa itu text preprocessing?
Text preprocessing merupakan tahapan pembersihan text serta encoding ke numerical sebelum diberikan ke pada model machine learning. Text preprocessing juga banyak digunakan dalam information retrieval, sentiment analysis, information extraction, machine translation, dan chat bot.
Dalam text preprocessing ada beberapa tahapan yang biasanya akan dikerjakan antara lain.
Case Folding
Tahapan pertama yaitu Case Folding yang bertujuan untuk mengubah semua huruf yang ada di dalam dokumen menjadi huruf kecil. Hanya huruf ‘a’ sampai ‘z’ yang diterima. Karakter selain huruf dihilangkan dan dianggap delimiter. Contohnya:
Text Asal: Saya pergi ke Bandung
Case Folding: saya pergi ke bandung
Tokenizing
Selanjutnya yaitu tahapan Tokenizing yang bertujuan untuk memisahkan teks menjadi potongan-potongan yang disebut sebagi token untuk dianalisis nantinya. Kata, angka, simbol, tanda baca dan entitas penting lainnya dapat dianggap sebagai token. Contohnya:
Text asal: saya pergi ke bandung
Tokenizing: [‘saya’, ‘pergi’, ‘ke’, ‘bandung’]
Stopword Removal
Stopword removal adalah tahap mengambil kata-kata penting dari hasil token dan membuang kata umum yang biasanya muncul dalam jumlah besar dan dianggap tidak memiliki makna. Contohnya:
Text asal: rizki adalah anak yang baik. dia suka membantu ibunya untuk berjualan di pasar
Stopword removal: rizki anak baik. dia suka membantu ibunya berjualan pasar
Stemming
Stemming yaitu proses penguraian suatu kata menjadi bentuk kata dasarnya. Contohnya:
Text asal: rizki anak baik. dia suka membantu ibunya berjualan pasar
Stemming: rizki anak baik. dia suka bantu ibu jual pasar
Baca Juga
Text Preprocessing dengan Python
Setelah kita paham tahapan text preprocessing, selanjutnya kita akan menerapkan text preprocessing pada dataset bansos covid 19 dengan menggunakan python. Kalian bisa mendownload dataset tersebut disini.
Pertama kita buat folder yang berisi dataset dan juga file ipynb. Kemudian buka file ipynb melalui text editor kalian. Selanjutnya import library numpy dan pandas terlebih dahulu.
import numpy as np # Untuk Komputasi Numerik import pandas as pd # Untuk Manipulasi Data
Setelah itu, kita import dataset dengan menggunakan pandas dan kita tampilkan 5 data teratas pada dataset.
df = pd.read_csv("dataset Bansos COVID19.csv") #dataframe df.head()
Sekarang kita akan masuk ke tahap text preprocessing yang pertama yaitu case folding. Disini saya hanya akan melakukan tahapan case folding pada kolom tweet dan hasil dari case folding akan saya masukkan ke dalam kolom Clean_text.
def lowercase(dataset): return dataset.apply(lambda x: ''.join([w for w in x.lower()])) df['Clean_text'] = lowercase(df['tweet']) df
Selanjutnya, saya melakukan data cleansing pada text dengan menghapus url, username, character, dan kata yang kurang dari 2 huruf.
def preprocess_remove(to_remove, Clean_text): r = re.findall(to_remove, Clean_text) for i in r: Clean_text = re.sub(i, '', Clean_text) return Clean_text df['Clean_text'] = np.vectorize(preprocess_remove)('http[\w]*',df['Clean_text']) df['Clean_text'] = np.vectorize(preprocess_remove)('@[\w]*',df['Clean_text']) df['Clean_text'] = df['Clean_text'].str.replace('[^a-zA-Z]', ' ') df['Clean_text'] = df['Clean_text'].apply(lambda x: ' '.join([w for w in x.split() if len(w)>2])) df
Kemudian kita akan masuk ke tahapan tokenizing dan stemming. Tetapi sebelum itu kita install library sastrawi untuk melakukan stemming pada text berbahasa Indonesia. Jalankan perintah berikut di terminal untuk menginstall library sastrawi.
pip install sastrawi
Setelah library sastrawi terinstall, kita panggil module StemmerFactory. Lalu kita buat function dengan nama stem_sentences yang di dalamnya akan dilakukan tahapan tokenizing dan stemming.
from Sastrawi.Stemmer.StemmerFactory import StemmerFactory factory = StemmerFactory() stemmer = factory.create_stemmer() def stem_sentences(sentence): tokens = sentence.split() stemmed_tokens = [stemmer.stem(token) for token in tokens] return ' '.join(stemmed_tokens) df['Clean_text'] = df['Clean_text'].apply(stem_sentences)
Setelah itu, kita masuk ketahapan stopwords removal. Disini saya menggunakan library nltk untuk melakukan tahapan stopword removal.
from nltk.corpus import stopwords import nltk nltk.download('stopwords')
Selanjutnya, kita atur words ke dalam Indonesian untuk membuang kata dalam bahasa Indonesia yang tidak memiliki makna.
stop_words = stopwords.words('indonesian') new_tweet_text = [] word_dic = [] for text in df['Clean_text']: new_text = [] for word in text.split(): if word.lower() not in stop_words: new_text.append(word.lower()) word_dic.append(word.lower()) new_text = " ".join(new_text) new_tweet_text.append(new_text) df['Clean_text'] = new_tweet_text