text preprocessing dengan python

Text Preprocessing dengan Python

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

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

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top