Manfaat Air Kelapa Muda

18 September 2008

Puasa ini saya memiliki hobi baru, yaitu membeli kelapa muda. Saya beli masih berbentuk buah, dan hanya dipotong sedikit dibagian atas (lalu ditutup lagi). Beli di sore hari dan baru dikeluarkan airnya dan dikerok dagingnya menjelang buka dan dimasukkan ke  kulkas sebentar.  Langsung diminum tanpa tambahan apapun. Wuih rasanya enak sekali. Jauh lebih enak dibandingkan beli yang sudah dikeluarkan oleh tukangnya dengan tambahan susu dan gula. Ternyata setelah saya baca, air kelapa memang harus diminum secepatnya setelah dikeluarkan dari buah.

Rasanya juga membuat badan lebih enak dan bersemangat, mirip seperti efek kopi tapi tanpa efek samping seperti berdebar dan mulut kering. Kopi bagi saya juga cuma sebentar saja efeknya, setelah itu malah lebih mengantuk. Mungkin mirip mobil yang dipaksa lalu malah ngos-ngosan. Itulah sebabnya saya biasanya hanya minum kopi disaat libur (setelah minum kopi langsung tidur siang :-) ).

Penasaran dengan efeknya, setelah cari di internet ternyata manfaat air kelapa muda banyak sekali. Berikut rangkuman dari sumber ini (tapi perlu dicek lagi ya, tidak yakin juga apakah pengarangnya netral):

  1. Mengandung nutrisi, vitamin dan terutama mineral. Cocok untuk melawan dehidrasi. Mirip seperti cairan yang banyak diiklankan tapi jauh lebih bagus karena lebih lengkap dan tanpa tambahan bahan kimia. Bahkan di dalam keadaan darurat, air kelapa muda yang steril dapat digunakan langsung sebagai cairan infus.
  2. Boleh dikatakan fat free dan tanpa kolesterol.
  3. Rendah gula tapi rasanya enak (dalam volume yang sama, kadar gulanya hanya 20% dari jus apel).
  4. Bagus untuk sistem urinari (dapat menghilangan batu ginjal) dan reproduksi (ehm).
  5. Mengurangi plak pada arteri (setidaknya pada anjing percobaan) sehingga bagus untuk jantung. Menyeimbangkan kolesterol jahat dan baik.
  6. Bagus untuk sirkulasi darah sehingga mengurangi tekanan darah (statement ini diapprove oleh FDA) dan baik untuk penderita diabet. Tapi ada paper dari peneliti Indonesia yang mengatakan bahwa tidak ada pengaruh kelapa mudah pada tekanan darah (papernya perlu riset lebih lanjut menurut saya karena diukur dalam jangka pendek dan samplenya cuma 20 orang-an).
  7. Mengandung Cytokinin yang dipercaya sebagai bahan anti penuaan dan anti kanker.

Dari forum ada yang mengatakan kerugian air kelapa muda adalah meningkatkan asam urat walaupun saya agak meragukan karena sumbernya anonim. Dari pengalaman saya pribadi sih tidak terasa efek pegal-pegal. Coba nanti kalau dites dalam jangka panjang ya. Kalau anda mau mencoba, jangan beli yang sudah jadi, beli yang berbentuk masih buah dan langsung diminum secepatnya setelah dibuka.

Mengingat di Indonesia mudah sekali memperoleh air kelapa muda, sangat disayangkan penelitiannya masih sedikit (atau tidak tersedia online?).


Belajar JSF (Java Server Face)

31 Agustus 2008

Ini berawal dari pekerjaan yang sebenarnya harus saya selesaikan beberapa bulan lalu (yang saya pending untuk menyelesaikan S2).  Tidak terlalu diburu deadline tapi harus selesai. Jadi cocok untuk eksperimen hal yang baru :-)

Saya ingin sekali membuat aplikasi web berbasis Java.  Sebelumnya saya belajar PHP, sampai membuat sendiri framework MVC sederhana  (tidak dari nol sih).  Di Java saya pernah mencoba sekilas servlet dan JSP, kemudian men-debug aplikasi web Java yang cukup besar (servlet, JSP, taglib) buatan orang lain.  Yang belum adalah mencoba sendiri salah satu framework.

