Stemming Pada Matlab

[per.informasi|t.komputer|lab.soft|pert.5]

Jika pada pertemuan sebelumnya telah berhasil memisahkan kata-kata dalam suatu kalimat agar bisa menghitung jumlah katanya maka pada pertemuan kali ini akan mencoba memisahkan kata dari imbuhan (awalan dan akhiran) agar diperoleh kata dasarnya yang dikenal dengan istilah stemming/lematization. Proses ini sangat penting dalam perancangan mesin pencari (searching). Imbuhan merupakan ciri khas bahasa Indonesia yang memang berbeda sekali dengan bahasa Inggris. Coba rancang GUI berikut untuk melakukan proses stemming.

Imbuhan ada banyak misalnya me, meng, ber, per, -an, dan lain-lain. Untuk memisahkannya kita perlu memproses pencarian berdasarkan spasi dan titik (untuk akhiran). Jika tanpa spasi akan terjadi kesalahan karena sistem akan mereplace seluruh yang diduga awalan/akhiran walau terletak di tengah-tengah kata yang tentu saja salah.

  • % menghilangkan “-an”
  • y=regexprep(y,‘an+\s’,‘ ‘) % sebelum spasi
  • y=regexprep(y,‘an+\.’,‘.’) % sebelum titik
  • set(handles.edit1,‘String’,y)

Kode di atas bermaksud menghilangkan akhiran –an. Jika diinput kata “akhiran.” Akan dihasilkan kata dasarnya “akhir”. Ada dua deteksi yaitu sebelum spasi dan sebelum titik.

Logika sederhananya adalah mengganti “-an” tersebut dengan “blank”. Fungsi yang digunakan adalah regexprep yang mencari dan me-replace suatu string. Pertemuan berikutnya akan menggunakan proses perhitungan karakter tertentu, misalnya “makan”, tidak bisa jadi “mak” karena kurang dari 4 karakter. Selain itu perlu proses N-gram (dua, tiga, dst). Selamat mencoba, semoga UTS dapat dikerjakan dengan baik.

Iklan

Membuat Bahasa Pemrograman Sendiri

[tek.kompilasi|tek.inf|s-103|pert.7]

Sebelumnya kita kerap melihat program yang dibuat oleh pengembang. Program yang dibuat tersebut diramu dengan bahasa pemrograman tertentu seperti visual basic, c++, pascal, php, phyton, dan lain-lain. Pernahkah berfikir siapa yang membuat bahasa pemrograman tersebut? Apakah sama dengan membuat program? Postingan kali ini sedikit banyak menjelaskan masalah itu.

Compiler atau Interpreter?

Di tahun 80-an atau 90-an waktu SMA saya belajar bahasa basic sebagai bahasa pemrograman. Materi tersebut disisipkan dalam mata pelajaran matematika. Jadi tidak heran di beberapa universitas ilmu komputer merupakan sempalan dari jurusan matematika. Bahasa basic sendiri ketika diprogram hasilnya berupa program executable (*.exe). Proses membentuk source code (format text berekstensi *.bas) menjadi *.exe dikenal dengan istilah kompilasi atau beberapa aplikasi diberi nama deployment. Bagaimana dengan bahasa pemrograman lainnya seperti php?

Berkembangnya website membuat tuntutan terhadap aplikasi yang bisa berjalan di atas platform tersebut. Salah satunya adalah php dengan basis datanya yang terkenal MySQL. Bahasa ini berbeda dengan bahasa berbasis desktop seperti VB, C++, dan sejenisnya karena instruksi tidak dikompilasi menjadi executable, melainkan dijalankan baris per baris di engine PHP. Jadi kode sumber tersimpan dalam server (biasanya apache). Proses penerjemahan kode sumber menjadi eksekusi dikenal dengan istilah interpreter. Perbedaan nyatanya adalah jika program yang di-compile dapat dijalankan hanya dengan mengandalkan sistem operasi, pada program yang dijalankan dengan interpreter membutuhkan engine pembaca, salah satunya browser seperti mozilla, internet explorer, safari dan lain-lain. Salah satu keunggulannya adalah karena berbasis browser maka dapat dijalankan di berbagai platform (windows, linux, dll) atau pun beragam alat seperti PC, laptop, handphone, tablet dan lain-lain yang memiliki browser. Java sendiri sebelumnya memang telah getol mengembangkan kompilernya dengan teknik byte code yang dapat dijalankan diberagam platform dan mesin, asalkan menginstal terlebih dahulu Java Runtime-nya (JRE).

Peran Pembuat Bahasa Pemrograman

Dahulu, pembuat bahasa pemrograman dapat diibaratkan sebagai fardhu kifayah (maksudnya cukup segelintir orang saja yang mengerjakan), yaitu para vendor bahasa pemrograman. Namun saat ini dikala merajalelanya aplikasi berbasis android maka kebutuhan akan bahasa pemrograman yang mudah dan memanjakan programmer mutlak diperlukan. Apalagi saat ini programmer tidak harus dari jurusan informatika dan komputer, jadi peran pembuat bahasa pemrograman banyak diperlukan. Bahkan seoarang anak SD pun saat ini mampu membuat aplikasi android yang canggih berkat bantuan compiler yang spesifik untuk aplikasi tertentu, khususnya di android atau ios.

Aplikasi Pembuat Bahasa

Memang untuk bisa menggunakan aplikasi-aplikasi pembuat bahasa pemrograman diperlukan teori khusus yaitu teori otomata dan bahasa (grammar). Tanpa hal itu dijamin kebingungan menggunakannya. Biasanya aplikasi yang digunakan untuk membuat bahasa adalah aplikasi yang berbasis C++ atau Java. Salah satu yang terkenal dan banyak dijadikan bahan praktek mata kuliah teknik kompilasi adalah Lex and Yacc (lihat pertemuan 6). Bagan dibawah adalah proses pembuatan bahasa pemrograman dengan mengkonversi Lex-file dan Yacc-file menjadi executable.

Di sini dicontohkan dua buah kode sumber (bas.y dan bas.l) yang masing-masing berfungsi sebagai grammar (yacc) dan scanner (lex). Setelah di-build/compile dengan cc, diperoleh file bas.exe yang siap digunakan. Apa maksudnya? Sepertinya masih bingung ya.

Kita ambil contoh sebuah bahasa pemrograman Matlab. Jalankan Matlab.exe (bahasa pemrograman) dan masuk ke Command Window. Ketik 1+1 dan tekan Enter. Apa yang dihasilkan? Matlab akan meng-scan 1+1 dan mengeksekusi menjadi “makna” penjumlahan satu dengan satu dan dihasilkan 2.

Walaupun sederhana banget, toh itu contoh bahasa pemrograman. Perlu diketahui Matlab biasanya berfungsi sebagai interpreter (Matlab harus dibuka untuk menjalankan program m-file) namun bisa juga sebagai compiler (terlebih dahulu mengkompilasi m-file menjadi exe). Di pertemuan berikutnya akan kita coba menggunakan lex and yacc untuk membuat bahasa pemrograman seperti Matlab di atas (walau sederhana) seperti di bawah ini. Terus mengikuti ya.