Java untuk Text Processing

5 July 2008 at 16:57 | Posted in penelitian, text processing | 4 Comments
Tags:

Update:
Split kata yang dipisahkan dengan koma sambil langsung ditrim

String[] arrHeader = line.trim().split("\\s*,\\s*");

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);
			} //end while
			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
			} //endfor
			pw.close();
		} catch (Exception e) {
			e.printStackTrace();
		} //endtry
	}
}

update Okt 2010: Kode lain yang bermanfaat saat loop hashmap, traversal berdasarkan key-nya.

for (String word : wordCount.keySet()) {
}

Berdasarkan key,value

for (Map.Entry<String,Double>entry : hmVectS1.entrySet()) {
            String key  = entry.getKey();
            Double val  = entry.getValue();
            System.out.println(key + "------> " + val);
        }

4 Comments »

RSS feed for comments on this post. TrackBack URI

  1. pak, saya sewaktu semester 5 kemarin membuat aplikasi untuk menentukan derajat keterhubungan barang di swalayan dalam rangka UAS System Informasi, misal jika membeli HP, konsumen cenderung membeli Memory Card juga. tetapi tidak sebaliknya. Membeli MC tidak cenderung membeli HP.

    Jika di hubungkan dengan aplikasi text processing bapak mungkin dapat dijadikan untuk mengolah derajat keterhubungan kata dalam suatu kalimat… mungkin.

    tetapi fungsinya, BUKAN, misal: probabilitas munculnya kata “kamu” setelah kata “aku” adalah n%. TETAPI : probabilitas munculnya kata “kamu”, jika didalam kalimat tersebut ada kata “aku” adalah n%.

    mungkin tidak terlalu berguna, tetap mungkin berguna…. sebab saya tidak mengetahui nanti fungsinya intinya jadi apa :p

    any way, saya kirim filenya ke email bapak.

  2. Maksudnya? Coba dijelaskan lagi

  3. maaf pak idenya muncul prematur, saya sempurnakan dulu.

  4. Bagaimana memecah paragraf jadi kalimat terus kalimat dipecah lagi jadi kata?


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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s

Blog at WordPress.com.
Entries and comments feeds.

%d bloggers like this: