Hello, Precious People!
Semoga kalian dalam keadaan sehat dan penuh semangat, ya! 😊
Pernah enggak, sih, kepikiran bahwa sebuah mesin bisa memahami bahasa manusia dengan sangat baik? Mulai dari mengetahui bahasa yang kita gunakan hingga memeriksa tulisan kita dengan memahami konteks.
💻 Mulai Belajar Pemrograman
Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.
Daftar SekarangIt’s incredibly handy, right? Evolusi artificial intelligence (AI) dalam bidang linguistik telah membawa banyak manfaat, mulai dari membantu penulis di berbagai bidang, mendukung para pendidik, hingga mempercepat produktivitas sehari-hari kita semua.
Hi! Kenalin, aku Faiqa, mahasiswa magang Merdeka di Dicoding tahun 2024. Selama 4 bulan terakhir dari September hingga Desember, aku sudah berhasil mengeksplorasi berbagai model AI untuk spelling error correction.
Nah, implementasi ini adalah salah satu cabang dari natural language processing (NLP). Dengan ini, kita bisa memahami cara AI bekerja untuk memperbaiki kesalahan dalam penulisan.
Pada artikel kali ini, aku akan mengajak kamu menyelami perjalanan menarik dari salah satu penerapan NLP ini, mulai dari model berbasis sequence, seperti RNN, hingga model mutakhir, seperti Transformers.
Model-model ini telah menjadi game-changer dalam tugas spelling error correction, yang kini menjadi elemen penting di berbagai aplikasi.
Penasaran gimana hasil eksplorasiku selama magang? Yuk, kita mulai bahas satu-persatu! 🚀
Sebelum Kita Mulai, Kenapa Topik Ini Penting?
Nah, sebelum we dive deeper into the topic, mari pahami why does this actually matters? Bahasa itu lebih dari sekadar alat komunikasi—bahasa adalah jembatan yang menghubungkan manusia, mencerminkan budaya, pola pikir, dan struktur masyarakat kita.
Di Indonesia, kita punya lebih dari 700 bahasa daerah, lho! Kekayaan ini adalah bukti nyata keragaman budaya, sejarah, dan identitas lokal. Namun, di sisi lain, keberagaman ini juga membawa tantangan besar: bagaimana caranya bikin model NLP yang bisa benar-benar paham konteks dan makna dalam lingkungan sekompleks ini?
Nah, kalau dalam linguistik—ilmu yang mempelajari bahasa secara ilmiah—kita belajar soal proses bunyi, kata, dan kalimat dibentuk hingga menghasilkan makna. Namun, buat mesin? Tentu itu bukan hal sederhana.
Di sinilah AI dan NLP datang sebagai inovasi yang luar biasa. Teknologi ini memungkinkan mesin mengenali pola, memahami konteks, dan menghasilkan bahasa yang semakin mirip dengan manusia, bahkan melampaui yang sering terlewati oleh manusia.
Sebagai contoh, dalam bahasa Indonesia, koreksi ejaan itu enggak sekadar soal mencocokkan bunyi kata (fonetika), tetapi juga harus memahami makna dan struktur kalimatnya. Hal ini membuat tugas koreksi menjadi lebih kompleks karena setiap bahasa punya ciri khas yang unik.
Nah, berbicara soal kesalahan ejaan, ternyata ada beragam tipe typo yang bisa terjadi. Mulai dari salah ketik sederhana, hingga kesalahan yang muncul karena kata-kata yang terdengar mirip, tetapi punya arti berbeda.
Bahkan, konteks kalimat yang kurang sesuai juga bisa menjadi penyebab kesalahan tersebut. Dengan memahami jenis-jenis kesalahan ini, teknologi koreksi ejaan bisa sangat membantu kita untuk menulis lebih rapi dan efisien.
Dalam deteksi kesalahan ejaan, ada berbagai jenis kesalahan yang bisa terjadi pada kata, seperti Dicoding. Berikut adalah contoh kesalahan yang sering terjadi.
- Insertion error: Terjadi ketika ada karakter tambahan yang tidak seharusnya dimasukkan. Misalnya, Dicodding (menambahkan satu huruf “d”).
- Substitution error: Terjadi ketika satu karakter salah digantikan oleh karakter lain. Sebagai contoh, Dicsding (mengganti huruf “o” dengan “s”).
- Transposition error: Terjadi ketika posisi dua karakter tertukar. Contohnya adalah Dicdoing (huruf “c” dan “d” tertukar).
- Deletion error: Terjadi ketika satu atau lebih karakter terlewat atau dihapus. Misalnya, Dicoing (menghapus huruf “d” setelah “i”).
Dengan mengenali jenis-jenis kesalahan ini, teknologi koreksi ejaan dapat membantu kita memperbaiki kata yang salah ketik dengan lebih efektif dan akurat.
Mempelajari topik ini memberikan wawasan baru dalam pengembangan teknologi AI yang lebih inklusif dan komprehensif, terutama dalam memahami dan memproses bahasa.
Koreksi ejaan dapat dipandang sebagai tugas sequence-to-sequence, ketika inputnya berupa urutan kata, dan output-nya adalah urutan kata yang telah diperbaiki.
Berbincang-Bincang dengan Hasil Eksplorasiku
Nah, mari kita masuk ke inti pembahasannya. Apa saja sih yang sudah aku lakukan selama proses magang ini?
Prosesnya dimulai dengan sistem yang mendeteksi kata-kata yang mengandung kesalahan, kemudian menilai kemungkinan kata yang lebih tepat berdasarkan konteks yang ada.
Setelah itu, sistem akan memberikan prediksi atau rekomendasi untuk menggantikan kata salah dengan yang benar. Pendekatan ini memungkinkan sistem untuk memahami konteks dan pola bahasa yang ada sehingga hasil koreksinya menjadi lebih akurat serta relevan.
Proses deteksi kesalahan dalam sistem koreksi ejaan dapat digambarkan seperti diagram di atas, yakni teks atau string yang menjadi input akan diproses melalui beberapa tahap utama.
Pertama, proses preprocessing dilakukan untuk membersihkan teks sehingga lebih siap untuk dianalisis. Setelah itu, sistem melakukan error detection untuk mengidentifikasi kesalahan ejaan dalam teks dan menghasilkan daftar kandidat koreksi.
Dalam tahap ini, model akan memberikan beberapa alternatif kata yang dianggap paling relevan. Akhirnya, kandidat koreksi yang terbaik berdasarkan konteks kalimat akan dipilih dan menghasilkan prediksi berupa teks yang telah diperbaiki.
Lalu, data apa yang aku gunakan? Proses eksplorasiku menggunakan dataset SPECIL yang dirancang untuk tugas spelling error correction untuk bahasa Indonesia. Pemilihan dataset ini menjadi langkah penting untuk memastikan model dapat menangkap pola komprehensif dalam data sekuensial.
SPECIL: Spell Error Corpus for Indonesian Language mencakup pasangan data teks yang mengandung berbagai macam kesalahan ejaan (kalimat_salah) dan teks targetnya (kalimat_awal). Berikut adalah contoh sampel datanya.
Apa saja model AI yang sudah aku eksplor? Mari kita bahas satu persatu!
1. Rule-Based Models (Model Berbasis Aturan)
Pertama, aku memulai perjalananku dengan menggunakan model yang paling sederhana, yaitu Rule-Based Models. Model yang disebut dengan nama lain berbasis aturan ini mengandalkan logika linguistik sederhana, seperti n-gram atau Norvig Spell Checker.
Pendekatan ini bekerja dengan menggunakan aturan-aturan yang sudah ditentukan untuk mengoreksi kesalahan ejaan berdasarkan kemungkinan pengeditan yang ada dalam teks. Salah satu kelebihan utama dari model ini adalah kemudahan implementasi, terutama untuk menangani kesalahan ejaan yang jelas dan langsung terlihat.
Selain itu, model ini juga tidak memerlukan data pelatihan yang besar dan dapat bekerja dengan cepat pada kalimat pendek. Namun, sayangnya, model ini memiliki kekurangan, yaitu ketidakmampuannya untuk menangani kesalahan yang lebih kompleks, terutama yang berkaitan dengan konteks kalimat panjang atau nuansa semantik.
Pendekatan ini menjadi langkah awal karena kesederhanaan dan efisiensinya, tetapi tidak jadi aku gunakan karena keterbatasannya yang tidak sesuai dengan kebutuhan pengolahan bahasa yang semakin kompleks.
Pada gambar berikut menunjukkan sistem yang menghitung seluruh kemungkinan dari kata dasar ‘kucing’. Proses prediksi ini menjadi sangat lambat, terutama ketika teks yang diperiksa sangat panjang karena harus menghitung setiap kemungkinan perubahan dalam teks secara berulang.
2. Recurrent Neural Networks (RNN)
Setelah model ruled-based tidak mendapatkan hasil yang memuaskan, eksplorasi selanjutnya adalah menggunakan Recurrent Neural Networks (RNN). RNN sebagai salah satu algoritma deep learning muncul sebagai solusi untuk menangani data sekuensial, seperti kalimat dalam teks.
RNN dapat menangkap hubungan antar kata dalam urutan tertentu, membuatnya lebih efektif dalam memahami urutan kata dibandingkan model berbasis aturan.
Namun, lagi-lagi, RNN memiliki keterbatasan dalam memahami konteks jangka panjang (long-term dependencies), yang membuatnya kurang efektif ketika menangani kalimat panjang atau konteks yang lebih rumit.
Lalu, bagaimana hasilnya? Setelah dilakukan pembangunan model arsitektur RNN dan melatihnya menggunakan 1000 epoch dan beberapa parameter pendukung, didapatkan hasil model accuracy berikut.
Hasil eksplorasi model ini digambarkan oleh grafik di bawah. Kita dapat menyimpulkan bahwa model proses pelatihan mengalami peningkatan yang cepat pada beberapa langkah epoch pertama.
Namun, akurasi menjadi stabil dan tidak meningkat lebih jauh. Ini mengindikasikan bahwa model akan mengalami kesulitan ketika berhadapan dengan data di luar dari yang dilihat selama pelatihan dan hanya mampu untuk mempelajari pola sekuensial dasar.
Apakah model ini bisa digunakan? Tentu tidak, karena akan sulit diimplementasikan ketika kalimat yang ingin diperiksa semakin panjang. Kesimpulannya, RNN ‘kalah’ dalam eksplorasi ini.
3. Long Short-Term Memory (LSTM)
Apakah solusi eksplorasiku berhenti sampai di sana? Tentu tidak, Bestie!
Untuk mengatasi masalah pada RNN yang telah dilakukan sebelumnya, model Long Short-Term Memory (LSTM) digunakan. LSTM bekerja dengan menambahkan mekanisme memori yang memungkinkan model ini mengingat informasi dalam waktu lebih lama.
Solusi yang dicoba di sini adalah varian dari LSTM, yaitu Bidirectional LSTM (Bi-LSTM). Mekanisme dua arahnya memperluas kemampuan model standar untuk mempelajari konteks baik dari urutan ke depan maupun ke belakang.
Berikut adalah hasil evaluasi dari penggunaan Bi-LSTM setelah 50 epochs yang sudah didapatkan.
Hasil grafik training dan validation loss di atas menunjukkan model mengalami konvergensi setelah sekitar 20–30 epoch dengan hasil nilai loss yang cukup rendah. Model ini berhasil menangkap kesalahan sederhana seperti substitusi huruf, walaupun jauh dari kata sempurna dan hanya mampu memproses kata-kata pendek.
Sebagai contoh, mari kita lihat hasil prediksinya untuk kata “memperbanyak” dan “sensitivitas” berikut ini.
Namun, terdapat beberapa kelemahan pada Bi-LSTM yang membuatnya kurang cocok untuk tugas ini. Salah satunya adalah kesalahan model dalam menghasilkan koreksi yang tidak sesuai dengan ground truth. Model cenderung menghasilkan kata-kata yang kurang relevan karena kesulitan menangkap konteks yang lebih kompleks dalam kalimat panjang.
Selain itu, Bi-LSTM memiliki kekurangan dari sisi efisiensi komputasi, terutama pada dataset besar atau proses inferensi yang membutuhkan kecepatan tinggi. Karena kelemahan tersebut, Bi-LSTM akhirnya tidak digunakan sebagai solusi akhir.
4. Transformers
Setelah sudah bermain-main dengan metode deep learning, aku mencoba ‘loncat’ ke metode Transformers. Namun sebelum itu, pernahkah kamu mendengar metode ini?
Munculnya Transformers tentu membawa revolusi dan harapan baru dalam bidang NLP. Dengan mekanisme self-attention, Transformers memungkinkan model untuk memproses kata-kata dalam konteks kalimat secara bersamaan, tanpa bergantung pada urutan kata tertentu.
Hal ini memungkinkan Transformers menangkap hubungan antar kata lebih efektif dan lebih cepat, bahkan dalam kalimat yang kompleks. Meskipun demikian, Transformers membutuhkan daya komputasi yang lebih tinggi dan data pelatihan yang lebih besar untuk mencapai hasil optimal.
Kalau membangun sebuah arsitektur model dasar Transformers membutuhkan waktu pelatihan dan resource yang sangat besar, model seperti BERT (Bidirectional Encoder Representation from Transformer) lebih terfokus pada representasi teks dengan encoder-only architecture.
Pendekatan ini lebih cocok untuk tugas klasifikasi atau deteksi, tetapi kurang optimal untuk tugas sequence-to-sequence, seperti koreksi ejaan.
Dapat dilihat hasil dari eksplorasi melalui kedua grafik berikut. Kurva tersebut menunjukkan proses pembelajaran model yang tidak optimal, baik saat training maupun evaluation. Hal ini mengindikasikan bahwa model mengalami kesulitan dalam mempelajari pola data secara menyeluruh.
Hasil ini menunjukkan bahwa pendekatan dengan arsitektur BERT kurang sesuai untuk tugas koreksi ejaan. Ditambah, waktu pelatihan yang jauh lebih lama dibandingkan metode lainnya, serta kebutuhan akan sumber daya komputasi yang lebih besar.
Karena kekurangan tersebut, pendekatan ini tidak dijadikan solusi akhir. Namun, eksplorasi ini menjadi dasar untuk mencoba model yang lebih efisien dan spesifik, seperti T5 (Text-To-Text Transfer Transformer), yang didesain khusus untuk tugas sequence-to-sequence.
5. T5 (Text-to-Text Transfer Transformer)
Dalam eksplorasi terakhirku, aku mencoba menggunakan metode T5 atau Text-to-Text Transfer Transformer. Apakah kamu pernah mendengar tentang metode ini?
So, untuk meningkatkan kemampuan Transformers, model T5 (Text-to-Text Transfer Transformer) dikembangkan. T5 mendefinisikan setiap tugas NLP sebagai masalah text-to-text. Artinya, baik input maupun output dalam tugas, seperti klasifikasi, terjemahan, hingga koreksi ejaan direpresentasikan dalam bentuk teks.
Pendekatan ini membuat T5 sangat fleksibel dan cocok untuk berbagai tugas, yang membuatnya sangat fleksibel untuk berbagai tugas, termasuk koreksi ejaan.
Dengan kekuatan self-attention dan pendekatan text-to-text, T5 dapat menangani kesalahan berbasis konteks secara lebih baik, menjadikannya pilihan unggul untuk aplikasi koreksi ejaan. Namun, seperti model sebelumnya, T5 membutuhkan dataset besar dan daya komputasi tinggi untuk menghasilkan prediksi yang akurat.
Hasil eksplorasi model ini dapat dilihat dari grafik loss yang didapatkan saat proses training dan evaluation di bawah ini.
Grafik menunjukkan bahwa baik selama training maupun evaluasi, model T5 mengalami penurunan loss yang stabil hingga langkah pembelajaran terakhir. Ini menandakan bahwa model berhasil belajar dengan baik.
Kemampuan T5 yang dibangun untuk menggenerasi teks kembali ke dalam bentuk teks lagi, menegaskan bahwa model T5 unggul dan ideal untuk tugas prediksi kesalahan ejaan, baik dari segi akurasi, efisiensi, maupun skalabilitasnya ke berbagai konteks aplikasinya.
Mari kita perhatikan hasil prediksinya.
Meskipun pelatihan model T5 memerlukan daya komputasi yang besar, hasil akhirnya sepadan. Ketika dicoba dengan kalimat baru yang mengandung kesalahan ejaan, T5 mampu menghasilkan versi teks yang benar, lengkap dengan tanda baca yang sesuai konteks.
Hal ini menunjukkan bahwa model T5 tidak hanya akurat, tetapi juga memahami konteks dengan sangat baik.
Kesimpulannya, eksplorasi model T5 ini membuka peluang baru dalam penerapan teknologi NLP, khususnya untuk tugas-tugas yang memerlukan pemahaman konteks mendalam, seperti koreksi ejaan.
Dengan hasil prediksi yang memuaskan, T5 membuktikan diri sebagai solusi yang unggul dan layak dipertimbangkan untuk pengembangan lebih lanjut.
PENUTUPAN
The evolution of AI in linguistics isn’t just a technical story; it’s a human story. Dengan terus membangun sistem yang menangkap keindahan dan kompleksitas bahasa yang kita miliki, it will live for generations to come.
In a much bigger scale, teknologi ini telah menjadi ‘teman’ yang membantu kita berkomunikasi lebih efektif, dan bahkan membawa mesin semakin dekat untuk memahami cara kita berpikir dan berinteraksi.
Tentu saja, ini hanya awal dari perjalanan panjang yang akan membawa kita lebih dalam ke dunia pemrosesan bahasa alami. Namun, itu adalah topik yang akan kita bahas di kesempatan lain.
Sekarang, bagaimana kita sebagai masyarakat digital dapat berperan dalam perkembangan teknologi ini? Aku rasa, inilah saatnya bagi kita—baik itu kamu maupun aku—untuk berkontribusi dalam akselerasi proyek-proyek NLP dan AI, khususnya pada bahasa Indonesia.
Ada berbagai kesempatan menarik yang bisa kamu ikuti untuk memulai perjalanan mempelajari AI. Kamu dapat mengikuti program edukasi teknologi, seperti Coding Camp powered by DBS Foundation atau Laskar AI.
Program-program ini menawarkan peluang untuk mengeksplorasi dunia NLP dan AI lebih dalam serta menjadi langkah awal bagi kita untuk memberikan kontribusi nyata.
Yuk, bersama-sama kita ciptakan teknologi yang bukan hanya pintar, tetapi juga memberikan manfaat bagi semua! Dimulai dengan langkah-langkah kecil, kita bisa membuat dampak besar dalam dunia digital yang terus berkembang.
Kami tunggu kamu di sana, ya! 🎉