Skip to content

Protected: [Book Review] Namaku Nafiri: “Lihatlah, Anak Domba Allah!”

This content is password protected. To view it please enter your password below:

Advertisements

Algoritma Steming: Nazief & Adriani

Algoritma Nazief & Adriani adalah algoritma stemming untuk bahasa Indonesia yang konon kabarnya adalah state of the art algoritma stemming untuk bahasa Indonesia. Algoritma Nazief & Adriani dideskripsikan pertama kali dalam unpblished technical report di Universitas Indonesia.

Stemming itu apa? Bisa dilihat di sini!

Algoritma yang dituliskan di bawah, diambil dari buku Effective Techniques for Indonesian Text Retrieval tulisan Jelita Asian. Buku ini merupakan thesis Jelita Asian untuk mencapai gelar PhD di Australia. Algoritma Nazief & Adriani dituliskan  sebagai “dasar teori” di bab 3. Versi PDF-nya bisa dilihat di sini.

Tulisan di bawah diterjemahkan agak plek sesuai di buku.

Dasar Algoritma

Algoritma ini menggunakan beberapa aturan morfologi untuk menghilangkan affiks (awalan, imbuhan, dll) dari sebuah kata dan kemudian mencocokannya dalam database akar kata (kata dasar / root word).

Jadi dasar utama algoritma ini adalah daftar akar kata. Langkah pertama yang dilakukan adalah mengumpulkan daftar akar kata dalam bahasa Indonesia. Semakin lengkap daftarnya, semakin tinggi akurasi algoritma ini.

Daftar tersebut bisa diperoleh dari Kamus Besar Bahasa Indonesia.

Detil Algoritma

Setelah menyiapkan daftar akar kata bahasa Indonesia, algoritma berikut bisa dijalankan.

  1. Pertama kali, cek kata yang ingin dicari akar katanya, ke dalam daftar akar kata. Jika ada dalam daftar, maka kata tersebut adalah adalah akar kata. Untuk setiap akhir langkah di bawah, lakukan langkah 1 ini juga.
  2. Hilangkan inflectional suffix (imbuhan infleksional). Pertama hilangkan imbuhan -kah, -lah, -tah, -pun kemudian hilangkan imbuhan -ku, -mu, -nya.
  3. Hilangkan derivational suffix (imbuhan turunan). Hilangkan imbuhan -i, -kan, -an.
  4.  Hilangkan derivational prefix (awalan turunan). Hilangkan awalan be-, di-, ke-, me-, pe-, se- dan te-.
    1. Langkah 4 ini jangan dilakukan bila:
      • kata dalam langkah 3, mempunyai gabungan awalan dan imbuhan yang tidak diperbolehkan dalam tabel di bawah.  (lihat tabel di bawah).
      • awalan yang akan dihilangkan, sama dengan awalan yang telah dihilangkan sebelumnya
      • awalan telah dihilangkan sebanyak tiga kali
    2. Identifikasi tipe awalan dan disambiguitasnya.
      Awalan mempunyai dua tipe:
      plain: awalan  di-, ke-, se- dapat dihilangkan secara langsung
      complex:  awalan be-, te-, me-, pe- harus dianalisis ambiguitasnya menggunakan tabel diambiguitas di bawah. Awalan me- bisa berubah mem- atau men- tergantung dari huruf awal akar kata (lihat tabel di bawah).
    3. Lakukan langkah 1. Bila bukan merupakan akar kata, maka ulangi langkah 4 ini secara berulang sampai menemukan akar katanya atau sampai kondisi 4a terjadi. Bila kondisi 4a tidak terjadi, tetapi belum juga memperoleh akar kata maka lanjutkan ke langkah 5.
  5. Bila dari langkah 4 di atas belum ketemu juga. Maka lakukan analisis apakah kata tersebut masuk dalam tabel diambiguitas kolom terakhir atau tidak.
  6. Bila semua proses di atas gagal, maka algoritma mengembalikan kata aslinya.

Tabel Disambiguitas

