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 indonesia, kata dasar, stemming. Bookmark the permalink. 52 Komentar.
saya sdh coba tapi koq belum bisa ya…msukin kata dasar ke databasenya…..
anda menggunakan database apa?dan tidak bisay itu bagaimana?
klo buat database mysql?
ya ganti koneksinya dulu dengan menggunkan mysql……
dan perintah yang diawali pg_ itu diganti mysql_
kalo penerapannya stemming itu gimana?
Misalkan : menjelajahi dunia maya itu sangat menyenangkan.
Saya bingung bikin script nya bagemana..
pertama semu ditoken……dipisahkan berdasarkan spasi kemudian di stoplist sehingga muncul menjelajahi dunia maya menyenangkan…..kemudian dilakukan stemming tergantung mau pakai metode apa!!!
Mas liyantanto bisa minta share stemming nazief nya??
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..
@luthar matius
Silahkan download disini
https://liyantanto.files.wordpress.com/2010/12/kata-dasar.doc
ubah extensinya menjadi txt.
ubah ekstensinya secara manual aja mas??
atau harus pake software tertentu??
oh iya mas…
masih ada flowchart stemming algoritma nazief nya ga mas??
😀
Ada sich algoritma NAziefnya entar q cari dulu.. diubah biasa aja.
iya mas ..
makasih bykya mas…
nanti kirim ke email saya lutharmatius@gmail.com
algoritma naziefnya..
thx before..
oh iya mas…
flowchart nya aja mas ,,heehe
terima kasih banyak mas madi
mas,, mau juga flowchart stemming algoritma nazief ny,, kalau ad di post y,, n kalau bisa kirim kn juga,, meisyathedream@gmail.com
makasi
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 😀
yang pasti dengan 28526 record siap siap saja browser timeout, ehehehehe…
Itu kelemahan program berbasis web,ada batasan waktu eksekusi script.Tapi tinggal ditambahkan saja di php.ini
mas mau tanya,biar bisa masuk semua databasenya gimana ya ? ngatur batasan waktu eksekusi script di php.ini gimana ya caranya ?
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
mas tanya, kalo metode vega itu saya lihat di internet, ga perlu data base ya??? berarti beda sendiri donk, saya cari referensinya susah bener
mas,, boleh minta algoritma nazief nya ? aku pake c# dan databasenya ms.access 2007 . .
masih bingung implementasinya…
email : dheliz1611@gmail.com
cek https://liyantanto.wordpress.com/2011/06/28/stemming-bahasa-indonesia-dengan-algoritma-nazief-dan-andriani/
Thank ya mas bro berguna bgt …………………..
bagaimana cara melakukan stemming dokumen web(html.htm) karena terdapat gambar?
maaf, saya ingin tahu bagaimana mendapatkan databasenya dari bahtera.org? saya belum menemukan source aslinya…
terima kasih
saya menghubungi admin dari bahtera
mas boleh minta script php text processing gak, mulai dari casefolding-stemming.
Mas, butuh daftar kata turunan juga Mas, Please lagi skripsi ini
berrysyafaat@gmail.com
kalau turunan gk ada q…coba ke bahtera.org
Mas ada source code programnya ga..??
Terimakasih mas.
ada source code yg full nya gaa mas..??
terimakasih .
butuh script apa ya?
gan! punya contoh stemming yg makek B java gakk,,,
mas
kenapa situs bahtera.org gak bisa diakses ??
iya kok gk aktif lagi ya sayang banget…
om,,,kog g bisa y om,,error di koneksinya om,,
plis butuh om,,buat skripsi,,
maaf nanya, untuk database disertai artinya ada tidak ya?
dulu saya minta juga…tapi admin http://bahtera.org/ belum sempet ngasi..
pakek database apa?mohon skrip koneksinya
hihihi terimksih..lain kali saya akan coba semoga yang saya nanti bisa dan berhasil 😀
sama semoga bermanfaat
programnya ga jalan!
errony apa mas?bisa di print screen? biar saya tau gk jangan di posisi mana
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
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);
}
}
}
?>
cek email ya mas
Ping-balik: Stemming Bahasa Indonesia dengan Algoritma Nazief dan Andriani « NEW_LINE
Ping-balik: knowledge4share » Blog Archive » Stemming Bahasa Indonesia dengan Algoritma Nazief dan Andriani