Berdasarkan pencarian di internet, sepertinya ada dua framework yang paling populer, yaitu Spring dan Struts.  Dari yang saya baca, Struts tampaknya merupakan perbaikan dari Spring, jadi saya tentukan akan menggunakan itu. Saya baca sekilas tutorialnya, tetapi saat saya akan membuat new project di Netbeans saya lihat ada opsi Java Server Face.  Hmm kalau sampai menjadi bagian dari Netbeans pasti lumayan penting nih.  Akhirnya saya coba lihat-lihat tutorial dan …  sepertinya lebih menarik dari Struts :-) .  Struts menurut saya  (dari sudut pandang awam) sekilas seperti MVC biasa, sedangkan pada JSF yang menarik adalah sistemnya yang component based, event based dan statefull.  Saya dulu adalah programmer Delphi (pernah jualan component juga), jadi wajar juga jika saya tertarik dengan konsep JSF ini.

Ada beberapa tutorial, tetapi menurut saya yang paling bagus adalah: http://www.ibm.com/developerworks/library/j-jsf1/ Dia membahas perbandingan JSF dengan Struts plus contoh software pada tutorialnya pas sekali.  Tidak terlalu kompleks tapi juga tidak menggampangkan. Setelah baca tutorial ini Jadi lebih mantap belajar JSF

Berdasarkan apa yang saya baca,  inti JSF mirip dengan dev. tools desktop seperti Delphi atau VB. Kita letakan komponen user interface, kemudian input/outputnya kita hubungkan dengan sumber data, sedangkan  buttonnya kita hubungkan dengan method yang akan menangani event “onclik”.  Saat “button” ditekan, sumber data kita manipulasi dan otomatis komponen di layar yang terhubung dengan sumber data tersebut (Label) akan menampilkan hasilnya.  Bagi pengembang aplikasi dekstop hal ini sangat intuitif ‘kan?

Di JSF, sumber data ini disebut Managed Bean. Jika kita menggunakan  Netbeans meletakan UI-nya  jelas tidak semudah IDE Delphi, menghubungkan komponen dengan sumber data dan event handler juga harus dilakukan secara manual. Tapi ini sudah lebih baik menurut saya.

Untuk selanjutnya saya perlu baca lebih detil lagi, tutorial J2EE di Sun sepertinya bagus. Bab 18-21 membahas JSF secara lebih detil.  Baca dulu ah, nanti akan saya lanjutkan :)

–update 1 sep 08 — Tutorial Sun ternyata tidak terlalu bagus, sekarang saya sedang mencoba membuat aplikasi guestbook. Kena bug  “Cannot find FacesContext “, ternyata jangan lupa tambahkan path /faces pada saat mengeset URL untuk run. Bug kedua “Target Unreachable”: Disebabkan karena saya me-rename nama bean, walaupun sudah dengan refaktor ternyata tetap harus me-rename secara manual di faces-config.xml  –

– update 2 sep 08 –
Buku tamu saya menggunakan satu page, di atas input dan di bawah adalah daftar tamu beserta komentar berbentuk tabel. Untuk sementara tidak menggunakan database, karena saya pikir beans di JSF persistent. OK, jadi ada dua beans, satu TamuBeans untuk input dan DaftarBeans untuk isi tabel.  Saat user submit, action-nya adalah “DaftarBeans.tambahTamu”. Nah, masalahnya bagaimana DaftarBeans mengambil data TamuBeans? Setelah googling ternyata bisa melalui injected bean. Jadi faces.config.xml-nya dibuat sbb:

    <managed-bean>
        <managed-bean-name>TamuBean</managed-bean-name>
        <managed-bean-class>com.yuliadi.bukutamu.TamuBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>DaftarTamu</managed-bean-name>
        <managed-bean-class>com.yuliadi.bukutamu.DaftarTamu</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
        <managed-property>
            <property-name>currentTamu</property-name>
            <value>#{TamuBean}</value>
        </managed-property>
    </managed-bean>

Scope juga harus dibuat jadi “session”, karena jika menggunakan “request” maka DaftarTamu seperti dicreate ulang untuk setiap submit. Untuk menampilkan info mengenai dataTable tag dapat dilihat di http://www.roseindia.net/jsf/dataTable.shtml,  tapi array di contoh tersebut saya ganti dengan List.  Tahap berikutnya saya akan mencoba koneksi dengan database.


