Kata Dasar Bahasa Indonesia


Dalam tugas akhir yang saya kerjakan untuk menyelesaikan perkuliahan, terdapat proses stemming bahasa indonesia. Stemming adalah proses mencari bentuk kata dasar sesuai aturan dan kaidah bahasa Indonesia yang baku. Stemming merupakan bagian yang tidak terpisahkan dalam Information Retrieval (IR). Algoritma yang saya gunakan dalam proses stemming tersebut adalah algoritma Nazief & Adriani. Algoritma stemming untuk teks berbahasa Indonesia yang memiliki kemampuan prosentase keakuratan (presisi) lebih baik dari algoritma lainnya. Algoritma yang dibuat oleh Bobby Nazief dan Mirna Adriani sangat dibutuhkan dan menentukan dalam proses IR dalam dokumen Indonesia.

Proses stemming tersebut sangat bergantung pada kamus kata dasar yang kita miliki. Oleh karena itu, saya melakukan pencarian mengenai kata dasar yang cocok dan lengkap untuk penelitian tersebut. Setelah melalang buana ke server satu ke server lainnya maka saya mendapatkan situs yang bagus yaitu: http://bahtera.org/. Bahtera adalah kamus bahasa Indoensia yang menjadi rujukan sesuai Kamus Besar Bahasa Indonesia. Kata dasar yang terdapat di Bahtera sebanyak 28.526 kata. Silahkan download kata dasar bahasa Indoensia dari Bahtera kata dasar. Untuk memasukkan ke database silahkan gunakan perintah berikut. Disini saya menggunakan PostgreSQL sebagai database. Pertama buat database temapat disimpannya kata dasar tersebut:

CREATE TABLE tb_katadasar (
id_katadasar integer NOT NULL,
katadasar character varying,
tipe_katadasar character varying
);

Buat file koneksi ke database

<?php
/* --- Untuk Memproteksi halaman agar tidak bisa langsung dibuka --- */
if(eregi('koneksi.php',$_SERVER['PHP_SELF'])){
 header('location:../');
}
?>
<?php
 $pg_host="localhost";
 $pg_user="postgres";
 $pg_password="******";
 $pg_database="dbrefita";
 $koneksi=pg_connect("host=$pg_host dbname=$pg_database user=$pg_user password=$pg_password") or die ("Koneksi Tidak Sukses !!");
//Transelit Bulan Ke bahasa Indonesia

?>

sebelumnya ubahlah file kata-dasar .doc menjadi .txt. Kemudian buatlah kode berikut untuk memasukkan ke dalam database.

require_once("koneksi.php");
$data = file("kata-dasar.txt");
$nomor_data = count($data);
//echo $nomor_data;
if ($nomor_data ==0){
 echo "Tidak ada Data..........";
}else{
 for($j=0;$j<$nomor_data;$j++){     $kata2 = $data[$j];                 if ($kata2 !=""){                     $kataRem=explode(" ",$kata2);                     //print_r($kataRem);                     $arrayRem=array();                     $arrayTipe=array();                     foreach($kataRem as $l => $key){
 if((ereg('\(',$key))||(ereg('\)',$key))){
 $valueNo=substr($key,strlen($key));
 }else{
 $valueNo=trim($key);
 }
 //print_r($valueNo);
 $arrayRem[]=trim(strtolower($valueNo));
 if((ereg('\(',$key))||(ereg('\)',$key))){
 $valueNo1=ereg_replace('\)','',$key);
 $valueNo2=ereg_replace('\(','',$valueNo1);
 }else{
 $valueNo2=substr($key,strlen($key));
 }
 //print_r($valueNo);
 $arrayTipe[]=trim(strtolower($valueNo2));

 }
 $gabung=trim(implode(" ",$arrayRem));
 $tipe=trim(implode(" ",$arrayTipe));
 if($tipe=='n'){
 $tipe2='Nomina';
 }
 elseif($tipe=='v'){
 $tipe2='Verba';
 }elseif($tipe=='adj'){
 $tipe2='Adjektiva';
 }elseif($tipe=='i'){
 $tipe2='Interjeksi';
 }elseif($tipe=='pre'){
 $tipe2='Preposisi';
 }elseif($tipe=='k'){
 $tipe2='Konjungsi';
 }elseif($tipe=='adv'){
 $tipe2='Adverbia';
 }elseif($tipe=='l'){
 $tipe2='Lain-lain';
 }elseif($tipe=='num'){
 $tipe2='Numeralia';
 }elseif($tipe=='pron'){
 $tipe2='Pronomina';
 }elseif($tipe=='bt'){
 $tipe2='Bentuk terikat';
 }
 else{
 $tipe2=$tipe;
 }
 //echo $gabung;
 $sql = "insert into tb_katadasar (katadasar,tipe_katadasar) values('$gabung','$tipe2')";
 //echo $sql.";
";
 $hasil = pg_query($sql);
 }
 }

}
?>

