Dalam pemrosesan bahasa alami (NLP), informasi yang akan ditambang berisi data yang strukturnya "acak" atau tidak terstruktur. Oleh karena itu, perlu dilakukan perubahan bentuk menjadi data terstruktur untuk keperluan lebih lanjut (analisis sentimen, pemodelan topik, dll.) Show
Foto oleh Edho Pratama pada Persiapan Unsplash. Perpustakaan yang dibutuhkan Salah satu kelebihan python adalah mendukung banyak pustaka sumber terbuka. Ada banyak library python yang bisa digunakan untuk mengerjakan dan mengimplementasikan masalah di NLP Perangkat Bahasa Alami (NLTK)Natural Language Toolkit atau singkatnya NLTK, adalah pustaka python untuk bekerja dengan pemodelan teks. NLTK menyediakan alat yang baik untuk menyiapkan teks sebelum digunakan dalam pembelajaran mesin atau algoritma pembelajaran mendalam. Cara termudah untuk menginstal NLTK adalah dengan menggunakan "pip" pada baris perintah/terminal pip install nltk Langkah pertama yang perlu Anda lakukan setelah menginstal NLTK adalah mengunduh paket NLTK import nltk _NLTKAnda dapat membaca dokumentasi lengkap dari NLTK di sini Python Sastra (Bahasa Indonesia Stemming)Sastrawi Python adalah perpanjangan dari proyek PHP Sastrawi. Sastrawi Python adalah library sederhana yang dapat mengubah sufiks bahasa Indonesia menjadi bentuk dasarnya. Sastrawi juga dapat diinstal melalui "pip" pip install Sastrawi Penggunaan Sastrawi Python sangat sederhana seperti baris kode di bawah ini # import StemmerFactory class Anda dapat membaca dokumentasi lengkap dari Sastrawi Python di sini 1. Kasus lipat Case folding adalah salah satu bentuk text preprocessing yang paling sederhana dan efektif meskipun sering diabaikan. Tujuan dari case folding adalah untuk mengubah semua huruf dalam dokumen menjadi huruf kecil. Hanya huruf 'a' hingga 'z' yang diterima. Karakter selain huruf dihilangkan dan diperlakukan sebagai pembatas. Pada tahap ini kami tidak menggunakan pustaka eksternal apa pun, kami dapat memanfaatkan modul yang tersedia di python Ada beberapa metode yang bisa digunakan dalam tahap case folding, bisa menggunakan sebagian atau menggunakan semuanya, tergantung dari tugas yang dihadapi. Ubah teks menjadi huruf kecilSalah satu contoh penting penggunaan huruf kecil adalah untuk mesin pencari. Bayangkan Anda sedang mencari dokumen yang berisi "indonesia" tetapi tidak ada hasil yang muncul karena "indonesia" diindeks sebagai "INDONESIA". Siapa yang harus kita salahkan? . I. perancang yang mengatur antarmuka pengguna atau pengembang yang mengatur sistem dalam indeks pencarian? Contoh di bawah ini menunjukkan bagaimana python mengubah teks menjadi huruf kecil kalimat = "Berikut ini adalah 5 negara dengan pendidikan terbaik di dunia adalah Korea Selatan, Jepang, Singapura, Hong Kong, dan Finlandia."lower_case = kalimat.lower()_ Hapus angkaHapus nomor jika tidak relevan dengan apa yang akan Anda analisis, misalnya seperti nomor rumah, nomor telepon, dll. Ekspresi reguler (regex) dapat digunakan untuk menghapus karakter numerik. Python memiliki modul pip install Sastrawi _0 untuk melakukan hal-hal yang berhubungan dengan regexContoh di bawah ini menunjukkan bagaimana python menghapus angka dalam sebuah kalimat import re # impor modul regular expressionkalimat = "Berikut ini adalah 5 negara dengan pendidikan terbaik di dunia adalah Korea Selatan, Jepang, Singapura, Hong Kong, dan Finlandia."_ Hapus tanda bacaSama halnya dengan angka, tanda baca dalam kalimat tidak memiliki pengaruh pada text preprocessing. Menghapus tanda baca seperti [!”#$%&’()*+,-./:;<=>?@[\]^_`{|}~] dapat dilakukan di pyhton seperti dibawah ini : kalimat = "Ini &adalah [contoh] kalimat? {dengan} tanda. baca?!!" Hapus spasi putih (karakter kosong)Untuk menghapus spasi di awal dan akhir, Anda dapat menggunakan fungsi pip install Sastrawi 1 dengan python. Lihatlah kode di bawah inikalimat = " \t ini kalimat contoh\t "_2. Tokenisasi Tokenizing adalah proses memisahkan teks menjadi potongan-potongan yang disebut token untuk analisis selanjutnya. Kata, angka, simbol, tanda baca, dan entitas penting lainnya dapat dianggap sebagai token. Dalam NLP, token diartikan sebagai "kata-kata" meskipun tokenisasi juga dapat dilakukan pada paragraf dan kalimat Fungsi pip install Sastrawi _2 di python dapat digunakan untuk memisahkan teks. Lihatlah contoh di bawah inikalimat = "rumah idaman adalah rumah yang bersih" Sayangnya, level tokenisasi tidak sesederhana itu. Dari keluaran kode di atas, kita akan mengolah kata "home" dan "home" sebagai 2 entitas yang berbeda. Masalah ini tentunya akan mempengaruhi hasil analisis teks itu sendiri Untuk mengatasi masalah ini kita bisa menggunakan modul dari NLTK yang sudah diinstal sebelumnya Tokenisasi kata-kataSebuah kalimat atau data dapat dipecah menjadi kata-kata dengan kelas pip install Sastrawi 3 pada modul NLTK# impor word_tokenize dari modul nltk Dari keluaran kode diatas terdapat tampilan tanda baca (. ) dan koma (,) serta tanda "Andi" yang masih menggunakan huruf kapital di awal kata. Hal ini nantinya dapat mengganggu proses perhitungan pada penerapan algoritma tersebut. Jadi, sebaiknya teks sudah melewati tahap case folding sebelum diberi token agar menghasilkan hasil yang lebih konsisten Kita dapat menambahkan fungsi case folding untuk menghilangkan tanda baca dan mengubah teks menjadi huruf kecil import nltk _0Kita juga bisa mendapatkan informasi frekuensi kemunculan setiap token dengan kelas pip install Sastrawi 4 yang sudah tersedia di modul NLTKimport nltk _1Untuk memvisualisasikannya secara grafis, kita perlu menginstal library Matplotlib import nltk _2Grafik frekuensi kemunculan kata dalam dokumenTokenisasi kalimatPrinsip yang sama dapat diterapkan pada kalimat terpisah dalam paragraf. Anda dapat menggunakan kelas pip install Sastrawi _5 pada modul NLTK. Saya telah menambahkan kalimat ke contoh di bawah iniimport nltk _33. Penyaringan (Penghapusan Stopword)Filtering adalah tingkatan pengambilan kata-kata penting dari hasil token dengan menggunakan algoritma stoplist (membuang kata-kata yang kurang penting) atau wordlist (menjaga kata-kata penting) Stopwords adalah kata-kata umum yang biasanya muncul dalam jumlah banyak dan dianggap tidak memiliki arti. Contoh kata henti dalam bahasa Indonesia adalah "yang", "dan", "di", "dari", dll. Makna di balik penggunaan stopwords adalah dengan menghilangkan kata-kata yang memiliki informasi rendah dari sebuah teks, kita dapat fokus pada kata-kata penting saja. Contoh penggunaan filter dapat ditemukan dalam konteks mesin pencari. Jika kueri penelusuran Anda adalah "apa arti manajemen?" . Ini dapat dilakukan dengan mencegah kata-kata dari daftar stopword dianalisis Memfilter dengan NLTKimport nltk _4Menyaring dengan literaturSelain stemming, library Sastrawi juga mendukung proses filtering. Kita dapat menggunakan pip install Sastrawi _6 dari modul literaturUntuk melihat daftar stopword yang sudah didefinisikan di library Sastrawi, Anda dapat menggunakan kode berikut import nltk _5Kode di atas akan menampilkan stopword yang tersedia di library Sastrawi. Proses penyaringan pada Sastrawi dapat dilihat pada baris kode di bawah ini import nltk _6Kita dapat menambah atau mengurangi kata pada daftar stopword sesuai dengan kebutuhan analisis. Pada dasarnya daftar stopword yang ada di perpustakaan Sastrawi tersimpan dalam daftar yang Anda lihat. Jadi sebenarnya kita hanya perlu merubah register yang ada di list. Tapi itu bisa menjadi masalah jika dalam suatu kasus kita diharuskan menambahkan stopword secara dinamis Perpustakaan Sastrawi dapat mengatasi masalah tersebut, perhatikan kode di bawah ini import nltk _7Menurut Jim Geovedi dalam artikelnya menjelaskan bahwa penyesuaian daftar stopword perlu dilakukan setiap kali proyek analisis pertama kali dilakukan. Memang bukan sesuatu yang melelahkan, namun jika tidak dilakukan maka akan mengakibatkan salah interpretasi data 4. BerasalStemming adalah proses menghilangkan infleksi suatu kata ke bentuk dasarnya, tetapi bentuk dasarnya tidak berarti sama dengan kata dasarnya. Misalnya, kata "dengarkan", "dengarkan", "dengarkan" akan diubah menjadi kata "dengarkan" Idenya adalah ketika Anda mencari dokumen "cara membuka lemari", Anda juga ingin melihat dokumen yang menyebutkan "cara membuka lemari" atau "cara membuka lemari" meskipun kedengarannya buruk. Tentu Anda ingin mencocokkan semua variasi kata untuk memunculkan dokumen yang paling relevan Stemming dengan NLTK (Bahasa Inggris)Ada banyak algoritma yang digunakan untuk stemming. Salah satu algoritma tertua dan terpopuler adalah algoritma Porter. Algoritme ini tersedia dalam modul NLTK melalui class pip install Sastrawi 7import nltk _8Selain Porter, NLTK juga mendukung algoritma Lancester, WordNet Lemmatizer, dan SnowBall. Sayangnya proses stemming Bahasa Indonesia pada modul NLTK belum didukung Stemming Bahasa Indonesia menggunakan Sastrawi PythonProses stemming antara satu bahasa dengan bahasa lain tentu saja berbeda. Misalnya pada teks bahasa Inggris, proses yang diperlukan hanyalah proses menghilangkan akhiran. Sedangkan dalam teks bahasa Indonesia, semua imbuhan, baik sufiks maupun awalan, juga dihilangkan Untuk melakukan stemming bahasa Indonesia kita bisa menggunakan library Sastrawi Python yang sudah kita siapkan di awal. Perpustakaan Sastrawi menerapkan Algoritma Nazief dan Adriani dalam melakukan stemming Bahasa Indonesia import nltk _9Apakah kita memerlukan semua tahapan preprocessing teks? Tidak ada aturan pasti yang membahas setiap tahap preprocessing teks. Tentunya untuk memastikan hasil yang lebih baik dan konsisten semua tahapan harus dilakukan. Untuk memberikan gambaran minimal apa yang harus dilakukan, saya telah menjelaskan tahapan yang harus dilakukan, harus dilakukan, dan tergantung tugasnya. Perlu diingat, less is more, Anda ingin menjaga pendekatan seindah mungkin. Semakin banyak fitur atau tahapan yang Anda tambahkan, semakin banyak lapisan yang harus Anda kupas
Jadi, untuk mengatasi tugas apapun setidaknya Anda harus melakukan case folding. Selanjutnya, beberapa normalisasi dasar dapat ditambahkan untuk mendapatkan hasil yang lebih konsisten dan secara bertahap menambahkan tahapan lain sesuai keinginan PenutupanPada artikel ini kita telah mempelajari langkah-langkah dasar dan praktis dalam preprocessing teks bersama dengan pustaka yang digunakan dalam python. Lebih lanjut, hasil text preprocessing dapat digunakan untuk analisis NLP yang lebih rumit, misalnya terjemahan mesin. Tidak semua kasus memerlukan tingkat pemrosesan awal yang sama. Dalam beberapa kasus, Anda dapat menggunakan salah satu tahapan preprocessing yang paling sederhana, yaitu pelipatan case. Namun semua level akan dibutuhkan saat Anda memiliki dataset dengan level noise yang sangat tinggi Masih ada teknik-teknik yang dapat dilakukan dalam text preprocessing, namun sesuai dengan pendahuluan di atas, artikel ini hanya mengulas langkah-langkah dasar dan praktis dalam text preprocessing.
|