Rule Construct Return
1 berV… ber-V… | be-rV…
2 berCAP… ber-CAP… | where C!=’r’ and P!=’er’
3 berCAerV… ber-CAerV… | where C!=’r’
4 belajar… bel-ajar…
5 beC1erC2… be-C1erC2 … | where C1!={‘r’| ‘l’}
6 terV… ter-V… | te-rV…
7 terCerV… ter-CerV… | where C!=’r’
8 terCP… ter-CP… | where C!=’r’ and P!=’er’
9 teC1erC2… te-C1erC2… | where C1!=’r’
10 me{l|r|w|y}V… me-{l|r|w|y}V…
11 mem{b|f|v}… mem-{b|f|v}…
12 mempe{r|l}… mem-pe…
13 mem{rV|V}… me-m{rV|V}… | me-p{rV|V}…
14 men{c|d|j|z}… men-{c|d|j|z}…
15 menV… me-nV… | me-tV…
16 meng{g|h|q}… meng-{g|h|q}…
17 mengV… meng-V… | meng-kV…
18 menyV… meny-sV…
19 mempV… mem-pV… | where V!=’e’
20 pe{w|y}V… pe-{w|y}V…
21 perV… per-V… | pe-rV…
23 perCAP… per-CAP… | where C!=’r’ and P!=’er’
24 perCAerV… per-CAerV… | where C!=’r’
25 pem{b|f|v}… pem-{b|f|v}…
26 pem{rV|V}… pe-m{rV|V}… | pe-p{rV|V}…
27 pen{c|d|j|z}… pen-{c|d|j|z}…
28 penV… pe-nV… | pe-tV…
29 peng{g|h|q}… peng-{g|h|q}…
30 pengV… peng-V… | peng-kV…
31 penyV… peny-sV…
32 pelV… pe-lV… | Exception: for “pelajar”, return ajar
33 peCerV… per-erV… | where C!={r|w|y|l|m|n}
34 peCP… pe-CP… | where C!={r|w|y|l|m|n} and P!=’er’

V = vokal
C = konsonan
P = bagian kecil kata misal “er”

Gabungan Awalan dan Akhiran yang Tidak Diperbolehkan

Awalan Akhiran yang tidak diperbolehkan
ber- -i
di- -an
ke- -i -kan
me- -an
ter- -an
per- -an

Begitulah kira-kira algoritma Nazief  & Adriani, untuk lebih jelasnya lihat buku di atas.

Protected: End Time Prophecy: Third Eagle Of The Apocalypse

This content is password protected. To view it please enter your password below:

Indonesian Stop Words

Tidak ada definisi pasti apa itu stop word. Yang pasti stop word adalah kata-kata yang diabaikan dalam pemrosesan data di NLP (Natural Language Processing). Karakteristik dari stop word yaitu frekuensi kemunculannya tinggi; biasanya berupa kata ganti orang atau kata penghubung. Tidak ada list pasti stop word, ini adalah beberapa list yang ada.

Kata Ganti Orang

saya, daku, aku, gw, guwe, kamu, kau, engkau, dikau, loe, lu, anda, kami, kita, kalian, mereka, ia, dia, beliau, anda sekalian, kamu sekalian

Kata Penghubung

dan, atau, tetapi, tapi, akan tetapi, jika, kalau, karena, walau, walaupun, juga, jadi, maka, sehingga, supaya, agar, hanya, lagi, lagipula, lalu, sambil, melainkan, namun, padahal, sedangkan, demi, untuk, apabila, bilamana, sebab, sebab itu, karena itu, bilamana, asalkan, meskipun, biarpun, biar, seperti, daripada, bahkan, apalagi, yakni, adalah, yaitu, ialah, bahwa, bahwasannya, kecuali, selain, misalnya, untuk itu

Stoplist by Tala, F. Z.

Tala, F. Z. (2003). A Study of Stemming Effects on Information Retrieval in Bahasa Indonesia. M.S. thesis. M.Sc. Thesis. Master of Logic Project. Institute for Logic, Language and Computation. Universiteti van Amsterdam The Netherlands. [link]