Semoga bermanfaat.

Posted on Desember 6, 2010, in Artikel and tagged , , . Bookmark the permalink. 52 Komentar.

  1. saya sdh coba tapi koq belum bisa ya…msukin kata dasar ke databasenya…..

  2. anda menggunakan database apa?dan tidak bisay itu bagaimana?

  3. klo buat database mysql?

  4. ya ganti koneksinya dulu dengan menggunkan mysql……
    dan perintah yang diawali pg_ itu diganti mysql_

  5. kalo penerapannya stemming itu gimana?
    Misalkan : menjelajahi dunia maya itu sangat menyenangkan.

  6. Saya bingung bikin script nya bagemana..

  7. pertama semu ditoken……dipisahkan berdasarkan spasi kemudian di stoplist sehingga muncul menjelajahi dunia maya menyenangkan…..kemudian dilakukan stemming tergantung mau pakai metode apa!!!

  8. Mas liyantanto bisa minta share stemming nazief nya??

  9. mas..
    saya boleh minta database kata dasarnya ga buat steming??
    saya jg lg skripsi ttg text mining..
    saya udah bingung ga dpt2 d google..

    mohon bantuannya gan..

    email saya lutharmatius@gmail.com

    thx before..

  10. @luthar matius
    Silahkan download disini
    https://liyantanto.files.wordpress.com/2010/12/kata-dasar.doc
    ubah extensinya menjadi txt.

  11. ubah ekstensinya secara manual aja mas??
    atau harus pake software tertentu??

  12. oh iya mas…
    masih ada flowchart stemming algoritma nazief nya ga mas??
    😀

  13. Ada sich algoritma NAziefnya entar q cari dulu.. diubah biasa aja.

  14. iya mas ..
    makasih bykya mas…
    nanti kirim ke email saya lutharmatius@gmail.com

    algoritma naziefnya..

    thx before..

  15. oh iya mas…
    flowchart nya aja mas ,,heehe

  16. terima kasih banyak mas madi

  17. mas,, mau juga flowchart stemming algoritma nazief ny,, kalau ad di post y,, n kalau bisa kirim kn juga,, meisyathedream@gmail.com

    makasi

  18. mas bisa minta pseudocode nya gak untuk algoritma nazief nya, aq mau bikin stemmingnya pake java….tapi bingung karna dapet algoritmanya sepotong2…mohon bantuannya ya mas 😀

  19. yang pasti dengan 28526 record siap siap saja browser timeout, ehehehehe…

  20. Itu kelemahan program berbasis web,ada batasan waktu eksekusi script.Tapi tinggal ditambahkan saja di php.ini

  21. mas mau tanya,biar bisa masuk semua databasenya gimana ya ? ngatur batasan waktu eksekusi script di php.ini gimana ya caranya ?

  22. Perhatikan databaseny!! di contoh di atas saya menggunakan database postgresql…kalau anda pakek mysql tinggal ganti koneksinya dan perintah pg_ ganti mysql_
    Untuk batasan waktu eksekusi di php,ini cari maximum time..kalau gk salah

  23. mas tanya, kalo metode vega itu saya lihat di internet, ga perlu data base ya??? berarti beda sendiri donk, saya cari referensinya susah bener

  24. mas,, boleh minta algoritma nazief nya ? aku pake c# dan databasenya ms.access 2007 . .
    masih bingung implementasinya…
    email : dheliz1611@gmail.com

  25. Thank ya mas bro berguna bgt …………………..

  26. bagaimana cara melakukan stemming dokumen web(html.htm) karena terdapat gambar?

  27. maaf, saya ingin tahu bagaimana mendapatkan databasenya dari bahtera.org? saya belum menemukan source aslinya…
    terima kasih

  28. saya menghubungi admin dari bahtera

  29. mas boleh minta script php text processing gak, mulai dari casefolding-stemming.

  30. Mas, butuh daftar kata turunan juga Mas, Please lagi skripsi ini
    berrysyafaat@gmail.com

  31. kalau turunan gk ada q…coba ke bahtera.org

  32. Mas ada source code programnya ga..??

    Terimakasih mas.

  33. ada source code yg full nya gaa mas..??
    terimakasih .

  34. butuh script apa ya?

  35. gan! punya contoh stemming yg makek B java gakk,,,

  36. mas
    kenapa situs bahtera.org gak bisa diakses ??

  37. iya kok gk aktif lagi ya sayang banget…

  38. om,,,kog g bisa y om,,error di koneksinya om,,

    plis butuh om,,buat skripsi,,

  39. maaf nanya, untuk database disertai artinya ada tidak ya?

  40. dulu saya minta juga…tapi admin http://bahtera.org/ belum sempet ngasi..

  41. pakek database apa?mohon skrip koneksinya

  42. hihihi terimksih..lain kali saya akan coba semoga yang saya nanti bisa dan berhasil 😀

  43. sama semoga bermanfaat

  44. programnya ga jalan!

  45. errony apa mas?bisa di print screen? biar saya tau gk jangan di posisi mana

  46. ini errornya mas, saya udah coba2 tetep ga bisa, mgkn bisa kasih tau algoritmanya mas, sama diperbaiki scriptnya

    Parse error: syntax error, unexpected end of file in C:\xampp\htdocs\kata_dasar\error.php on line 65

  47. ini mas scriptnya, knpa error ya, file .txt nya udah ada juga kok,

    <?php
    require_once("koneksi.php");
    $data = file("kata-dasar.txt");
    $nomor_data = count($data);
    //echo $nomor_data;
    if ($nomor_data ==0){
    echo "Tidak ada Data……….";
    }else{
    for($j=0;$j $key){
    if((ereg(‘\(‘,$key))||(ereg(‘\)’,$key))){
    $valueNo=substr($key,strlen($key));
    }else{
    $valueNo=trim($key);
    }
    //print_r($valueNo);
    $arrayRem[]=trim(strtolower($valueNo));
    if((ereg(‘\(‘,$key))||(ereg(‘\)’,$key))){
    $valueNo1=ereg_replace(‘\)’,”,$key);
    $valueNo2=ereg_replace(‘\(‘,”,$valueNo1);
    }else{
    $valueNo2=substr($key,strlen($key));
    }
    //print_r($valueNo);
    $arrayTipe[]=trim(strtolower($valueNo2));

    }
    $gabung=trim(implode(” “,$arrayRem));
    $tipe=trim(implode(” “,$arrayTipe));
    if($tipe==’n’){
    $tipe2=’Nomina’;
    }
    elseif($tipe==’v’){
    $tipe2=’Verba’;
    }elseif($tipe==’adj’){
    $tipe2=’Adjektiva’;
    }elseif($tipe==’i’){
    $tipe2=’Interjeksi’;
    }elseif($tipe==’pre’){
    $tipe2=’Preposisi’;
    }elseif($tipe==’k’){
    $tipe2=’Konjungsi’;
    }elseif($tipe==’adv’){
    $tipe2=’Adverbia’;
    }elseif($tipe==’l’){
    $tipe2=’Lain-lain’;
    }elseif($tipe==’num’){
    $tipe2=’Numeralia’;
    }elseif($tipe==’pron’){
    $tipe2=’Pronomina’;
    }elseif($tipe==’bt’){
    $tipe2=’Bentuk terikat’;
    }
    else{
    $tipe2=$tipe;
    }
    //echo $gabung;
    $sql = “insert into tb_katadasar (katadasar,tipe_katadasar) values(‘$gabung’,’$tipe2′)”;
    //echo $sql.”;
    “;
    $hasil = pg_query($sql);
    }
    }

    }
    ?>

  1. Ping-balik: Stemming Bahasa Indonesia dengan Algoritma Nazief dan Andriani « NEW_LINE

  2. Ping-balik: knowledge4share » Blog Archive » Stemming Bahasa Indonesia dengan Algoritma Nazief dan Andriani

Tinggalkan komentar