Part 3 Natural Language Processing : World Embedding
Tulisan ini merupakan lanjutan dari tulisan sebelumnya “Bersih-bersih Data Crawling”. Pada tulisan sebelumnya telah dilakukan pembersihan data tweet soal peraturan celana cingkrang pada ASN(Aparatur Sipil Negara).
Word Embedding
Word Embedding adalah salah satu metode untuk melakukan klasifikasi sentimen dengan cara merepresentasikan suatu kata dalam suatu vektor. Untuk menghitung sentimen apakah kalimat tersebut mempunyai sentimen posistif atau negatif. Kata pada kalimat tersebut perlu dihitung nilainya apakah kata tersebut memiliki representasi positif atau negatif contohnya kata “kagum” akan lebih condong ke positif sedangkan “jelek” lebih ke negatif. Namun dalam pembuatan Word Embedding bukan hanya representasi ke positif atau negatf namun bisa juga apakah kata sifat, kata benda, dan lain-lain yang akan membuat kata tersebut mempunyai banyak nilai untuk masing-masing representasi sehingga dimensinya semakin besar. Namun nantinya representasinya seperti apa akan dihitung oleh komputer secara otomatis.
Nah untuk klasifikasi sentimen nantinya akan digunakan teknik Word Embedding ini yang saya dapat melalui tutorial dari TensorFlow disini.
Yuk Mulai Coding!!!
Untuk mengikuti sesi ini silahkan buka Google Colab pada link ini. Untuk data tweet yang sudah dilabeli ada disini.
from google.colab import files
import pandas as pd
import io# Read file by upload
upload_files = files.upload()
for filename in upload_files.keys():
df = pd.read_csv(io.StringIO(upload_files[filename].decode('latin-1')))
Upload file data tweet yang sudah dibersihkan(clean_tweet.csv).
# Checking
print(df.head().to_markdown())
Check isi dari file csv yang diupload. Hasilnya akan seperti ini
vocab_size = 10000
embedding_dim = 16
max_length = 25
trunc_type='post'
padding_type='post'
oov_tok = "<OOV>"
training_size = 140
Nah, disini dilakukan pendefinisian varibel akan dibuat Word Embedding 10000 kata dengan dimensinya 16 panjang kalimat maksimumnya 25 kata, trunc_type post berarti apabila katanya berlebihan akan disimpan bagian awalnya, sedangkan padding_type post berarti peletakkan katanya berada diletak di awal, oov_tok adalah pengganti kata bila katanya tidak ditemukan di kamus katanya, training_size adalah jumlah kalimat yang digunakan untuk training diatur sekitar 1/3 dari data total.
Disini nantinnya nilai dari Word Embeddingnya aka diupdate melalui Model yang ditraining sebanyak 50 epochs.
Setelah dilakuan training dan validasi didapatkan akurasi training 0.99 tapi akurasi validasinya 0.72 ini menandakan kita mendapat overfitting(modelnya hanya jago di test case saat latihan saja tapi saat dicoba ke test case lain kurang jago).
Selanjutnya saya mencoba menhitung confusion matriknya dapat terlihat sepertinya untuk menentukan kalimat negatif masih belum cukup baik.
Mengklasifikasi sentimen negatif sebagai negatif sebanyak 44 kalimat
Mengklasifikasi sentimen negatif sebagai positif sebanyak 5 kalimat
Mengklasifikasi sentimen positif sebagai positif sebanyak 6 kalimat
Mengklasifikasi sentimen positif sebagai negatif sebanyak 14 kalimat
Pada bagian akhir saya juga mencoba untuk melakukan input kalimat saya sendiri. Kamu juga bisa mencobanya juga dengan kalimat kamu sendiri.
Bagaimana memperbaiki hasilnya?
Jujur saya masih belum puas dengan hasil yang didapat. Memang pekerjaan AI memang nggak bisa dilakukan sekali saja tapi butuh trial dan error. Berikut menurut saya bagaimana supaya hasilnya dapat lebih baik.
- Tambah datanya dan seimbangkan antara positif dan negatif, input kalimat sebanyak 210 menurut saya masih sangat sedikit hehehe dan untuk menambahnya lagi saya agak malas karena harus diklasifikasi manual. Data yang diambil pun kebanyakan kalimatnya negatif jadi modelnya hanya codong belajarnya pada kalimat negatif saja.
- Menggunakan metode atau model yang lain seperti Naive Bayes atau LSTM. Pada saat membantu teman saya saya menggunakan metode Naive Bayes codenya ada disini dan dihasilkan hasil yang cukup baik namun datanya terhapus. Mengapa saya pilih LSTM karena bisa saya kalimatnya punya double negatif yang membuatnya jadi positif contohnya “cingkrang tidak jelek”. Nah LSTM dapat menghitung relasi antar dua kata tersebut sedangkan yang sekarang belum.
Sampai ketemu kembali
Horeee… penjalanan akhir dari NLP sudah selesai namun masih bisa kamu improve lagi. Mohon maaf saya masih belum sempat untuk menulis banyak hal-hal. Mudah-mudahan kedepannya ada banyak hal yang bisa saya tulis.