ada, adalah, adanya, adapun, agak, agaknya, agar, akan, akankah, akhir, akhiri, akhirnya, aku, akulah, amat, amatlah, anda, andalah, antar, antara, antaranya, apa, apaan, apabila, apakah, apalagi, apatah, artinya, asal, asalkan, atas, atau, ataukah, ataupun, awal, awalnya, bagai, bagaikan, bagaimana, bagaimanakah, bagaimanapun, bagi, bagian, bahkan, bahwa, bahwasanya, baik, bakal, bakalan, balik, banyak, bapak, baru, bawah, beberapa, begini, beginian, beginikah, beginilah, begitu, begitukah, begitulah, begitupun, bekerja, belakang, belakangan, belum, belumlah, benar, benarkah, benarlah, berada, berakhir, berakhirlah, berakhirnya, berapa, berapakah, berapalah, berapapun, berarti, berawal, berbagai, berdatangan, beri, berikan, berikut, berikutnya, berjumlah, berkali-kali, berkata, berkehendak, berkeinginan, berkenaan, berlainan, berlalu, berlangsung, berlebihan, bermacam, bermacam-macam, bermaksud, bermula, bersama, bersama-sama, bersiap, bersiap-siap, bertanya, bertanya-tanya, berturut, berturut-turut, bertutur, berujar, berupa, besar, betul, betulkah, biasa, biasanya, bila, bilakah, bisa, bisakah, boleh, bolehkah, bolehlah, buat, bukan, bukankah, bukanlah, bukannya, bulan, bung, cara, caranya, cukup, cukupkah, cukuplah, cuma, dahulu, dalam, dan, dapat, dari, daripada, datang, dekat, demi, demikian, demikianlah, dengan, depan, di, dia, diakhiri, diakhirinya, dialah, diantara, diantaranya, diberi, diberikan, diberikannya, dibuat, dibuatnya, didapat, didatangkan, digunakan, diibaratkan, diibaratkannya, diingat, diingatkan, diinginkan, dijawab, dijelaskan, dijelaskannya, dikarenakan, dikatakan, dikatakannya, dikerjakan, diketahui, diketahuinya, dikira, dilakukan, dilalui, dilihat, dimaksud, dimaksudkan, dimaksudkannya, dimaksudnya, diminta, dimintai, dimisalkan, dimulai, dimulailah, dimulainya, dimungkinkan, dini, dipastikan, diperbuat, diperbuatnya, dipergunakan, diperkirakan, diperlihatkan, diperlukan, diperlukannya, dipersoalkan, dipertanyakan, dipunyai, diri, dirinya, disampaikan, disebut, disebutkan, disebutkannya, disini, disinilah, ditambahkan, ditandaskan, ditanya, ditanyai, ditanyakan, ditegaskan, ditujukan, ditunjuk, ditunjuki, ditunjukkan, ditunjukkannya, ditunjuknya, dituturkan, dituturkannya, diucapkan, diucapkannya, diungkapkan, dong, dua, dulu, empat, enggak, enggaknya, entah, entahlah, guna, gunakan, hal, hampir, hanya, hanyalah, hari, harus, haruslah, harusnya, hendak, hendaklah, hendaknya, hingga, ia, ialah, ibarat, ibaratkan, ibaratnya, ibu, ikut, ingat, ingat-ingat, ingin, inginkah, inginkan, ini, inikah, inilah, itu, itukah, itulah, jadi, jadilah, jadinya, jangan, jangankan, janganlah, jauh, jawab, jawaban, jawabnya, jelas, jelaskan, jelaslah, jelasnya, jika, jikalau, juga, jumlah, jumlahnya, justru, kala, kalau, kalaulah, kalaupun, kalian, kami, kamilah, kamu, kamulah, kan, kapan, kapankah, kapanpun, karena, karenanya, kasus, kata, katakan, katakanlah, katanya, ke, keadaan, kebetulan, kecil, kedua, keduanya, keinginan, kelamaan, kelihatan, kelihatannya, kelima, keluar, kembali, kemudian, kemungkinan, kemungkinannya, kenapa, kepada, kepadanya, kesampaian, keseluruhan, keseluruhannya, keterlaluan, ketika, khususnya, kini, kinilah, kira, kira-kira, kiranya, kita, kitalah, kok, kurang, lagi, lagian, lah, lain, lainnya, lalu, lama, lamanya, lanjut, lanjutnya, lebih, lewat, lima, luar, macam, maka, makanya, makin, malah, malahan, mampu, mampukah, mana, manakala, manalagi, masa, masalah, masalahnya, masih, masihkah, masing, masing-masing, mau, maupun, melainkan, melakukan, melalui, melihat, melihatnya, memang, memastikan, memberi, memberikan, membuat, memerlukan, memihak, meminta, memintakan, memisalkan, memperbuat, mempergunakan, memperkirakan, memperlihatkan, mempersiapkan, mempersoalkan, mempertanyakan, mempunyai, memulai, memungkinkan, menaiki, menambahkan, menandaskan, menanti, menanti-nanti, menantikan, menanya, menanyai, menanyakan, mendapat, mendapatkan, mendatang, mendatangi, mendatangkan, menegaskan, mengakhiri, mengapa, mengatakan, mengatakannya, mengenai, mengerjakan, mengetahui, menggunakan, menghendaki, mengibaratkan, mengibaratkannya, mengingat, mengingatkan, menginginkan, mengira, mengucapkan, mengucapkannya, mengungkapkan, menjadi, menjawab, menjelaskan, menuju, menunjuk, menunjuki, menunjukkan, menunjuknya, menurut, menuturkan, menyampaikan, menyangkut, menyatakan, menyebutkan, menyeluruh, menyiapkan, merasa, mereka, merekalah, merupakan, meski, meskipun, meyakini, meyakinkan, minta, mirip, misal, misalkan, misalnya, mula, mulai, mulailah, mulanya, mungkin, mungkinkah, nah, naik, namun, nanti, nantinya, nyaris, nyatanya, oleh, olehnya, pada, padahal, padanya, pak, paling, panjang, pantas, para, pasti, pastilah, penting, pentingnya, per, percuma, perlu, perlukah, perlunya, pernah, persoalan, pertama, pertama-tama, pertanyaan, pertanyakan, pihak, pihaknya, pukul, pula, pun, punya, rasa, rasanya, rata, rupanya, saat, saatnya, saja, sajalah, saling, sama, sama-sama, sambil, sampai, sampai-sampai, sampaikan, sana, sangat, sangatlah, satu, saya, sayalah, se, sebab, sebabnya, sebagai, sebagaimana, sebagainya, sebagian, sebaik, sebaik-baiknya, sebaiknya, sebaliknya, sebanyak, sebegini, sebegitu, sebelum, sebelumnya, sebenarnya, seberapa, sebesar, sebetulnya, sebisanya, sebuah, sebut, sebutlah, sebutnya, secara, secukupnya, sedang, sedangkan, sedemikian, sedikit, sedikitnya, seenaknya, segala, segalanya, segera, seharusnya, sehingga, seingat, sejak, sejauh, sejenak, sejumlah, sekadar, sekadarnya, sekali, sekali-kali, sekalian, sekaligus, sekalipun, sekarang, sekarang, sekecil, seketika, sekiranya, sekitar, sekitarnya, sekurang-kurangnya, sekurangnya, sela, selain, selaku, selalu, selama, selama-lamanya, selamanya, selanjutnya, seluruh, seluruhnya, semacam, semakin, semampu, semampunya, semasa, semasih, semata, semata-mata, semaunya, sementara, semisal, semisalnya, sempat, semua, semuanya, semula, sendiri, sendirian, sendirinya, seolah, seolah-olah, seorang, sepanjang, sepantasnya, sepantasnyalah, seperlunya, seperti, sepertinya, sepihak, sering, seringnya, serta, serupa, sesaat, sesama, sesampai, sesegera, sesekali, seseorang, sesuatu, sesuatunya, sesudah, sesudahnya, setelah, setempat, setengah, seterusnya, setiap, setiba, setibanya, setidak-tidaknya, setidaknya, setinggi, seusai, sewaktu, siap, siapa, siapakah, siapapun, sini, sinilah, soal, soalnya, suatu, sudah, sudahkah, sudahlah, supaya, tadi, tadinya, tahu, tahun, tak, tambah, tambahnya, tampak, tampaknya, tandas, tandasnya, tanpa, tanya, tanyakan, tanyanya, tapi, tegas, tegasnya, telah, tempat, tengah, tentang, tentu, tentulah, tentunya, tepat, terakhir, terasa, terbanyak, terdahulu, terdapat, terdiri, terhadap, terhadapnya, teringat, teringat-ingat, terjadi, terjadilah, terjadinya, terkira, terlalu, terlebih, terlihat, termasuk, ternyata, tersampaikan, tersebut, tersebutlah, tertentu, tertuju, terus, terutama, tetap, tetapi, tiap, tiba, tiba-tiba, tidak, tidakkah, tidaklah, tiga, tinggi, toh, tunjuk, turut, tutur, tuturnya, ucap, ucapnya, ujar, ujarnya, umum, umumnya, ungkap, ungkapnya, untuk, usah, usai, waduh, wah, wahai, waktu, waktunya, walau, walaupun, wong, yaitu, yakin, yakni, yang