Review Asuransi Kesehatan Bumida

31 Agustus 2008

Istri saya ikut asuransi kesehatan Bumida Bumiputra yang diberikan oleh ITB.  Seperti halnya asuransi lain, kalau bisa sih jangan sampai harus menggunakan fasilitas ini. Tapi tahun 2007, istri saya harus masuk rumah sakit untuk sebuah operasi.

Sebelum masuk rumah sakit saya menelepon pihak asuransi untuk mengetahui mekanisme klaimnya . Saya kemudian diminta untuk menelpon agen yang khusus memegang ITB.  Ternyata ada dua cara, bayar sendiri baru kemudian mengajukan klaim, atau meminta jaminan (istilah mereka jaminan dari provider) sehingga tidak perlu keluar biaya di depan (jika ada kekurangan dibayar kemudian). Tentu saja saya memilih yang terakhir, daripada repot minta klaim.

Kami memilih rumah sakit Boromeus, ternyata administrasinya sangat mudah. Tinggal tunjukkan kartu asuransi dan beres. Obat, test, perawatan semuanya tinggal pakai, tidak perlu pengurusan administrasi lagi. Saya hanya perlu dua kali ke PMI untuk mengambil darah karena persediaan di RS habis, itupun tidak keluar biaya.  Saat keluar juga demikian, tinggal lapor dan langsung bisa keluar.  Jadi kami tidak keluar biaya sepeserpun.

Setelah istri saya keluar dari RS saya kontak pihak asuransi untuk menanyakan apakah ada biaya yang perlu saya bayar, karena saya tahu memang ada batasan dari jumlah pertanggungan.  Pihak asuransi mengatakan bahwa hal tersebut sedang dihitung dan nanti akan dikabari. Sekitar 3 bulan kemudian,  baru ada tagihan beserta rincian.  Ternyata 85%  dibayar oleh pihak asuransi dan sisanya kemudian kami lunasi dengan transfer.  Walaupun tidak full, tapi jelas ini sangat membantu.

Saya terkesan dengan prosesnya yang cepat dan tidak berbelit-belit, terutama saat berada di RS.  Semua dapat dilakukan melalui telepon.  Berdasarkan pengalaman ini saya beserta anak sekarang juga  bergabung dengan asuransi kesehatan Bumida,  walaupun saya sendiri sebagai PNS juga memiliki Askes.

Mungkin karena dianggap masuk ke keluarga ITB (saya dan anak dianggap ikut istri), proses pendaftaran asuransi juga tidak sulit.  Saya tinggal  mengirimkan data nama, umur kemudian transfer preminya via bank. Kemudian polis+kartu asuransinya dikirim lewat kantor istri saya.

Jelas kami tidak berharap akan menggunakan fasilitas ini,  tapi persiapan untuk menghadapi musibah tentu harus tetap dilakukan. Mudah-mudahan UPI kedepannya juga menambahkan asuransi model ini sebagai pelengkap Askes.

Mengapa harus ada tambahan selain Askes?  Hmm saya tidak tahu kondisinya sekarang, tapi setahu saya pengurusan Askes masih lebih rumit dibandingkan model asuransi seperti ini.  Cakupan Askes juga lebih banyak di RS negeri yang pelayanannya masih kurang optimal.


Review Asuransi Kendaraan Allianz

28 Agustus 2008

Ini bermula dari mobil saya yang menabrak trotoar dan mengalamai kerusakan lumayan parah.  Untungnya saya ikut asuransi all risk dari Allianz, jadi saya berencana untuk memanfaatkannya.

Masalahnya, saat polis Allianz datang via pos sekitar bulan Jan  08, ada kesalahan satu digit di nomor mesin yang tertulis di polis. Khawatir dengan masalah ini saya minta tolong kepada sales mobil (yang waktu itu kebetulan datang) untuk mengurus hal ini.  Sekitar sebulan kemudian saat saya kontak sales tersebut, dia mengatakan sudah diurus dan harusnya sudah dikirim via pos oleh Allianz.  Sayangnya sampai sekarang polis itu belum datang juga.

Hmm,  sepertinya harus diurus sendiri pikir saya. Ya sudah, mulai mencari telepon yang bisa dihubungi. Sialnya nomor kontak pihak Allianz yang diberikan oleh pihak bank ternyata hilang :-( , akhirnya coba mengontak nomor Allianz Bandung.. tidak diangkat. OK, ke internet, googling, oh ternyata cabang Bandung sudah pindah, telp lagi, tidak diangkat.  Ya sudah, kontak call centre Jakarta. Setelah menunggu cukup lama, akhirnya saya diberikan nomor dan nama yang harus dihubungi di Bandung. Setelah saya hubungi, ternyata di database mereka nomor mesin saya masih tetap salah.  Wah apa sales itu belum mengurus ya?  Setelah bicara bahwa niat saya ingin mengajukan klaim, saya diminta untuk menelpon ke bagian klaim saja, tidak perlu menunggu nomor mesin yang salah itu diperbaiki terlebih dulu.

Sekarang kontak bagian klaim, tadinya saya diminta datang ke kantor mereka di Bandung terlebih dulu, tetapi untungnya kemudian dia mengajurkan untuk membawa saja ke langsung bengkel. Tidak perlu bawa lembar polis, cukup nomor polisnya  saja , katanya mudah-mudahan polisnya selesai diperbaiki setelah mobil selesai. Setelah saya bawa mobil ke bengkel Otto Cemerlang, ternyata semua lancar, walaupun mobil harus diinapkan selama dua minggu.

Sementara itu, sales saya mengontak lagi, katanya dia sekarang mengurus dan dia sendiri yang akan mengambil (tidak dikirim via pos). Ya saya tunggu saja deh.  — update 2 sep 08 –  Sudah diurus oleh dia dan perbaikannya diantar langsung ke rumah, nah itu baru support yang bagus :-)   –

Kesimpulannya:

  • Nomor mesin dan nomor rangka pada polis sepertinya tidak terlalu penting. Berbeda dengan di STNK.
  • Sistem klaim di Allianz  menurut saya sudah bagus, cepat dan praktis (nanti saya update setelah urusan bengkel selesai, apa saat mengambil mobil juga sepraktis seperti memasukkan mobil)
  • Seharusnya pihak Allianz memiliki mekanisme yang lebih mudah untuk memperbaiki kesalahan data di polis,  atau sekalian saja disampaikan bahwa itu tidak perlu diperbaiki. Saat di telpon terasa mereka seperti bingung harus menanganinya seperti apa (tidak ada SOP-nya?). Karena mereka memiliki copy STNK, memperbaiki kesalahan nomor mesin dan rangka harusnya mudah dan dapat dilakukan via telepon oleh client.  Client memberitahu, cek copy STNK, diperbaiki di database, dicetak, kirim.

Web GIS Gratisan

23 Agustus 2008

Saya membutuhkan GIS berbasis web untuk proyek disebuah departemen. Masalahnya, proyek GIS terakhir saya adalah sewaktu saya masih mahasiswa S1 sekitar 10 tahun lalu. Waktu itu saya menggunakan Delphi + MapInfo.  Jadi jelas ingatan saya terhadap teknologi ini sudah samar-samar dan ketinggalan jaman :-)

Daripada membebani departemen tersebut dengan lisensi software yang mahal, saya mencoba mencari alternatif GIS berbasis web yang gratis dan kalau bisa open source.  Anehnya (atau sebalnya) setelah googling, kok tidak ketemu ya?  Ternyata istilah yang lebih sering digunakan sepertinya “web mapping”.

Akhirnya saya mendapat informasi yang bagus di http://www.osgeo.org/

Di situs ini dibahas beberapa alternatif web mapping open source (saya sendiri belum coba)

http://openlayers.org/
http://www.mapbender.org/ –> demonya paling cepat
http://mapserver.gis.umn.edu/
http://mapguide.osgeo.org/
http://communitymapbuilder.osgeo.org/ –> tidak dilanjutkan lagi pengembangannya
http://www.deegree.org/

