4. IMPLEMENTASI SISTEM PERANGKAT LUNAK
Setelah melalui proses perancangan, dilakukan pembuatan perangkat lunak.
Pada bab ini akan dibahas tentang lingkungan dan tahap-tahap implementasi, yang dilanjutkan dengan penjelasan tentang masing-masing tahapan tersebut.
4.1. Tahap-Tahap Implementasi
Implementasi pada sistem perangkat lunak ini secara keseluruhan dilakukan dengan urutan-urutan proses sebagai berikut :
1. Penyiapan abstrak artikel Pusat Penelitian Universitas Kristen Petra yang digunakan sebagai data dalam sistem pencarian informasi
2. Implementasi basis data
3. Implementasi proses, yaitu pembuatan perangkat lunak untuk masing- masing proses yang ada di dalam sistem. Implementasi proses terdiri dari :
• Implementasi proses parsing abstrak
• Implementasi indexing dan pemisahan kata dari paragraph yang diambil.
• Implementasi proses pencarian menggunakan Fast Algorithm.
• Implementasi interface, yaitu implementasi pembuatan web sebagai dasar dari perangkat lunak yang dibuat.
Masing-masing tahapan implementasi yang ditulis diatas, akan dibahas dalam beberapa sub-sub bab di bawah ini.
4.2. Persiapan Abstrak
Sebagaimana yang telah dijelaskan di atas, bahwa abstrak artikel Pusat Penelitian Universitas Kristen Petra yang digunakan adalah abstrak terstruktur yang memiliki pola baku struktur abstrak berupa struktur judul, penulis, abstrak baik itu yang berbahasa Inggris maupun berbahasa Indonesia, serta kata kunci yang berbahasa Inggris dan berbahasa Indonesia. Tiap-tiap struktur mewakili satu
informasi yang dikandung di dalam abstrak tersebut. Contoh abstrak beserta struktur yang terdapat didalamnya dapat dilihat pada gambar 4.1. dibawah ini.
SISTEM PENGEMBANGAN KENDALI FUZZY LOGIC BERBASIS MIKROKONTROLER KELUARGA MCS51 (PetraFuz)
1
Thiang, Anies Hannawati, Ban Eng, Resmana Fakultas Teknik, Jurusan Teknik Elektro - Universistas Kristen Petra
2
e-mail: [email protected]
3 ABSTRAK: Makalah ini menyajikan sebuah sistem pengembangan kendali fuzzy logic (PetraFuz, Petra Fuzzy Development System) yang dikembangkan oleh laboratorium Sistem Kontrol, Jurusan Teknik Elektro, Universitas Kristen Petra Surabaya. Sistem ini terdiri dari perangkat keras sistem mikrokontroler MCS51 dan perangkat lunak pendukung yang berjalan pada PC. Sistem PetraFuz digunakan untuk mengembangkan sistem berbasis fuzzy logic utamanya pada bidang kendali. Kemampuan sistem meliputi pengembangan pada fase perancangan kendali, evaluasi kendali, pembentukan program bahasa assembly MCS51 dan proses downloading program Menuju target sistem mikrokontroler MCS51 untuk dieksekusi melakukan kendali pada plant yang nyata. Aksi kendali dapat diakuisi oleh program PC melalui komunikasi serial RS232 sehingga respon kendali dapat digambarkan pada layar monitor untuk dilakukan analisis lebih lanjut yang diperlukan pada proses tuning if-then fuzzy rules. Penggunaan tools PetraFuz, sangat membantu proses rancang bangun sistem kendali fuzzy terutama bagi praktisi/akademisi yang berminat menekuni teknik kendali yang relatif baru ini. Sistem PetraFuz diharapkan dapat memberikan kontribusi positip bagi masyarakat sistem kendali untuk mengembangkan berbagai aplikasi kendali berbasis fuzzy logic.
4 Kata kunci: logika fuzzy, sistem pengembangan kendali fuzzy, mikrokontroler MCS51
5 ABSTRACT : This paper presents a Fuzzy Logic Development Tool called PetraFuz which has been developed at Control System Laboratory, Electrical Engineering Department, Petra Christian University.
The system consists of a hardware target based on MCS51 microcontroller and a software support running under PC Windows. The system is targeted for developing fuzzy logic based systems. It supports fuzzy logic design, evaluation, assembly language generator and downloading process to the target hardware to perform on-line fuzzy process. Process action and fuzzy parameters could be transferred to PC monitor via RS-232 serial communication, this on-line process parameters is used for fuzzy tuning, i.e. fuzzy if-then rules and fuzzy membership functions. The PetraFuz tool helps very much for Fuzzy system developments, it could reduce development time significantly. The tool could spur the development of fuzzy systems based on microcontroller systems such as fuzzy control systems, fuzzy information processing, etc.
Keywords : fuzzy logic, fuzzy control development system, microcontroller MCS51
6
Gambar 4.1. Contoh abstrak artikel jurnal
Dalam contoh artikel diatas tiap struktur diwakili oleh satu angka, tiap angka mewakili sebuah paragraph yang mewakili informasi dalam abstrak tersebut. Petunjuk atas satuan angka yang ditulis di atas dapat dilihat dibawah ini :
1 = Judul dari artikel 2 = Penulis artikel
3 = Abstrak berbahasa Indonesia 4 = Kata kunci berbahasa Indonesia 5 = Abstrak berbahasa Inggris 6 = Kata kunci berbahasa Inggris
Dalam tugas akhir ini abstrak artikel yang menjadi input atau masukan untuk sistem tersimpan di dalam file dengan format .doc (ditulis dengan menggunakan aplikasi Microsoft Word). Agar system bias membaca abstrak yang tersimpan di dalam file ini maka sebelumnya pembuatan file harus menggunakan aturan yang telah dilakukan.
Pada proses persiapan abstrak dilakukan pengaturan penulisan pada file yang menyimpan abstrak artikel jurnal. Agar sistem bias membaca dengan benar pada teks dan struktur abstrak, maka file dengan format .doc dibuat dengan menggunakan aturan sebagai berikut :
1. File abstrak memiliki bagian dengan urutan sebagai berikut :
• Judul Artikel
• Penulis Artikel
• Abstrak Indonesia
• Kata kunci Indonesia
• Abstrak Inggris
• Kata kunci Inggris Keterangan :
- Semua urutan di atas harus dimiliki oleh sebuah abstrak
- Style yang digunakan untuk setiap teks dalam file yang menyimpan abstrak sesuai dengan kedudukannya dalam struktur abstrak.
2. Teks dalam file ditulis secara lansung dalam paragraf (text), karena teks yang ditulis didalam tabel atau text box tidak bisa dibaca dan diambil oleh sistem.
3. Penulisan nama style harus sesuai (huruf kecil semua). Apabila terdapat perbedaan dalam penulisan akan dianggap sebagai struktur yang berbeda pula.
4. Penulisan kalimat-kalimat yang ada di dalamnya juga tidak boleh mengandung karakter “ “ atau spasi lebih dari satu kali di tempat yang sama misalnya diantara kata “saya” dan “makan” di dalam kalimat “saya makan” tidak boleh ada dua karakter “ “ atau spasi lebih dari satu kali.
5. Penulisan style harus mengikuti tata cara penulisan seperti dibawah ini :
• Judul Artikel = judul
• Penulis Artikel = author
• Abstrak Indonesia = abstrak1
• Kata kunci Indonesia = keyword1
• Abstrak Inggris = abstrak2
• Kata kunci Inggris = keyword2
Persiapan dilakukan serupa pada setiap artikel yang akan dimasukkan ke dalam basis data dan hanya artikel yang sesuai dengan aturan di atas yang bisa diproses lebih lanjut.
4.3. Perancangan Perangkat Lunak
Ada tiga hal yang harus diperhatikan dalam perancangan perangkat lunak ini, yaitu perancangan data, perancangan proses dan perancangan antar muka (interface). Secara garis besar proses yang dilakukan perangkat lunak ini dapat digambarkan sebagai berikut :
Gambar 4.2. Diagram garis besar proses perangkat lunak
4.3.1. Implemetasi Basis Data
Dalam implementasi basis data, dilakukan pembuatan basis data untuk menyimpan data-data yang digunakan dalam sistem, yaitu data dari abstrak Makalah Tugas Akhir, data hasil proses indexing serta data-data lain yang
digunakan dalam sistem. Pembuatan basis data dilakukan dengan cara menjalankan script hasil generate dari desain basis data yang terdapat di Bab 3.
Pada Bab 3 sebelumnya basis data dibuat dengan relasi yang independent dimana antara satu entity dapat berdiri sendiri tanpa ada hubungan yang signifikan sehingga secara umum tabel master yang harus dibuat adalah sebanyak tujuh buah tabel sebagai tabel untuk menyimpan isi dari hasil parsing pada abstrak yang di akan dimasukkan. Ke-tujuh tabel tersebut adalah tabel judul, author, abstract1, abstract2, keyword1, keyword2. Selain ke-tujuh tabel master di atas dibuatkan pula tabel alih index, tabel ini dibuat dengan tujuan untuk memindahkan dan memisahkan hasil indexing antar satu abstrak dengan abstrak lainnya di dalam satu stuktur yang sama. Dibuatnya tabel-tabel alih ini dengan harapan supaya dapat diketahui hasil indexing ini berasal dari abstrak yang mana. Tabel alih dibuat sebanyak tabel master
Selain tabel master dan tabel alih terdapat pula tabel untuk index cari.
Tabel ini adalah tabel yang memiliki tujuan sama dengan tabel alih, perbedaannya terletak pada penggunaan dan proses pembuatannya. Pada tabel ini proses pembuatannya berasal dari tabel penyimpanan master yang kemudian pada saat dilakukan proses indexing pencarian hasil proses tersebut disimpan ke dalam tabel-tabel ini, penggunaan tabel ini hanya dilakukan pada saat sebuah abstrak di- index dan sedangkan untuk perlakukan proses berikutnya tabel terlebih dahulu dikosongkan terlebih dahulu dan kemudian baru diisi kembali dengan proses index pada abstrak berikutnya. Tabel ini dibuat juga sebanyak 1 tabel dimana pemakaiannya dilakukan bergantian.
Setelah ketiga tabel tersebut dibuat, terdapat pula beberapa tabel yang harus dibuat. Diantaranya adalah tabel kombinasi, tabel ini dibuat untuk menyimpan dan menampung hasil generate kombinasi yang dilakukan pada proses generate kombinasi. Kemudian tabel kata cari, tabel ini dibuat untuk menampung kata-kata cari yang berasal dari kata-kata di dalam tabel kombinasi.
Kegunaan dari tabel ini adalah sebagai tempat penampungan agar pencarian dapat dilakukan dengan mudah. Dan untuk tabel yang terakhir adalah tabel hasil dimana tabel ini adalah hasil dari semua proses yang ada dimana tipe data yang digunakan
adalah field untuk pengenal dalam hal ini diberi label ID_ARTIKEL sedangkan untuk hasil pencarian dimasukkan ke dalam field yang diberi label WORD dan field NILAI sebagai field untuk penghitungan nilai.
4.3.2. Implementasi Proses
Setelah proses penyiapan abstrak basis data, dilakukan implemetasi proses berdasarkan perancangan proses yang telah dibuat. Ada tiga bagian proses besar yang nantinya akan diimplementasikan, antara lain :
1. Proses parsing abstrak, proses ini meliputi bagaimana sistem melakukan parsing abstrak dengan file format .doc berdasarkan style yang telah dimasukkan di dalam tiap-tiap abstrak terstruktur dengan menggunakan JACOB sebagai basis komponen untuk information retrieval.
2. Proses indexing abstrak, proses ini meliputi bagaimana sistem melakukan indexing pada hasil parsing abstrak yang dilakukan sebelumnya. Di dalam proses indexing akan diimplementasikan bagaimana pula sistem memisahkan kata-per kata sebagai bahan acuan untuk dilakukan pencarian data dan penghapusan data-data yang merupakan kata-kata umum di dalam proses stopword.
3. Proses stemming abstrak, proses ini meliputi bagaiman sistem melakukan proses stemming (proses untuk menghilangkan imbuhan baik itu sebagai awalan maupun akhiran dari sebuah kata berbahasa Inggris). Proses ini hanya berlaku untuk abstrak berbahasa Inggris maupun kata kunci berbahasa Inggris
4. Proses skoring abstrak, proses ini meliputi bagaimana sistem akan melakukan penilaian pada sebuah abstrak berdasarkan kata kunci yang dimasukkan.
5. Proses pencarian abstrak, proses ini meliputi bagaimana sistem akan melakukan pencarian data berdasarkan nilai yang diberikan pada proses sebelumnya.
4.3.2.1. Proses parsing abstrak
Proses parsing abstrak dibuat untuk mengambil informasi (information retrieval) dari struktur abstrak yang telah ditandai dengan menggunakan style abstrak Microsoft Word. Proses parsing ini menjalankan fungsi untuk mengekstrak struktur dan isi dari abstrak yang tersimpan dalam file dengan format .doc, yaitu judul, pengarang, abstrak Indonesia, abstrak Inggris, kata kunci Indonesia, dan kata kunci Inggris.
Pengekstrakan struktur dan isi dari abstrak terstruktur dalam format Microsoft Word dilakukan dengan mengakses objek model dari abstrak Microsoft Word. Struktur yang diambil dari abstrak ini berupa sebuah paragraph dari keseluruhan struktur kalimat yang memiliki properti style yang telah dimasukkan sebelumnya. Proses pengenalan style ini dilakukan satu per satu dari judul, pengarang, abstrak Indonesia, abstrak Inggris, kata kunci Indonesia, dan kata kunci Inggris. Sebagai contoh dari proses ekstraksi ini kita akan mengambil contoh style judul: pada proses ekstraksi ini fungsi ekstrak akan mengenali style judul pada abstrak Microsoft Word kemudian jika sudah ditemukan maka dilakukan ekstraksi per paragraph jika untuk style ini terdapat dua baris tulisan yang dikenali sebagai properti style judul maka akan diekstrak baris pertama terlebih dahulu kemudian baru baris kedua. Cara ekstraksi ini juga berlaku untuk properti yang lainnya.
Project The JACOB (http://danadler.com/jacob/) membuat JAVA_COM Bridge untuk bisa memanggil komponen-komponen COM dan library dari Win32 dari Java. Komponen dari JACOB bisa mengimplementasikan fungsi untuk mengakses object model dari abstrak dalam format Microsoft Word. Untuk bisa menggunakan komponen tersebut, tinggal memasukkan komponen ke dalam system komputer dan mengeset class path-nya. Settingan class path sama dengan settingan untuk Oracle sebagai komponen J2EE JDK.
4.3.2.1.1. Proses parsing isi abstrak
Proses ini berfungsi untuk melakukan parsing seperti yang telah dijelaskan diatas. Secara khusus JACOB menyediakan tool penting ketika akan mengambil informasi dari aplikasi Microsoft Word ataupun aplikasi COM lainnya. Tool yang dimaksud itu adalah ActiveXComponent. Komponen ini diberi inisialisasi aplikasi
apa yang akan dibuka, dalam hal ini adalah aplikasi Microsoft Word sehingga nilai yang diberi adalah “Word Application”. Setelah itu JACOB akan melakukan retrieval perintah khusus untuk aplikasi Microsoft Word. Beberapa style di dalam aplikasi Microsoft Word agak khusus dibandingkan dengan aplikasi yang lainnya sehingga perlu dilakukan retrieval perintah yang berhubungan.
Proses retrieval perintah ini pertama kali yang diproses adalah retrieval perintah untuk membuat aplikasi Microsoft Word menjadi tampak pada waktu dilakukan proses parsing dengan menggunakan JACOB. Retrieval perintah ini menghasilkan nilai logika yang dapat diatur sesuai dengan keinginan. Setelah itu proses dilanjutkan ke retrieval perintah berikutnya, yaitu mengatur apa saja yang akan dibuka di dalam aplikasi ini, semisal di dalam file Word tersebut akan diambil teks per paragraph maka retrieval perintah ini diberi style “Documents”.
Style ini dimaksudkan untuk memberikan perintah kepada JACOB agar nantinya hanya abstrak teks saja yang dilakukan parsing informasi.
Setelah itu proses dilanjutkan kembali dengan membuka file abstrak yang akan di-parsing informasinya. Retrieval perintah ini diberi style “Open” dengan acuan file-nya sesuai dengan alamat yang dimasukkan ke dalam fungsi parsing ini.
Selain inputan alamat file dibutuhkan pula hasil dari retrieval perintah sebelumnya. Hasil dari retrieval perintah ini akan digunakan oleh retrieval perintah berikutnya yang berfungsi untuk memberikan perintah kepada JACOB untuk mengambil informasi dengan range teks paragraph.
Dengan diselesaikannya retrieval perintah di atas maka proses inisialisasi JACOB untuk mengambil informasi pada abstrak telah selesai. Proses dilanjutkan kembali dengan melakukan pengecekan style document yang diminta atau sesuai dengan fungsinya. Perintah pertama adalah memanggil style perintah “Item” untuk tiap-tiap paragraph yang ditemukan, hasil dari pemanggilan ini adalah sebuah bentuk range paragraph dengan style yang sama dengan pertama kali ditemukan.
Jika range sudah tidak menemukan kembali paragraph yang sama dengan style utama maka range tersebut akan dikonversi ke dalam bentuk variant yang nantinya variant ini akan menghasilkan keterangan style apa yang sudah ditemukan sebelumnya.
Di bagian ini-lah pengecekan style documents dengan yang diminta apakah sama atau tidak jika sama maka range sebelumnya dikonversi ke dalam bentuk tipe data String, hasil ini yang akan dijadikan inputan untuk proses berikutnya.
Pengambilan range ini dilakukan dengan memerintahkan retrieval perintah “Item”
dengan diikuti koversinya ke dalam tipe data String.
Setelah selesai dengan pengambilan teks ini maka perlu diperintahkan kepada JACOB untuk Menutup abstrak dengan membubuhkan style “Close”. Dan kemudian diikuti dengan perintah invoke (“Quit”, new variant[]{}), perintah ini ditujukan untuk keluar dari JACOB. Jika perintah ini tidak dicantumkan maka yang terjadi adalah komponen JACOB akan mengalami perhentian parsing informasi untuk style yang lainnya.
Secara umum pada saat proses ini dilakukan semua asumsi yang digunakan adalah asumsi secara umum. Asumsi yang digunakan adalah bahwa semua range paragraph yang diambil hanya yang memiliki heading style yang telah dipersiapkan. Jika bagian tersebut memiliki heading yang lain maka bagian tersebut akan dipisahkan dan tidak akan diproses lebih lanjut. Sebagai perbandingan semua isi abstrak yang telah diambil jika abstrak yang diambil memiliki heading judul maka abstrak tersebut akan diberi header sebagai judul, sedangkan abstrak yang memiliki heading author maka abstrak tersebut akan diberi header sebagai penulis dan seterus-seterusnya.
Algoritma untuk mengambil parsing abstrak ini adalah sebagai berikut :
Inisialisasi ActiveXComponent = “Word Application”;
For (int i=0; i<=Count-1;i++) {
Para = ActiveXComponent_call(pars, "Item", Variant(i));
Range = get_ActiveXComponent(para, "Range");
V_style = get_ActiveXComponent(para, "Style");
Cek apakah V_style sama dengan yg dicari if( d == 0)
{
pText = get_ActiveXComponent(range, "Text");
} }
Gambar 4.3. Algoritma untuk parsing isi dan struktur abstrak
Input dari proses parsing harus berupa abstrak makalah Tugas Akhir berbahasa Indonesia yang tersimpan dalam file dengan format doc dan telah memiliki struktur yang benar.
4.3.2.1.2. Proses penyimpanan ke dalam basis data
Proses upload data dari abstrak ke basis data dilakukan setelah proses parsing abstrak. Pertama kali, dilakukan proses upload data master untuk memasukkan dan menyimpan data-data utama dari abstrak, setelah itu baru dilakukan upload data detail. Bagian algoritma dari upload data ke dalam master table adalah sebagai berikut :
conn.setAutoCommit (false);
Statement stmt = conn.createStatement();
String sql1,sql2,sql3,sql4,sql5;
sql1="select * from global_var_int where variabel='id_doc_max'";
sql2="delete from global_var_int where variabel='id_doc_max'";
sql3 = "insert into global_var_int values ('id_doc_max',(select max(id_abstrak) from abstrak))";
sql4 = "update global_var_int set nilai=(select
max(id_abstrak)from abstrak)where variabel='id_doc_max'";
ResultSet rset = stmt.executeQuery(sql1);
while (rset.next()) {
id_doc_max = rset.getInt("nilai");
id_doc_baru = id_doc_max+1;
}
try {
sql5="insert into abstrak values ("+id_doc_baru +",'"+
v_file+"','"+v_pengarang+"')";
stmt.executeUpdate (sql5);
conn.setAutoCommit (true);
}catch (SQLException e) {
System.out.println(e.getMessage());
} try {
stmt.execute (sql2); conn.setAutoCommit (true);
stmt.execute(sql3); conn.setAutoCommit (true);
}catch (SQLException e) {
System.out.println(e.getMessage());
}
stmt.close();
conn.close();
Gambar 4.4. Algoritma untuk insert ke dalam master table
Sedangkan bagian program untuk meng-upload data detail adalah sebagai berikut :
conn.setAutoCommit (false);
Statement stmt = conn.createStatement();
id_doc = id_doc_baru;
String sql1;
if ((id_struk==1)||(id_struk==3)||(id_struk==4)||(id_struk==5)) {
sql1="insert into paragraf values ("+id_doc+","+id_struk+
","+id_para+",'"+pText+"')";
} else
{
sql1="insert into paragraf_nidx values("+id_doc+","+id_struk+","
+id_para+",'"+pText+"')";
} try
{
stmt.execute(sql1);
if (id_struk==2) {
sql1="update abstrak set pengarang='"+pText+"' where id_abstrak="+id_doc;
stmt.execute(sql1);
}
conn.setAutoCommit (true);
} catch (SQLException e) {
System.out.println("error di struk : "+id_struk+" paragraf ke :
"+id_para+"adalah : "+e.toString());
}
stmt.close();
conn.close();
Gambar 4.5. Algoritma untuk insert ke dalam detail table
Setelah dilakukan upload data ke basis data, maka data-data dari abstrak yang di-input-kan telah tersimpan di dalam basis data dan siap diproses untuk digunakan pada aplikasi indexing.
Proses penyimpanan data ke dalam basis data di sini dilakukan dengan menyimpannya ke dalam tabel-tabel yang berbeda sesuai dengan header yang diberi pada abstrak tersebut. Asumsi yang digunakan adalah semua isi abstrak disimpan beserta dengan ID_ARTIKEL yang mewakili abstrak dengan heading
yang diambilnya. Tipe data untuk ID_ARTIKEL adalah varchar2(11) dimana field ini hanya akan mampu memuat 11 karakter sebagai penanda abstrak. Sedangkan tipe data untuk bagian abstrak yang diambil kesemuanya menggunaka Character Large Object (CLOB). Kesemua ini disimpan di dalam tabel master.
4.3.2.2. Proses indexing abstrak
Di dalam proses ini setiap informasi abstrak yang telah dimasukkan ke dalam sistem basis data yang telah disiapkan, dilakukan peng-index-an pada informasi abstrak-abstrak tersebut. Indexing yang digunakan di dalam pengerjaan tugas akhir ini adalah menggunakan indexing yang telah disediakan oleh sistem basis data yang digunakan yaitu menggunakan indexing Oracle9i. Indexing pada Oracle9i akan menyebabkan sebuah informasi tersebut pecah menjadi kepingan kata perkata termasuk di dalamnya penghilangan kata-kata yang dianggap tidak layak menggunakan aplikasi stopWord milik Oracle9i.
Untuk itu maka hal-hal yang harus dilakukan sebelum dilakukan indexing menggunakan Oracle9i adalah sebagai berikut :
1. Penentuan dan pembuatan preference yang akan digunakan sebagai parameter dalam proses indexing.
2. Meng-index tabel yang menyimpan data teks dari abstrak makalah Tugas Akhir.
3. Melakukan query terhadap tabel indexing untuk mendapatkan abstrak serta bobot relevansinya.
Preference yang dibutuhkan dalam pembuatan sistem adalah preference stoplist. Sedangkan untuk preference lainnya menggunakan default preference.
Preference stoplist yang dibuat diberinama ‘stoplist’. Dalam ‘stoplist’ dimasukkan stopclass ‘Number’ untuk memasukkan angka sebagai kata yang harus dibuang.
Program untuk membuat preference ‘stoplist’ adalah :
Gambar 4.6. Perintah SQL untuk membuat preference stoplist
Exec ctx_ddl.create_stoplist('stoplist','BASIC_STOPLIST');
exec ctx_ddl.add_stopclass('stoplist','NUMBERS');
exec ctx_ddl.add_stopword('stoplist', 'ada');
exec ctx_ddl.add_stopword('stoplist', 'adakala');
exec ctx_ddl.add_stopword('stoplist', 'adakalanya');
exec ctx_ddl.add_stopword('stoplist', 'adalah');
…
Setelah preference ‘stoplist’ dibuat maka dilakukan proses indexing.
Bagian perintah SQL untuk meng-index tabel yang menyimpan data abstrak adalah sebagai berikut (sebagai contoh table judul ) :
Gambar 4.7. Perintah SQL untuk create index.
OracleCallableStatement cstmt = (OracleCallableStatement) conn.prepareCall ("CREATE INDEX my_judul_idx on judul(title) INDEXTYPE IS CTXSYS.CONTEXT
parameters ('stoplist stoplist')" );
cstmt.execute();
Index yang dibuat diberi nama ‘my_judul_idx’ pada tabel judul kolom title.
Dengan menggunakan tipe index CONTEXT serta menggunakan parameter stoplist yang telah dibuat Setelah proses indexing selesai, dihasilkan beberapa tabel baru yang menyimpan hasil indexing, diantaranya adalah :
Gambar 4.8. hasil indexing pada Oracle9i DR$my_judul_idx$I
DR$my_judul_idx$K DR$my_judul_idx$N DR$my_judul_idx$R
Tulisan my_judul_idx yang terdapat di tengah kesatuan nama index di atas Menunjuk pada nama index yang dibuat. Misalnya DR$my_judul_idx$I, DR$my_judul_idx$K, DR$my_judul_idx$N, dan DR$my_judul_idx$R mengacu pada index yang sama yaitu index my_judul_idx. Token-token beserta informasi tambahannya yang merupakan hasil indexing disimpan dalam tabel yang berakhiran dengan $I.
Dalam Oracle9I Text, jika terdapat penambahan, pengurangan ataupun perubahan data pada tabel yang di-index (paragraf) setelah proses indexing, tidak akan berpengaruh pada tabel hasil indexing. Untuk memperbarui dan menyesuaikan tabel indexing dengan perubahan yang terjadi harus dilakukan proses sinkronisasi. Program untuk mensinkronisasikan tabel indexing adalah :
BEGIN
ctx_ddl.sync_index(‘my_judul_index’,’2M’);
ctx_ddl.sync_index(‘my_author_index’,’2M’);
ctx_ddl.sync_index(‘my_abs1_index’,’2M’);
ctx_ddl.sync_index(‘my_abs2_index’,’2M’);
ctx_ddl.sync_index(‘my_key1_index’,’2M’);
ctx_ddl.sync_index(‘my_key2_index’,’2M’);
END;
Gambar 4.9. PL/SQL Synchronized Index
Dari penjelasan di atas maka hasil implementasi yang nantinya dihasilkan oleh proses indexing ini adalah sebuah bentuk kata-kata adaptive dari isi abstrak yang diambil dari file abstrak. Setiap kata-kata adaptive yang di-index akan diakumulasikan dengan kata-kata adapative dari abstrak-abstrak sebelumnya.
Sehingga misalkan abstrak pertama berisi sistem pengembangan jaringan saraf tiruan dan abstrak kedua berisi sistem kendali motor untuk pengembangan sistem CRC maka hasil index akan berupa seperti tabel 4.1.
Table 4.1. Hasil implementasi dari indexing
sistem 3
pengembangan 2
jaringan 1
saraf 1
tiruan 1
kendali 1
motor 1
untuk 1
CRC 1
Dengan hasil yang ditampilkan di tabel 4.1. tersebut maka tidak akan diperoleh kepastian kata sistem yang berjumlah tiga tersebut merupakan hasil kata sistem dari abstrak pertama atau yang kedua. Maka untuk mengetahui dimanakah yang termasuk abstrak pertama atau kedua maka diperlukan sinkronisasi index seperti yang telah dijelaskan di atas.
Sinkronisasi ini nantinya akan menghasilkan perbedaan yang sangat signifikan antara abstrak pertama, kedua, dan seterusnya. Karena setiap dilakukan sinkronisasi semua hasil indexing yang terbaru akan diletakkan dibawah dari hasil indexing sebelumnya sehingga terlihat jelas antara abstrak yang terdahulu sekarang dan nantinya akan dilakukan indexing. Oleh sebab itu maka diperlukan sebuah tabel temporary untuk menampung semua bentuk indexing. Perlu dihitung sebelumnya berapa record set yang dimiliki oleh tabel temporary, hasil dari perhitungan tersebut akan menunjukkan pada record ke berapa abstrak yang baru saja dilakukan indexing dimulai sebagai record index pertama.
Kemudian tiap-tiap record set yang ada diambil dari tabel index milik Oracle kemudian dipindahkan ke dalam tabel alih index dengan asumsi setiap perpindahan tersebut juga dicatatkan pula ID_ARTIKEL untuk membedakan antara hasil indexing abstrak pertama dengan yang berikut-berikutnya. Pada saat yang bersamaan proses ini juga akan mengaktifkan preference stoplist sehingga pada saat ini juga hasil yang diperoleh pada saat dilakukan indexing adalah bentuk-bentuk kata-kata adapative yang sudah berbentuk kata dasar. Selain itu bentuk-bentuk karakter yang tidak berhubungan dengan kata-kata adapative selain yang merupakan kata-kata umum seperti misalnya bentuk karakter “(“, ”)”, “,”, dan lain sebagainya juga akan ikut tereliminasi.
Pada saat dilakukan peralihan diasumsikan yang akan diproses adalah kata-kata adaptive yang akan dicari. Sedangkan semua hal yang tidak berlaku di dalam proses ini dihilangkan dan tidak perlu digunakan di dalam proses ini.
4.3.2.3. Proses stemming abstrak
Proses stemming abstrak digunakan untuk menghilangkan bagian kata Inggris berimbuhan seperti yang telah dijelaskan pada bab 3 di atas. Implementasi
untuk stemming-nya sendiri dibutuhkan input / masukan berupa kata per kata yang di-retrieve dari index_idx. Implemetasi program dari stemming abstrak ini :
int rowCount = 0;
try {
conn.setAutoCommit(false);
stmt = conn.createStatement();
rs = stmt.executeQuery(“select * from DR$my_judul_idx$I”);
while (rs.next()) {
String stems[rowCount]=semms.Stemmer(rs.getString(1));
}
conn.commit;
rs.close();
stmt.close();
} catch (SQLException e) {
System.out.println(e);
}
Gambar 4.10. Algoritma call Stemmer
Perintah String stems[rowCount]=semms.Stemmer(rs.getString(1))
mengambil kata per kata yang terdapat di dalam table index-nya dalam hal ini contoh yang diambil adalah my_judul_idx yang notabene adalah indexing dari tabel judul. Kata yang diambil diproses berdasarkan kemampuan algoritma Porter Stemmer dan hasil dari olahan tersebut dimasukkan ke dalam array String.
Proses ini nantinya akan menghasilkan kata-kata seperti bentuk kata classes berubah menjadi class dengan asumsi semua kata yang dipanggil merupakan kata berbahasa Inggris dan juga hasil dari kata-kata yang telah dimasukkan ke dalam proses ini nantinya akan menghilangkan imbuhan pada kata tersebut. Proses ini berlangsung ketika pada saat dilakukan proses indexing, secara khusus implementasi-nya adalah ketika dilakukan indexing kata-kata tersebut dilakukan checking apakah bagian struktur yang sedang dilakukan indexing merupakan struktur yang berbahasa Inggris dengan asumsi bahwa dari ke-enam struktur yang telah diproses adalah judul, penulis, abstrak berbahasa Indonesia, abstrak berbahasa Inggris, kata kunci berbahasa Indonesia, dan kata kunci berbahasa Inggris.
Khusus untuk proses stemming hanya berlaku untuk bahasa Inggris sehingga pada aplikasi ini proses ini hanya dilakukan pada struktur abstrak
berbahasa Inggris dan kata kunci berbahasa Inggris. Sehingga jikalau ditemukan judul atau kata-kata berbahasa Inggris yang diadaptasikan pada salah satu struktur yang diasumsikan pasti berbahasa Indonesia (seperti judul, penulis, abstrak berbahasa Indonesia, dan kata kunci berbahasa Indonesia dianggap semuanya berbahasa Indonesia) maka kata-kata tersebut tidak dapat diproses lebih lanjut sebab di dalam aplikasi ini masih belum bisa diadaptasikan modul untuk dilakukan pengecekan apakah kata tersebut bahasa Inggris atau bukan.
Dalam hal ini proses seperti ini jika diterapkan pada bagian yang telah diasumsikan sebagai bagian yang pasti berbahasa Indonesia maka bentuk kata- kata di dalam bagian indexing itu akan tidak berbentuk dan itu sangat susah sekali untuk memisahkan mana yang berbahasa Indonesia atau yang berbahasa Inggris.
Adapun modul tersebut harus ditempel maka sebenarnya di dalam proses indexing Oracle juga telah menyediakan sebauh modul yang disebut dengan modul LEXER PREFERENCE.
4.3.2.4. Proses skoring abstrak
Proses skoring abstrak di sini berfungsi untuk memberikan penilaian pada tiap–tiap abstrak berdasarkan akurasi relevansinya terhadap kata yang akan dicari.
Secara umum proses penilaian ini dibagi menjadi lima proses besar yaitu : proses indexing kata yang dicari, proses generate kombinasi, proses skoring berdasarkan itemset kombinasi yang ada, proses pencarian kata dan pemberian nilai pada abstrak sesuai dengan itemset-nya.
4.3.2.4.1. Proses indexing kata yang dicari
Proses indexing pada kata yang dicari ini merupakan proses perulangan pada bagian di atas, bedanya indexing yang dilakukan bagian ini tidak menggunakan Oracle Text untuk dilakukan pengindeksan melainkan dilakukan manual dengan memisahkan kata per kata dan membuang kata-kata yang tidak perlu dan hasilnya dimasukkan ke dalam sebuah tabel yang diberi nama tabel kata_cari. Proses ini sedikit berbeda dengan indexing yang dilakukan dengan indexing pada Oracle karena tujuan dari proses ini adalah untuk memisahkan bagian kata-kata dari kumpulannya menjadi bagian sebuah bentuk kata-kata dan
setelah kata-kata tersebut dipisah kemudian tiap-tiap kata yang ada akan dibandingkan dengan kata-kata hasil indexing dari Oracle.
Pada proses ini diasumsikan bahwa semua karakter yang tidak berhubungan dengan hasil yang akan dicapai tidak akan dihilangkan demikian pula dengan kata-kata umum yang lain juga tidak akan dihilangkan. Tujuan penting dari adanya proses ini adalah memisahkan kata-kata dari kumpulannya berikut dengan karakter pendukung beserta dengan kata-kata umumnya. Nantinya diharapkan pemisahan itu akan digabungkan kembali untuk menghasilkan bentuk kumpulan data yang telah diproses. Berbeda dengan jika yang diproses tersebut adalah bagian struktur yang berbahasa Inggris, bagian ini diproses index sama dengan yang berbahasa Indonesia bagian stemming juga di-non aktifkan.
Sehingga dapat disimpulkan bahwa pada dasarnya bagian ini hanya bertujuan untuk menemukan kata-kata yang akan di cari berada di posisi mana di dalam paragraph yang tersimpan di dalam basis data. Pemecahan dilakukan dengan asumsi nantinya akan sangat memudahkan pencarian namun juga harus diingat bahwa setelah dilakukan pemecahan bagian-bagian super kecil tersebut nantinya akan digabung kembali menjadi kesatuan yang utuh. Hasil pemecahan kemudian disimpan di dalam tabel index cari. Implementasi dari proses ini adalah setiap data di dalam tipe data word diambil secara utuh, kemudian jika ditemukan karakter-karakter seperti yang telah dijelaskan pada bagian sebelumnya pencarian dihentikan terlebih dahulu kemudian asumsi berikutnya dijalankan kembali yaitu kata disimpan karakter penghenti (karakter “(“, “)”, “,”, dan lain lain) juga dimasukkan tidak termasuk karakter spasi sebagai karakter pemisah.
4.3.2.4.2. Proses generate kombinasi
Proses generate kombinasi ini didasarkan pada perhitungan kalkulus kombinasi. Sekilas tentang kombinasi, kombinasi adalah sebuah cara untuk melakukan penggabungan item-item yang dimasukkan sehingga mendapatkan pasangan kombinasi dengan menghiraukan urutan pasangan satu dengan yang lainnya. Misalkan dengan contoh di bawah ini :
Item = { 1, 2, 3 };
Output = {1, 2, 3, 12, 13, 23, 123 } Gambar 4.11. Contoh kombinasi angka
Dengan contoh di atas maka seharusnya proses seperti itu juga dapat diterapkan di dalam generate kombinasi untuk kata-kata yang dicari. Gambaran kasarnya adalah sebagai berikut :
Gambar 4.12. Contoh kombinasi kata Item = { sistem, kendali, monitor };
Output = {sistem, kendali, monitor, sistem kendali, sistem monitor, kendali monitor, sistem kendali monitor}
Dari hasil penggambaran di atas maka nantinya proses ini akan menghasilkan sejumlah gabungan kata-kata yang di-generate dan masing-masing penggabungan akan dibagi menjadi fn dengan ketentuan jumlah item yang digabung (setelah ini istilah itemset digunakan untuk mewakili ketentuan tersebut).
Untuk itemset yang berjumlah satu maka diberi kelas f1, sedangkan untuk itemset yang berjumlah dua maka diberi kelas f2, untuk itemset yang berjumlah tiga maka diberi kelas f3 (pemberian kelas tidak hanya berhenti pada kelas ketiga, n disini merupakan jumlah kata yang yang dicari).
Tujuan dari dilakukan generate kombinasi ini adalah untuk menemukan banyaknya kemungkinan kata-kata yang dicari dalam hal ini proses hanya akan berlaku bila kata-kata yang dimasukkan lebih dari 1 kata. Diasumsikan jika kata yang lebih dari 1 kata maka kemungkinan bahwa kata yang dicari semakin luas
misalkan jika kata-kata yang dimasukkan adalah sistem kendali maka kemungkinan kata-kata diatas memiliki hubungan dengan yang diinginkan oleh pengguna dengan maksud yang lebih spesifik dengan adanya kombinasi kata-kata maka penegas bahwa abstrak tersebut sesuai dengan yang dicari adalah yang paling mendekati yang diharapkan oleh pengguna karena banyaknya kata-kata yang terkandung di dalam kata pencarian muncul di dalam paragraph yang ditemukan akan dapat memberi sugesti kepada pengguna bahwa itulah yang dicari.
Proses ini dilakukan pada saat pengguna memasukkan kalimat pencari, kalimat pencari dimasukkan dan kemudian di index berdasarkan array yang telah disediakan. Pada saat dimasukkan ke dalam array kata-kata tersebut akan dilakukan proses kombinasi sehingga menemukan bentuk-bentuk kata kombinasi seperti yang digambarkan pada Gambar 4.12.
4.3.2.4.3. Proses skoring berdasarkan itemset kombinasi yang ada
Proses ini bertujuan untuk memberikan nilai pada tiap-tiap kemungkinan yang diperoleh sehingga diharapkan bahwa dengan adanya klasifikasi penilaian seperti itu maka abstrak yang dicari nantinya jika ditemukan kata-kata tersebut akan diberi nilai sesuai dengan klasifikasinya pada kemungkinan mana yang ada hubungan dengan yang dicari.
Untuk menentukan nilai dari kombinasi itemset yang ada maka digunakan rumus konfidensi yang telah dijelaskan pada Bab 3 di atas. Setiap fn yang ada dihitung konfidensinya dan diinputkan ke dalam tabel kombinasi untuk setiap itemset. Untuk perhitungannya dapat dilihat pada contoh di bawah ini :
Tabel 4.13. Perhitungan pemberian nilai
Perhitungan :
Kata yang dicari = sistem kendali monitor
IDX COMBINE f(n) NILAI
1 sistem 1 2
2 kendali 1 2
3 monitor 1 2
4 sistem kendali 2 4
5 sistem monitor 2 4
6 kendali monitor 2 4
C = n itemset x 100 % ∑ itemset
Rumus awal =
n itemset = f ( n )
∑ itemset = 50
Maka : f( 1 ) = 1 x 100 % = 2 %
50
f ( 2 ) = 2 x 100% = 4 %
50
f ( 3 ) = 3 x 100% = 6 %
50
Perhitungan di atas menghasilkan nilai-nilai yang mewakili tiap-tiap itemset yang ada, untuk setiap itemset yang berjumlah satu maka nilai yang harus diberikan ke dalam abstrak jika ditemukan kata sesuai dengan itemset tersebut adalah nilai 2% demikian pula untuk itemset yang berjumlah dua, nilai yang harus diberikan ke dalam abstrak jika ditemukan kata sesuai dengan itemset tersebut adalah nilai 4% dan untuk itemset yang berjumlah tiga, nilai yang harus diberikan ke dalam abstrak jika ditemukan kata sesuai dengan itemset tersebut adalah nilai 6%.
Proses ini dilakukan pada saat setelah ditemukan kombinasi-kombinasi yang di-generate sebelumnya. Kombinasi-kombinasi ini kemudian dihitung nilainya, dimana nilai-nilai tersebut sudah diatur sedemikian rupa sehingga nantinya tidak akan menemui kesulitan ketika benar-benar ditemukan kemungkinan tersebut di dalam abstrak yang dijadikan acuan.
4.3.2.4.4. Proses pencarian kata berdasarkan itemset yang ada.
Proses pencarian kata berdasarkan itemset yang ada dibagi menjadi dua proses besar yaitu pencarian kata dengan itemset tunggal dan pencarian kata dengan jumlah itemset lebih dari satu. Namun secara keseluruhan pencarian kata untuk itemset tunggal dan yang lebih dari satu itemset tidak memiliki metode yang
berbeda, yang berbeda adalah nilai yang akan diberikan untuk proses pertama denga proses kedua berbeda.
Proses pencarian kata untuk itemset tunggal
Proses pencarian untuk itemset tunggal pada dasarnya merupakan proses pencarian string matching biasa mengingat hanya tunggal maka untuk dilakukan proses-nya juga tidak terlalu susah dengan menggunakan algoritma string matching. Proses yang diberikan adalah sebagai berikut :
1. Untuk setiap kata yang ditemukan dan sesuai dengan itemset yang sedang dicari maka diberi status = 1.
2. Perulangan dilakukan kembali dari awal untuk itemset-itemset berikutnya 3. Perulangan hanya akan berhenti apabila semua itemset tunggal yang akan
dicari telah habis untuk dilakukan pencocokan.
4. Ketika ditemukan kata yang bersangkutan harus diberi penanda lain dalam hal ini kata yang ditemukan diubah menjadi huruf besar semua.
Secara khusus proses diatas dilakukan untuk setiap pencarian abstrak yang akan dipasangkan dengan itemset-itemset tunggal.
Pemberian nilai untuk proses ini hanya tinggal mencari jumlah kata yang ditemukan, misalkan untuk text = sistem pengembangan kendali fuzzy logic berbasis sistem mikrokontroler keluarga kendali mcs51 dan kata yang akan dicari adalah sistem kendali logic. Jika dilihat sepintas maka seharusnya hasil yang dikeluarkan adalah sebagai berikut output = SISTEM pengembangan KENDALI fuzzy LOGIC berbasis SISTEM mikrokontroler keluarga KENDALI mcs51. Dari hasil yang ditampilkan di atas ditemukan sebanyak lima buah kata sesuai dengan itemset yang dicari. Jadi nilai yang akan diberi adalah :
Nilai = 5 x 100 % = 10%
50
Pada penjelasan rumus perhitungan di atas angka lima berasal dari banyaknya kata kombinasi yang ditemukan di dalam kalimat abstrak tersebut.
Dalam hal ini kata sistem, kendali, dan logic terkandung di dalam kalimat abstrak
dengan perincian sebagai berikut kata sistem berjumlah 2 kata, kata kendali berjumlah 2 kata dan kata logic berjumlah 1 kata sehingga jika dijumlah terdapat lima kata keseluruhan. Sedangkan untuk angka 50 adalah angka untuk jumlah abstrak yang terkumpul dan nilainya adalah 10%. Nilai ini dimasukkan ke dalam tabel
Proses pencarian kata untuk itemset lebih dari satu
Proses pencarian kata untuk itemset lebih dari satu merupakan perkembangan dari proses yang satunya hanya saja yang perlu diperhatikan adalah :
1. Sebelum dilakukan proses ini maka sebelumnya harus dilakukan proses pencarian dengan itemset tunggal.
2. Inputan untuk proses ini adalah text yang telah diolah dari proses itemset tunggal.
3. Ekstrak satu persatu itemset yang dimiliki kemudian dilakukan pencocokan menggunakan algoritma Boyer-Moore.
4. Jika ditemukan maka diberi nilai sesuai dengan nilai yang telah dihitung sebelumnya.
5. Pengulangan pencarian harus dimulai dari jumlah itemset yang paling kecil kemudian dilanjutkan dengan yang besar.
Untuk pemberian nilai tidak ada yang istimewa karena memang pada dasarnya nilai awal untuk tiap-tiap itemset sudah diinisialisasikan di depan.
Setelah dilakukan pencarian maka hasil yang diperoleh ketika proses ini selesai dilaksanakan adalah kata-kata yang telah ditemukan, sehingga pemberian nilai pada abstrak-abstrak ini dihitung sama dengan pencarian pada itemset tunggal. Jadi pemberian nilai dilakukan jika ditemukan kata dengan itemset tersebut diberi nilai sesuai dengan tabel kombinasi namun jika ditemukan kata yang sama maka nilai tersebut akan diakumulasikan dengan nilai itemset yang paling terbaru. Pada saat proses pemberian nilai ini yang pertama dilakukan adalah pemberian nilai pada itemset yang memiliki suku kalimat lebih dari satu kata. Hal ini disebabkan karena kemungkinan untuk ditemukan bagian yang memiliki jumlah kata pencari hanya satu lebih banyak dibandingkan dengan kata
yang berjumlah lebih dari satu kata. Sehingga untuk menghindari permasalahan ketika terjadi akumulasi nilai akan menghasilkan nilai yang benar-benar besar melebihi angka 100% maka yang pertama dilakukan pencocokan proses adalah itemset yang memiliki nilai terbesar.
Jika perhitungan dengan hanya mencari nilai untuk kata-kata yang berjumlah lebih dari satu dilakukan dengan metode di atas akan menimbulkan masalah dimisalkan dan diasumsikan bahwa suatu ketika ditemukan kata pencarian di dalam abstrak jika diakumulasikan perhitungan nilainya ternyata lebih besar dibandingkan dengan abstrak yang memiliki itemset lebih dari satu kata. Jika benar-benar ditemukan permasalahan tersebut maka perhitungan dengan menggunakan metode di atas adalah salah sehingga diperlukan metode lainnya yang lebih baik dibandingkan metode di atas. Metode yang dimaksud adalah semua pencarian baik itu ditemukan itemset tunggal ataupun itemset yang lebih dari satu kata maka nilai yang dimasukkan semuanya diakumulasikan sehingga jika dilakukan seperti itu maka tidak akan ditemukan kasus aneh seperti yang disebutkan di atas.
4.3.2.5. Proses pencarian abstrak
Proses pencarian abstrak pada dasarnya merupakan sebuah bentuk query dengan sorting descending dan di filter sesuai dengan minimum support yang telah diinisialisasikan di awal. Hasil yang ditampilkan adalah semua artikel yang memiliki nilai diatas minimum support yang dimasukkan. Dan inputannya adalah sebuah bentuk tabel yang telah dilakukan proses sebelumnya. Proses ini dilakukan di atas web engine dengan asumsi semua pencarian dilakukan dengan memanggil semua fungsi-fungsi yang jelas-jelas berhubungan dengan pencarian. Setelah diberikan penilaian pada proses sebelumnya abstrak akan menjalani proses peralihan untuk nantinya pada proses pencarian abstrak akan lebih mudah.
Peralihan dilakukan dari tabel proses kemudian dipindahkan ke dalam tabel hasil. Hal ini dilakukan dengan harapan supaya hasil yang telah dilakukan tersebut dapat dicari dengan mudah untuk menentukan nilai-nilai berapa saja yang akan dimunculkan. Sedangkan untuk pemunculan nilainya dipakai nilai minimum support sebesar 2% saja. Hal ini dilakukan setelah dilakukan pengujian jika diberi
nilai lebih dari 2% maka abstrak-abstrak di bawah nilai tersebut tidak akan dimunculkan. Padahal nilai yang nantinya keluar juga tidak bisa memiliki perbedaan yang signifikan sehingga jika diberi nilai yang besar pula sebagai minimum support bukan merupakan langkah yang bijak.
4.4. Implementasi Antar Muka
Secara garis besar tujuan tugas akhir ini adalah dibuatnya sebuah aplikasi web search engine yang menggunakan data mining Fast Algorithm. Dengan begitu maka Tugas Akhir ini nantinya akan menghasilkan dua bentuk aplikasi yang pertama adalah bentuk software dan yang kedua adalah bentuk web.
4.4.1. Implementasi interface software
Tampilan utama dari software ini terlihat pada Gambar 4.14. Interface aplikasi terdiri dari fitur-fitur dan fasilitas-fasilitas untuk memanipulasi abstrak yang akan dimasukkan. Fasilitas yang pertama adalah terdapatnya fasilitas menu untuk navigator action pada umumnya. Menu pertama adalah import untuk membuka abstrak sekaligus dilakukan pengindeksan, stopword digunakan untuk menambah daftar list kata-kata umum yang ingin dihilangkan, dan yang terakhir stemming digunakan untuk melakukan proses stemming.
Menu StopWord Menu Open
Documents
Menu Stemming
Gambar 4.14. Tampilan utama aplikasi
Menu import digunakan untuk membuka abstrak sekaligus dilakukan proses indexing sehingga jika tombol import ditekan maka akan menghasilkan tampilan Gambar 4.15. dan Gambar 4.16. sebagai tampilan fileChooser
Gambar 4.15. Tampilan Insert Documents
Pada tampilan ini ID_ARTIKEL sebagai kunci dari segala macam bentuk operasi disini diinputkan oleh user. Untuk tombol indexing digunakan unruk
melakukan proses indexing. Sedangkan untuk tombol open digunakan untuk memilih abstrak yang akan dimasukkan, action ketika ditekan tombol ini adalah munculnya tampilan fileChooser seperti yang terlihat di Gambar 4.16.
Folder letak data yang dicari Up Level Folder Create Folder
Tombol Open Display nama file
Nama file yang dicari
Gambar 4.16. Tampilan fileChooser
Pada tampilan ini fileChooser yang dimiliki oleh class java.awt.dialog.FileDialog memiliki bentuk interface yang hamper sama dengan yang dimiliki oleh expleror tree milik sistem operasi Windows karena memang secara fungsi dan tampilan diadopsi langsung oleh Java dari explorer tree miliki Windows. Pada tampilan atas fileChooser memiliki setting judul fileChooser kemudian letak bawahnya merupakan bagian tampilan letak pointer folder saat ini.
Bentuk tampilan dari penentuan letak folder saat ini adalah seperti Gambar 4.17.
Pada tampilan dibawah ini disediakan semua list folder yang aktif saat itu, dalam hal ini yang aktif adalah semua folder di dalam drive C: D: sedangkan drive A:
adalah folder untuk floopy device dan drive E: adalah untuk ROM device.
Gambar 4.17. Tampilan pointer letak folder
Pada tampilan Gambar 4.16. selain memiliki menu pointer folder, fileChooser juga memiliki menu up level folder dan create folder, yang masing- masing letaknya tepat di sebelah kanan dari menu pointer folder. menu up level folder berfungsi untuk memudahkan pengguna untuk naik ke folder di atasnya tanpa harus membuka menu pointer folder. menu create folder berfungsi untuk memudahkan pengguna untuk membuat folder baru tanpa harus keluar dari fileChooser.
Untuk pemilihan nama file yang akan dicari disediakan sebuah list area yang memuat semua informasi tentang file-file yang berada di dalam folder tersebut. Jika salah satu list tersebut dipilih maka nama file yang dipilih akan muncul di dalam display field yang letaknya dibawahnya persis. Dan untuk membuka file yang dimaksud tombol open akan melayani permintaan tersebut.
Menu StopWord digunakan untuk menambahkan isi stopword ke dalam index yang dibuat. Dalam hal ini setiap kata yang ditambahkan akan langsung disinkronkan dengan index yang dibuat dan juga ditambahkan di dalam tabel LIST yang memuat semua informasi tentang kata-kata StopWord yang sudah dimasukkan. Tampilan menu ini dapat dilihat di Gambar 4.18.
Gambar 4.18. Tampilan Menu StopWord
Menu yang lain selain dua menu diatas adalah Menu Stemming, menu ini tidak memiliki implementasi antar muka (interface) namun tombol ini berfungsi untuk langsung melakukan sebuah action yang mengubah semua kata-kata berimbuhan berbahasa Inggris menjadi kata dasarnya saja.
Menu bar disini terdiri dari empat menu besar menu pertama adalah menu file, menu edit, menu engine, dan menu about. Menu file disini memiliki submenu connect, create table, dan yang terakhir exit. Submenu connect disini memiliki tampilan seperti yang ada pada Gambar 4.19. di bawah ini. Pada tampilan tersebut terdiri dari tiga field, yaitu field URL, yang berfungsi untuk memberikan inisialisasi awal koneksi antara Java dengan Oracle9i dalam hal ini field ini uneditable. Field kedua dan ketiga adalah field untuk diisikan nilai username dan password. Tombol connect dan cancel berfungsi untuk menjalankan aksi ataupun tidak, aksi dijalankan apabila tombol connect ditekan dan aksi dibatalkan jika tombol cancel ditekan. Selain memiliki implementasi diatas, menu ini juga memiliki status progress yang akan memunculkan tulisan “Connection established” jika koneksi berhasil, dan jika gagal akan memunculkan tulisan
“Username wrong” atau “Password wrong”, pemunculan kedua tulisan ini tergantung pada aksi apa yang gagal dilakukan.
Gambar 4.19. Tampilan menu connect
Menu bar kedua yang edit, disini menu hanya memiliki sebuah submenu yaitu delete StopWord. Sesuai dengan judulnya maka menu ini bertujuan untuk
menghapus StopWord yang sudah dimasukkan. Kata-kata yang dihilangkan akan langsung disinkronkan dengan index yang sudah dibuat namun tentu saja untuk bagian abstrak yang terlanjur tidak dapat dihapuskan secara otomatis oleh Oracle9i dan harus dihapuskan secara manual. Tampilan menu ini tidak jauh berbeda dengan menu sebelumnya yaitu menu add StopWord. Sedangkan menu yang terakhir adalah menu About.
Menu yang paling penting dalam sub bab implementasi aplikasi adalah menu engine. Menu ini hanya memiliki satu sub menu yaitu sub menu searching.
Sub menu ini akan menampilkan sebuah tampilan yang besar untuk melanjutkan action pecarian seperti yang tampak pada Gambar 4.20.
Gambar 4.20. Tampilan menu searching
Pada gambar diatas terdapat tiga field utama yaitu: field search by, field keyword, dan field display. Field search by berisi semua item yang dijadikan acuan untuk mencari dalam aplikasi ini field search by berisi enam item antara lain: item judul, item penulis, item abstrak bahasa Indonesia, item abstrak bahasa Inggris, item kata kunci bahasa Indonesia, dan item kata kunci bahasa Inggris.
Setiap item diberi nilai awal dari 0 – 5 jika tidak dipilih maka itemIndex-nya diberi nilai -1 atau yang berarti “error searching command”. Field kedua adalah field keyword, field ini berisi tentang inputan kata yang dicari. Field ini nantiny akan di-index sehingga bisa diproses lebih lanjut. Sedangkan field yang terakhir adalah field display. Field display ini nantinya akan mengeluarkan semua isi
recordset yang dimiliki oleh tabel hasil, dimana semua isi dari hasil pencarian selama ini dimasukkan dan diolah di dalam table tersebut.
4.4.2. Implementasi interface web
Tampilan di web hampir sama dengan tampilan dari aplikasinya terutama pada bagian implementasi search engine-nya. Tampilan web site-nya dapat dilihat di Gambar 4.21.
Field Keyword
Field Search By
Gambar 4.21.Tampilan web
Tampilan awal dari implementasi web ini terdiri dari dua field, yaitu field search by dan field keyword serta satu tombol submit. Pada tampilan ini semua bahan acuan dipilih dari komponen ComboBox yang merupakan komponen standar dari Macromedia Dreamweaver MX. Setiap item yang dimasukkan dianggap memiliki index sebagai pengenal pilihan. Pada saat ini isi dari list values yang dimiliki oleh ComboBox adalah sebagai berikut :
Tabel 4.1. Tabel list item ComboBox
List Item Value
Judul / Title of Articles 0 Penulis / Author of Articles 1 Abstrak Indonesia / Indonesian Abstract 2
English Abstract 3
Kata Kunci Indonesia / Indonesian Keywords 4
English Keywords 5
Ketika tombol Submit ditekan form yang ada di dalam halaman pertama akan dialihkan ke halaman berikutnya. Dalam hal ini scripting dari program pada halaman pertama ini adalah seperti yang ada dibawah ini :
<form name="form1" method="post" action="Template.jsp">
<select name="select">
<option value="0">Judul / Title of Articles</option>
<option value="1">Penulis / Author of Articles</option>
<option value="2">Abstrak / Indonesian Abstract</option>
<option value="3">English Abstracts</option>
<option value="4">Kata Kunci / Indonesian Keyword</option>
<option value="5">English Keywords</option>
</select>
<font color="536EB1">---</font>
<input name="textfield" type="text" size="35">
<font color="536EB1">-</font>
<input type="submit" name="Submit" value="Submit">
</form>
Gambar 4.22. Scripting program HTML halaman utama
Setelah program diatas dijalankan maka sistem akan memanggil halaman kedua yang diberi nama file Template.jsp. Di dalam file ini akan diproses sebagian kecil dari proses secara keseluruhan sistem yang ada. Dalam hal ini file ini akan menjalankan hanya satu kelas saja yaitu Cari.class dimana di dalamnya terdapat beberapa fungsi yang sangat perlu dalam bagian proses pencarian. Tampilan untuk halaman kedua ini dapat dilihat di Gambar 4.23.
Field Keyword Field Search By
Display Area
Gambar 4.23. Tampilan dari halaman kedua Template.jsp
Field yang dimiliki oleh halaman kedua ini masih sama dengan field pertama yaitu masing-masing masih terdapat field search by, field keyword, button Submit dan field Display Area. Perbedaan yang mencolok antara tampilan halaman pertama dengan halaman kedua adalah terletak pada field display area- nya. Di dalam field ini nantinya akan ditampilkan hasil dari pencarian yang dilakukan di dalam class Cari, dimana kelas ini merupakan bagian dari aplikasi Java yang telah dibuat pada proses sebelumnya.
Pseudo code yang dimiliki oleh halaman ini dapat diimplementasikan seperti yang tertulis di bawah ini:
<%@ page import="java.sql.*" extends="mypackage1.Cari"%>
<%
Cari find = new Cari();
find.pisahKomb(%>select[i]<%,%>textfield<%);
find.genComb();
int y = find.hitung();
find.find(i,y);
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn.setAutoCommit(false);
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from hasil order by nilai where nilai > 2.0");
while (rs.next())
{
String id = rs.getString(1);
String word = rs.getString(2);
double nilai = rs.getDouble(3);
out.println(id,word,nilai);
}
} catch (SQLException e) {
out.println(e);
} %>
Gambar 4.24. Scripting program .Jsp halaman kedua
Pada scripting di atas merupakan program .jsp yang alami sehingga tiap-
page import="java.sql.*" extends="mypackage1.Cari"%>
Perint rary
erturut-turut digunakan untuk memanggil kelas Cari dan iinisia
tiap barisnya dapat dijelaskan seperti dibawah ini, pada baris pertama terdapat perintah :
<%@
ah ini merupakan perintah .jsp untuk melakukan import dari semua lib dan package yang akan digunakan pada tampilan halaman kedua ini. Setiap program .jsp selalu dimulai dengan tanda <% dan diakhiri dengan tanda %>
sehingga jika dilihat dari baris pertama perintah .jsp dimulai dari kata page hingga ….Cari “. Perintah page import yang terdapat di atas digunakan untuk memanggil kelas-kelas apa saja yang akan digunakan tambahan kelas yang lain dilakukan dengan menambahkan tanda “,” setelah kelas sebelumnya berakhir namun perlu diingat penambahan tetap dilakukan di dalam tanda petik ganda yang dimiliki. Sedangkan perintah extends disini digunakan untuk memanggil package yang akan digunakan untuk inisialisasi kelas yang termasuk diluar sistem library yang dimiliki oleh Java.
Baris berikutnya b
d lisasikan sebagai variable dengan nama find. Seperti dengan perintah di Java pemanggilan kelas seperti ini memiliki syntax seperti dibawah ini:
[nama kelas] [nama variable] = new [nama kelas( )];
Kemudian empat baris berikutnya adalah perintah-perintah dari .jsp untuk memanggil fungsi-fungsi yang ada di dalam kelas yang dipanggil. Pada baris
ketiga tersebut diimplementasikan perintah
find.pisahKomb(%>select[i]<%,%>textfield<%), perintah ini memanggil fungsi pisahKomb(int x, String word) yang digunakan untuk memisahkan kata-kata yang dicari ke dalam tabel kombinasi dengan maksud agar nantinya diproses untuk mendapatkan itemset kombinasi kata-kata yang dicari.
Perintah selanjutnya adalah untuk memanggil fungsi genComb( ) yang digunakan untuk men-generate kombinasi kata-kata yang dicari dan dimasukkan ke dalam tabel kombinasi dan perintah ini diimplementasikan ke dalam bahasa pemrograman .jsp menjadi find.genComb(). Perintah-perintah berikutnya adalah perintah yang digunakan untuk memanggil fungsi hitung ( ), untuk menghitung ada berapa kombinasi yang muncul dan fungsi find (int x,int y), untuk menghitung nilai dari tiap-tiap abstrak. Sedangkan untuk perintah di bawahnya adalah perintah-perintah koneksi basis data dengan menggunakan pemrograman Java.