Foto Dibuang Sayang: Sendang Sono

Sendang Sono adalah Goa Maria yang terletak di pegunungan Menoreh, Kulon Progo, Yogyakarta. Tidak begitu jauh dengan Sendang Jatiningsih.

Dinamakan sendang Sono karena terdapat mata air di bawah pohon sono yang besar.

Untuk mencapai tempat ini tidak mudah karena terletak di daerah berbukit-bukit. Konon pada jaman dahulu sebelum ada kendaraan umum, untuk mencapai tempat ini harus berjalan kaki dari Yogyakarta, setelah sebelumnya menyeberangi sungai Progo dengan gethek (perahu kecil).

Jalan menuju Sendang Sono

Pemandangan selama perjalanan menuju ke Goa Maria

Penduduk sekitar yang jualan gula aren di salah satu jalan masuk ke komplek ziarah

Komplek ziarah; pohon besar di sebelah kiri adalah pohon sono; yang sebelah kanan pohon beringin

Jalan salib di sekitar komplek

Goa Maria

Goa Maria

Kapel tepat di sebelah goa

Pada bulan Maria tempat ini penuh pengunjung, terutama pada hari libur

 

Foto Dibuang Sayang: Sendang Jatiningsih

Sendang Jatiningsih adalah Goa Maria yang terletak di daerah Moyudan, Sleman, Yogyakarta. Tempat ziarah ini, terletak di pinggir sungai Progo. Diberi nama Jatiningsih karena daerah itu memang ditumbuhi pohon jati.