Sayangnya berbadasarkan pengamatan singkat, semuanya berbasis raster dengan AJAX.  Kelemahan model ini adalah membutuhkan bandwidth besar, dan saya tidak suka Javascript.  Oleh karena itu saya sedang mempertimbangkan membuat sendiri GIS berbasis Flash.  Lagipula sistem yang akan dikembangkan tidak membutuhkan lokasi yang eksak sekali. Cukup bisa melihat propinsi -> kabupaten/kota -> kecamatan, dan titik-titik lokasi objek sudah cukup (inipun memang tidak ada koordinat buminya, hanya kira-kira). Layer juga tidak butuh terlalu banyak.  Nilai tambahnya justru di sistem informasi eksekutif yang diintegrasikan dengan GIS ini  (chart, laporan agregat).  Dengan Flash sepertinya dapat digabungkan dengan lebih halus.

Hmm.. bersambung..  (belum menentukan pilihan soalnya :-) )


Memeriksa Ujian

23 Agustus 2008

Akhirnya berakhir juga perjuangan memeriksa UTS dan UAS.  Terlambat dengan sukses (hampir satu bulan!).  Katanya dulu dosen yang terlambat mengumpulkan nilai pernah dipanggil PR1. Hii, mudah-mudahan sekarang tidak :) Wah leganya melebihi saat setelah sidang S2 saya hehe.   Sebagai dosen, menurut saya memeriksa ujian adalah hal yang paling berat.

Masalah utama adalah persiapan sidang S2 saya menyebabkan saya tidak mencicil memeriksa UTS dan UAS. Akibatnya dalam waktu yang singkat saya harus memeriksa sekitar 260 berkas UTS dan UAS.  Setiap ujian terdiri dari sekitar 4-5 soal (ada yang mengandung subsoal). Semuanya soal problem based yang cukup panjang, dengan beberapa alternatif jawaban.  Terkadang menyesal sendiri memberikan soal yang terlalu banyak :(   Tapi itupun saya merasa masih banyak materi yang belum tercover oleh ujian.

Solusinya semester depan mungkin saya akan memajukan UTS,  lalu selain soal uraian juga memberikan tambahan soal pilihan ganda (khusus untuk UAS yang sempit waktu periksanya). Untuk pilihan ganda  saya masih ragu, harus ditimbang-timbang dulu lebih bermanfaat atau tidak. Hmm mungkin diuji coba dulu untuk quiz.

Tapi yang penting jangan menunda-nunda memeriksa ujian! Sengsara sekali, jadi tidak bisa mengerjakan hal lain yang lebih menarik :(

Perhatian untuk saya-masa-depan yang  baca posting ini! Segera periksa ujian ya,  jangan ditunda-tunda! :)


Stop words untuk Bahasa Indonesia

23 Juli 2008

Stop words adalah kata umum (common words) yang biasanya muncul dalam jumlah besar dan dianggap tidak memiliki makna.  Stop words umumnya dimanfaatkan dalam task information retrieval, termasuk oleh Google (penjelasannya di sini).  Contoh stop words untuk bahasa Inggris diantaranya “of”, “the”.  Sedangkan untuk bahasa Indonesia diantaranya “yang”, “di”, “ke”.

Saya pernah membuat daftar stop words  bahasa Indonesia untuk tugas salah satu matakuliah. Tujuannya waktu itu bukan untuk information retrieval, tapi untuk klasifikasi.  Saya gunakan stop words untuk mengurangi jumlah kata yang harus diproses.

Saya membuat daftar stop words dengan cara mengumpulkan kata paling banyak muncul pada corpus (saya menggunakan beberapa ratus berita Kompas),  setelah diurutkan kemudian diperiksa secara manual satu persatu.  Hasil lengkapnya dapat didonwload di: http://fpmipa.upi.edu/staff/yudi/stop_words_list.txt

Karena daftar itu dibuat secara manual dan untuk task klasifikasi, ada beberapa kata yang mungkin dapat diperdebatkan apakah stop word atau bukan, misalnya  “utara”, “senin”, “gedung” dan sebagainya.  Jadi silahkan diedit sesuai kebutuhan.  Seingat saya sih daftar tersebut sudah diurutkan dari kata yang frekuensinya paling tinggi.

Daftar stop words untuk bahasa lain (23 bahasa) dapat dilihat di: http://www.semantikoz.com/2008/04/02/free-stop-word-lists-in-23-languages/


Kelas Kata (Word Class) Bahasa Indonesia untuk POS Tagger

7 Juli 2008

Setelah googling, ternyata sulit juga mencari informasi mengenai kelas kata bahasa Indonesia.  Apalagi corpus yang sudah diberi tag atau software Part of Speech (POS) Tagger-nya (atau saya yang salah mencarinya ya?).  Satu-satunya yang saya peroleh adalah dokumen TA seorang mahasiswa UI. Kondisi ini termasuk menyedihkan untuk bahasa yang digunakan oleh sekitar 200 juta orang dan dimengerti di beberapa negara (Malaysia, Singapura, Brunei).

Pemberian tag kelas-kata pada dokumen atau kalimat bermanfaat untuk berbagai hal: information retrieval,  language generator, information extraction, summarization dan machine translation.  Berikut adalah contoh kalimat yang telah diberi tag: “Anwar/NNP meninggalkan/VB Kedubes/NN Turki/NNP”.  Mengikuti penaamaan corpus Penn Treebank, NNP adalah proper noun, VB kata kerja, NN adalah kata benda.

Daripada hanya mengeluh , saya coba membuat ringkasan mengenai kelas kata bahasa Indonesia berdasarkan dua buku. Saya fokuskan terhadap aturan untuk setiap kelas kata karena inilah yang dibutuhkan sofware tagger untuk corpus yang sedang saya kumpulkan. Beberapa aturan yang saya perkirakan jarang muncul juga dihilangkan.

Pengembangan di tahap awal adalah pembuatan POS-tagger berdasarkan aturan (ruled-based), kemudian dilanjutkan dengan membuat POS-tagger yang menggunakan Hidden Markov Model.  Rencananya sih kedua tagger ini akan dijadikan open source.

Berikut adalah ringkasannya:

1. Kata Benda
Menurut [KER88][KOS04], kata benda dapat ditentukan dari dua hal, bentuk dan ciri. Dari bentuk, kata yang mengandung ke-an, pe-an, pe-, -an, ke-,  -at, -in, -wan, -wati, -isme, -isasi, -logi, -tas dapat dicalonkan sebagai kata benda. Misalnya “kebakaran”, “pembunuhan”, “karyawan”.  Sedangkan berdasarkan ciri, ciri utama kata benda adalah dapat diperluas dengan “yang”+ kata sifat,  misalkan “sinar yang terang”.  [KOS04] menambahkan ciri:  diawali “bukan” dan tidak diawali “tidak”, misalnya “bukan niatnya”.

2. Kata Kerja
Menurut [KER88] berdasarkan bentuk, kata yang mengandung  me-, ber-, -kan, di-, -i, ter- dapat dicalonkan sebagai kata kerja. Misalnya “berlari”, “menyayi”.  Sedangkan berdasarkan ciri, ciri utama kata kerja adalah kata yang dapat diperluas dengan “dengan”+kata sifat. Misalnya “tidur dengan nyenyak”.  [KOS04] menambahkan ciri: tidak dapat didahului kata “paling”, dapat didahului “akan”, “sedang”, “sudah” dan “tidak”. Ciri-ciri dari [KOS04] bukan ciri utama karena tidak eksklusif untuk kata kerja. Misalnya “sudah harum” dengan “harum” adalah kata sifat.

3. Kata Sifat
Menurut [KER88] kata sifat adalah segala kata yang dapat mengambil bentuk se + reduplikasi + nya, serta dapat diperluas dengan: “paling”, “lebih” dan  “sekali”. Misalnya “seteliti-telitinya”, “sebagus-bagusnya”, “paling cepat”, “lebih kuat”, “sakit sekali”.

4. Kata Keterangan
Kata keterangan adalah kata yang menjelaskan kata yang lain. [KER88] membagi kata keterangan menjadi 13 jenis: Keterangan kualitatif: “ia berjalan perlahan-lahan”; Keterangan waktu: “sekarang”, “nanti”, “kemarin”, “kemudian”, “sesudah itu”, “lusa”, “sebelum”, “minggu depan”; Keterangan tempat: “di sini”, “di situ”, “ke sana”, “ke mari”; Keterangan modalitas: “memang”, “pasti”, “sungguh”, “tentu”, “tidak”, “bukan”, “benar”, “sebenarnya”, “mungkin”, “rasanya”, “mudah-mudahan”, “hendaknya”, “jangan”,”mustahil”; Keterangan aspek: “sedang”, “sementara”, “sudah”, “telah”, “sering”, “biasa”; Keterangan derajat: “amat”, “hampir”, “kira-kira”, “sedikit”, “cukup”, “hanya” “satu kali”; Keterangan kesertaan: “bersama”; Keterangan syarat: “jika”, “seandainya”; Keterangan perlawanan: “meskipun”, “meski”,”jika”; Keterangan sebab: “sebab”, “karena”, “oleh karena”; Keterangan akibat: “sehingga”; Keterangan tujuan: “supaya”, “agar”, “untuk”, “hendak”; Keterangan perbandingan: “sebagai”, “seperti”, “bagaikan”; Keterangan perwatasan: “kecuali”, “hanya”.

5. Kata Depan
Kata depan adalah kata yang digunakan untuk merangkaikan kata atau bagian kalimat [KER88]. Kata-kata depan terpenting adalah  [KER88][KOS04]: “di”, “ke”, “dari”, “pada”, “akan”, “sejak”, “dengan”, “oleh”, “demi”, “guna”, “untuk”, “buat”, “berkat”, “antara”, “tentang”, “hingga”, “menurut”, “menghadap”, “mendapatkan”, “melalui”, “menuju”, “menjelang”, “sampai”, “atas”, “antara”, “bersama”, “beserta”, “sekeliling”, “selama”, “sepanjang”, “mengenai”, “terhadap”, “bagaikan”, “daripada”, “kepada”, “oleh sebab”, “sampai dengan”, “selain itu”.

6. Kata Sambung
Kata sambung adalah kata yang menghubungkan kata-kata , bagian kalimat atau kalimat  [KER88]. Beberapa kata sambung menurut [KER88]: “dan”, “lagi”, “lagipula”, “serta”, “tetapi”, “akan tetapi”, “melainkan”, “apabila”, “ketika”, “bila”, “demi”, “sambil”, “sebelum”, “sedang”, “sejak”, “selama”, “semenjak”, “sementara”, “seraya”, “setelah”, “sesudah”, “waktu”, “supaya”, “agar”, “karena”, “karena itu”, “sehingga”, “sampai”, “jika”, “andaikan”, “asal”, “asalkan”, “seandainya”, “atau”, “maupun”, “seperti”, “bagaikan”, “meskipun”, “biarpun”, “maka”, “adapun”, “akan”, “yakni”, “umpama”, “bahwa”.  Ada juga kalimat yang tidak memerlukan kata sambung. Misalnya “Dia datang, kami berangkat”.

7. Kata Ganti
Kata ganti adalah segala kata yang dipakaikan untuk mengganti kata benda [KER88]. Menurut [KER88] kata ganti dapat dibagi menjadi enam jenis. Kata ganti orang: “saya”, “aku”, “dia”, “kami”, “kita”, “kamu”, “mereka”, “anda”; Kata ganti empunya: -mu, -ku, -nya (“bukuku”, “bukumu”, “bukunya”); Kata ganti penunjuk: “ini”, “itu”, “di sana”, “di sini”, “di situ”; Kata ganti penghubung: “yang”, “tempat” (“kotak yang berisi kalung”, “kota tempat kita bertemu”); Kata ganti penanya: “apa”, “siapa”, “mana”, “mengapa”, “berapa”, “bagaimana”, “bilamana”, “kenapa”, “betapa”. Kata ganti tak tentu: “masing-masing”, “siapa-siapa”, “seseorang”, “para”, “barang”, “sesuatu”, “salah satu”, “barang siapa”.

8. Kata Bilangan
[KER88]  membagi kata bilangan menjadi empat jenis: Kata bilangan utama: “satu”, “dua”, “ribu”, “juta”, “miyar”, “triliun” ; Kata bilangan tingkat “pertama”, “kedua”; Kata bilangan tak tentu: “beberapa”, “segala”, “semua”, “tiap-tiap”, “sebagainya”; Kata bilangan kumpulan: “kedua”, “kesepuluh”, “bertiga”, “bertujuh”.

Kata Tugas
Dapat dilihat bahwa kata keterangan, kata depan dan kata sambung seringkali sulit ditentukan karena saling tumpang tindih. Oleh karena itu  [KER88]  mengusulkan kelas kata pengganti yaitu kata tugas. Jadi semua kata yang tidak masuk ke dalam kata benda, kerja dan sifat akan masuk ke dalam kelas kata tugas ini.

Penentuan kelas kata yang tidak jelas seperti ini sebenarnya adalah masalah utama yang harus dipecahkan aplikasi POS-Tagger.

Mungkin perlu diteliti apakah kata keterangan, sambung, depan memang dapat diganti dengan kata tugas. Tentunya berdasarkan kinerja untuk task tertentu, misalnya untuk summmarization atau information retrieval.

Referensi:
[KER84] Keraf, Goris (1984), “Tatabahasa Indonesia”, Nusa Indah.
[KOS04] Kosasih, E (2004), “Kompetensi Ketatabahasaan dan Kususastraan”, Yrama Widya, Cetakan 2.


Java untuk Text Processing

5 Juli 2008

Saat saya membuat tools untuk eksperimen tesis, ada beberapa class Java yang paling sering digunakan.  Class tersebut adalah:

  • Scanner untuk membaca file teks dan memparsing kalimat menjadi kata.
  • Printwriter untuk menulis file teks. Sangat dianjurkan untuk menyimpan hasil proses ke file pada setiap tahap.
  • HashMap untuk menyimpan informasi yang berkaitan dengan kata. Misalnya probabilitas dan frekuensi kemunculan kata.  Mengapa HashMap? karena waktu untuk menambah dan mengambil data dari struktur ini tetap dan saya tidak membutuhkan keterurutan.

Berikut contoh  pemakaian ketiga class tersebut untuk menghitung frekuensi kata di dalam dokumen dan menuliskannya ke file:

import java.io.*;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Map;

public class HitungFrek {
    public static void main(String[] Args) {
        HashMap<String,Integer> countWord  = new HashMap<String,Integer>();  //frekuensi word di document
        String namaFileInput  = "c:\\tes.txt";
        String namaFileOutput = "c:\\freq.txt";
        Integer freq;
        String  kata;
        File f = new File(namaFileInput);
        try {
            Scanner sc = new Scanner(f);
            //hitung frekuensi
            while (sc.hasNext()) {
                kata = sc.next();
                freq = countWord.get(kata);  //ambil kata

                //jika kata itu tidak ada, isi dengan 1, jika ada increment
                countWord.put(kata, (freq == null) ? 1 : freq + 1);
            }
            sc.close();
            //simpan hasilnya ke file teks
            PrintWriter pw = new PrintWriter(namaFileOutput);

            //loop untuk semua isi countWord
            for (Map.Entry<String,Integer> entry : countWord.entrySet()) {
                kata = entry.getKey();
                freq = entry.getValue();
                pw.println(kata+"="+freq);  //tulis ke file
            }
            pw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Selesai S2..

28 Juni 2008

Akhirnya selesai juga Sidang S2, bersyukur? jelas. Lega? tidak terlalu juga karena sudah banyak pekerjaan yang menumpuk.

Rencana mau jalan-jalan ke Palembang via jalan darat akhirnya dibatalkan, hanya Lia dan Furqon saja yang pergi dengan pesawat. Ya sudah, nikmati dan syukuri saja, banyak kerjaan artinya saya masih dipercaya orang lain.

Bagi yang tertarik dengan topik tesis saya mengenai “Kompresi Kalimat dengan Hidden Markov Model” dapat mendownload versi lengkapnya di: fpmipa.upi.edu/staff/yudi/tesis_yudi_wibisono.pdf Belum versi final karena masih diperbaiki sedikit-sedikit.

Prasidang dan sidang semuanya lancar, cuma seperti biasa, selalu terbentur masalah tulisan. Saya masih harus banyak belajar menulis laporan teknis.

Seusai sidang agak sedih juga karena teringat Bu Wanti yang menjadi penguji saat seminar proposal dan seminar. Kalau beliau masih ada, pasti beliau yang akan menguji pra dan sidang saya.  Minggu kemarin sambil menjenguk makam bapak, saya sempatkan mampir ke makam Ibu Wanti yang juga berada di Cibarunai. Saya yakin pasti banyak amalan ilmu beliau yang akan terus mengalir.  Amin.