May 9, 2017

Normalisasi Data Text (Text Preprocessing) dengan Python

Data text sangat kaya akan informasi, bahkan jika disadari, informasi yang beredar lewat internet sebagian besarnya adalah berbentuk text. Jika diolah dengan baik dan benar, data text dapat memiliki potensi pemanfaatan yang luar biasa.

Pengolahan text bukanlah perkara yang mudah, diperluakan beberapa tahap penting agar data text yang diolah dapat digunakan untuk mencari sebuah informasi didalamnya. Salah satu proses yang penting dalam pengolahan text atau juga biasa di kenal dengan istilah Natural Language Processing (NLP) adalah Text Preprocessing.

Text preprocessing merupakan tahap dimana data text dinormalisasi agar layak untuk diolah pada tahap selanjutnya yaitu analisis. Tahap ini dapat disesuaikan dengan kasus yang sedang ditangani. Pada kesempatan ini, kita akan membahas data text dari social media. 

Sifat social media sebagai jejaring social dimana satu user dapat secara bebas berkomunikasi atau berpendapat sesuai keinginannya membuat format data text pada social media menjadi beragam. Misalnya seseorang berkata "ayo kita mkan sekaragn sj di MaLioBoro!! @yasirutomo". Dari penggalan tweet ini, kita bisa melihat beberapa kesalahan seperti 'mkan' yang seharusnya makan 'sekaragn' yang harusnya 'sekarang', MaLioBoro yang seharusnya cukup 'Malioboro' sj dan tanda '!!' yang harusnya cukup sekali saja '!'. Jika data text ini langsung diolah untuk sebuah analisis seperti sentiment analisis, maka hasil yang didapat bisa saja keliru atau tidak akurat.

Untuk ini lah sebuah tahap preprocessing pada analisis text dibutuhkan, berkaitan dengan hal tersebut, saya beberapa waktu lalu membuat sebuah modul text preprocessing dengan Python. Data yang diolah merupakan data dari social media Twitter. Tujuan modul ini untuk membersihkan data text sehingga layak olah untuk tahap selanjutnya.

Pada kesempatan ini, kita tidak akan membahas secara teknis baris perbaris code Python untuk membuat text preporcessing ini. Lebih dari itu, membahas normalisasi kondisi apa saja yang saya lakukan sepertinya lebih menarik.

Secara keseluruhan ada 10 tahap normalisasi yang ada pada modul ini:

  1. Enter / new line normalization
    Untuk membuat text dengan beberapa baris menjadi satu baris saja.
  2. Lowercase normalization
    Untuk membuat seluruh isi text menjadi huruf kecil. contohnya 'Makan' jadi 'makan'.
  3. Reapeted dot
    Pada social media, sudah menjadi hal umum bahwa user biasanya menuliskan titik secara berulang. Seperti 'lets eat yeah.....', harusnya cukup 'lets eat yeah.'
  4. Link or URL normalization
    Menghapus kandungan Link atau URL dalan sebuah text. Pada kasus yang diangkat, text akan diolah untuk klasifikasi opini positif dan negatif. Bentuk text link atau URL tidak akan memberikan pengaruh apapun dalam proses analisis, bahkan dapat mengganggu hasil akhir, sehingga Link dapat dihilangkan.
  5. Repeated character normalization
    Karakter yang dimaksud disini adalah simbol-simbol text selain huruf, misalnya '! @ # $ % & ( ) - +' dan lainnya. Karakter ini jika membentuk pola emoticon dapat memiliki arti, namun pengguna social media kadang juga menuliskannya dengan karakter berulang, misal 'lets eat yeah :)))' yang seharusnya cukup 'lets eat yeah :)'.
  6. Elepsis normalization
    Elepsis merupakan sebuah tanda yang dapat berarti text tersebut masih memiliki sambungan yang lebih panjang, namun karna keterbatasan karakter yang dapat ditampung sebuah social media maka diberikan tanda elepsis untuk dapat dibaca yang lebih lengkap, baik itu pada laman yang sama atau mengarah ke sebuah URL berbeda. Tanda elepsis ini '…' tidak dibutuhkan pada tahap analisis sehingga dapat dihilangkan. Untuk kasus data yang diproses dimana elepsis masih berbentuk unicode fungsi ini dapat di ganti dengan code : text = "".join([x for x in text if ord(x)<128]).
  7. Tokenization
    Tokenisasi sebenarnya bukan merupakan normalisasi yang dilakukan, melainkan hanya pembantu dalam proses preprocessing. Fungsi token dikasus ini adalah untuk memisah kata perkata pada text untuk diolah lebih jauh seperti melakukan spelling check dan lainnya.
  8. Spelling check
    Spelling check seperti namanya berfungsi untuk merubah kata-kata typo menjadi tidak typo. Contohnya kata 'sekaragn' yang harusnya 'sekarang' dan 'mkan' yang seharusnya 'makan'.
  9. Reapeted word that has meaning
    Normalisi ini mungkin hanya berlaku untuk pengolahan kata dengan bahasa Indonesia. Fungsi dari normalisasi ini adalah membuat kata berulang yang tidak dilengkapi tanda baca '-' menjadi satu kesatuan. Seperti kata 'malam malam' menjadi 'malam-malam'
  10. Emoticon normalization
    Ini merupakan salah satu tahap normalisasi yang penting. Pada social media, ungkapan emosi melalui emoticon bisa saja sangat berangam. Pada banyak kasus, emoticon dapat dituliskan dengan spasi yang mengantarai karakter. Seperti ': - )' yang seharusnya ':-)'.
Secara keseluruhan kode untuk text preprocessing ini dapat dilihat di:

Code: https://github.com/yasirutomo/text-normalization

Satu lagi tahap normalisasi yang mungkin dibutuhkan adalah stemming, yaitu mengubah sebuah kata menjadi kata dasarnya. Sebagai contoh "Memakan" menjadi "Makan". Untuk proses ini, dapat mengunakan library Sastrawi pada Python.

Semoga bermanfaat.

Artikel Terkait

Normalisasi Data Text (Text Preprocessing) dengan Python
4/ 5
Oleh

Berlangganan

Suka dengan artikel di atas? Silakan berlangganan gratis via email

Tambahkan Komentar Anda