Seperti pada umumnya Goa Maria, pada hari biasa di luar bulan Maria, tempat ini tidak banyak pengungjungnya.

Untuk menuju kesana:

  • Kendaraan pribadi; dari tugu Yogyakarta ke arah barat ke jalan raya Godean. Terus ke barat lewat: Pasar Godean –> pasar Ngijon –> Gereja Klepu –> Sembuhan –> terminal Pingitan (terminal kecil kosong sebelum jembatan Ngapak).  Sampai di Terminal Pingitan belok kiri terus sampai dusun Jitar (baca: njitar)
  • Kendaraan umum; naik bus yang arah Kenteng Kulonprogo (hanya ada dua bus yaitu Bus Pemuda dan Prayogo). Tunggu bus bisa di pertigaan Jatikencana, atau di perempatan Demak Ijo (maks sampai jam 5an). Turun di terminal pingitan, kemudian jalan kaki ke arah dusun Jitar.

Sungai Progo

Salib besar di sebelah goa

Goa Maria

Jalan masuk komplek Sendang Jatiningsih

JSON Basic

JSON – JavaScript Object Notation (baca: jeisen) sekarang mulai popular digunakan sebagai format pertukaran data menggantikan XML. Beberapa keunggulan JSON antara lain:

  • ukurannya lebih kecil dibanding XML (ukuran XML membengkak karena overhead nama tag)
  • human-readable (walaupun kalau ukurannya besar teler juga membacanya)
  • karena kecil, pertukaran datanya cepat
  • sudah mulai banyak parser yang mendukung JSON (tentu saja JavaScript mendukungnya)

JSON hanya bisa digunakan untuk data yang terstruktur (XML mempunyai keunggulan untuk meng-handle data yang tidak terstruktur). Tipe data yang didukung oleh JSON antara lain: string, number (integer/floating), boolean (true/false), array, dan null.

Basic Grammar

  • format JSON merepresentasikan sebuah object atau array of objects.
  • sebuah object, dimulai dengan { dan ditutup dengan }
  • sebuah array, dimulai dengan [ dan ditutup dengan ]
  • dalam object terdapat pair yang merepresentasikan nama pair dan nilainya
  • pair dan nilainya dipisahkan dengan tanda :
  • nama pair, harus dalam string
  • string harus di-encode dalam Unicode dan dimulai dengan ” dan ditutup dengan “
  • string tertentu harus di-escape dengan \ yaitu: ” \ / \b \f \n \r\t \uXXXX
  • nilai true, false, null harus ditulis dalam huruf kecil

Contoh

Biar mudah kita coba representasikan sebuah data ke dalam notasi object:

Object->nama = "Mario Tegal"
      ->umur = 40
      ->telepon[0] = "0856"
      ->telepon[1] = "0857"
      ->pekerjaan->nama = "PT. Motivator"
                 ->alamat = "Jakarta"
                 ->telepon[0] = "021-111"
                 ->telepon[1] = "021-222"

Data di atas dapat ditulis dalam format JSON sebagai berikut:

{
   "nama" :  "Mario Tegal",
   "umur" : 40,
   "telepon" : ["0856", "0857"],
   "pekerjaan" :
   {
     "nama" : "PT. Motivator",
     "alamat" : "Jakarta",
     "telepon" : ["021-111", "021-222"]
   }
 }

Dalam XML dapat dituliskan seperti ini:

<?xml version="1.0" encoding="ISO-8859-1"?>
<kontak>
   <nama>Mario Tegal</nama>
   <umur>40</umur>
   <telepon id="0">0856</telepon>
   <telepon id="1">0857</telepon>
   <pekerjaan>
             <nama>PT. Motivator</nama>
             <alamat>Jakarta</alamat>
             <telepon id="0">021-111</telepon>
             <telepon id="1">021-222</telepon>
   </pekerjaan>
</kontak>

Referensi: