Information Retrieval: PreProcessing dengan PHP


Preprocessing merupakan tahapan sangat penting dalam fase indexing pada suatu sistem temu-balik informasi (Information Retrieval). Kode program berikut memperlihatkan langkah-langkah sederhana dalam preprocessing terutama stop word removal dan stemming. Program ditulis dalam PHP sehingga mudah dipahami dan langsung dapat dijalankan (asal di taruh di web server). Daftar stop word dan stem dimasukkan ke dalam suatu array sehingga tidak memerlukan database. Tulisan lain memperlihatkan preprocessing yang melibatkan database MySQL.

<?php
//fungsi preproses menerima teks dan menerapkan beberapa tugas awal 
//fase indexing dokumen teks
function preproses($teks) {

  	//1. ubah ke huruf kecil 			
	$teks = strtolower(trim($teks));
	
  	//hilangkan tanda baca
	$teks = str_replace("'", " ", $teks);

	$teks = str_replace("-", " ", $teks);

	$teks = str_replace(")", " ", $teks);

	$teks = str_replace("(", " ", $teks);

	$teks = str_replace("\"", " ", $teks);

	$teks = str_replace("/", " ", $teks);

	$teks = str_replace("=", " ", $teks);

	$teks = str_replace(".", " ", $teks);

	$teks = str_replace(",", " ", $teks);

	$teks = str_replace(":", " ", $teks);

	$teks = str_replace(";", " ", $teks);

	$teks = str_replace("!", " ", $teks);

	$teks = str_replace("?", " ", $teks);
				
	//2. hapus stoplist
	//daftar stop word diletakkan di array
	//anda boleh menggunakan database sebagai gantinya
	$astoplist = array ("yang", "juga", "dari", "dia", "kami", "kamu", "ini", "itu", 
							   "atau", "dan", "tersebut", "pada", "dengan", "adalah", "yaitu");		
							   				
	foreach ($astoplist as $i => $value) {
   		$teks = str_replace($astoplist[$i], "", $teks);
	}
			
	//3. terapkan stemming
	//pemetaan term --> stem hanya menggunakan array
	//index ganjil menunjukkan term dan index genap adalah stem dari term tersebut
	//anda boleh menggunakan database sebagai gantinya
	$astemlist = array("pertemuan", "temu", "bertemu", "temu", "cr9", "cristiano ronaldo", "berharap", "harap");
	
	//perhatikan cara mengubah suatu term ke bentuk stemnya
	for ($i=0; $i<count($astemlist); $i = $i +2) {
		//ganti term (jika ditemukan term pada index ganjil) dengan stem pada index genap ($i=1)   		
  		$teks = str_replace($astemlist[$i], $astemlist[$i+1], $teks);
  	}
  			 	

	//hilangkan ruang kosong di awal & akhir teks	
	$teks = trim($teks);

	return $teks;

} //end function

//contoh penggunaan
$berita = "Yang spesial dari rencana kepindahan Jose Mourinho ke Real Madrid adalah pertemuan dia dengan Cristiano Ronaldo. Mengaku tak sabar bertemu rekan senegaranya itu, Mourinho juga berharap banyak gol dari CR9."; 

print("<hr />Sebelum pre-processing: <br />" . $berita . "<hr />");

$berita = preproses($berita);

print("Setelah pre-processing: <br />" . $berita . "<hr />");
	
?>

Hasil yang diberikan adalah

Sebelum pre-processing:
Yang spesial dari rencana kepindahan Jose Mourinho ke Real Madrid adalah pertemuan dia dengan Cristiano Ronaldo. Mengaku tak sabar bertemu rekan senegaranya itu, Mourinho juga berharap banyak gol dari CR9.

Setelah pre-processing:
spesial rencana kepindahan jose mourinho ke real madrid temu cristiano ronaldo mengaku tak sabar temu rekan senegaranya mourinho harap banyak gol cristiano ronaldo

Semoga bermanfaat ๐Ÿ™‚

Advertisements

4 thoughts on “Information Retrieval: PreProcessing dengan PHP

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.