SKRIPSI SISTEM TEMU-KEMBALI INFORMASI DENGAN METODE VECTOR SPACE MODEL PADA PENCARIAN FILE DOKUMEN BERBASIS TEKS
Firnas Nadirman 04/181070/EPA/00481
DEPARTEMEN PENDIDIKAN NASIONAL UNIVERSITAS GADJAH MADA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM YOGYAKARTA 2006
SKRIPSI SISTEM TEMU-KEMBALI INFORMASI DENGAN METODE VECTOR SPACE MODEL PADA PENCARIAN FILE DOKUMEN BERBASIS TEKS
Firnas Nadirman 04/181070/EPA/00481
Sebagai salah satu syarat untuk memperoleh derajat sarjana S1 pada Program Studi Ilmu Komputer
DEPARTEMEN PENDIDIKAN NASIONAL UNIVERSITAS GADJAH MADA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM YOGYAKARTA 2006
ii
SKRIPSI INFORMATION RETRIEVAL SYSTEM WITH VECTOR SPACE MODEL METHOD AT SEARCHING TEXT DOCUMENT FILE
Firnas Nadirman 04/181070/EPA/00481
Submitted to complete Sarjana S1 degree on the Computer Science Study Program
DEPARTEMEN PENDIDIKAN NASIONAL UNIVERSITAS GADJAH MADA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM YOGYAKARTA 2006
iii
SKRIPSI SISTEM TEMU-KEMBALI INFORMASI DENGAN METODE VECTOR SPACE MODEL PADA PENCARIAN FILE DOKUMEN BERBASIS TEKS
Firnas Nadirman 04/181070/EPA/00481
Dinyatakan lulus ujian skripsi oleh tim penguji pada tanggal : 13 Januari 2006
Tim Penguji
Dosen Pembimbing
Ketua Tim Penguji
Sigit Priyanta, S.Si., M.Kom
Drs. Janoe Hendarto, M.Kom
Penguji
Penguji
Drs. Azhari, M.T.
Drs. Suprapto, M.Kom
iv
KATA PENGANTAR
Puji syukur penulis panjatkan kepada Allah SWT atas segala karunia-Nya, sehingga skripsi dengan judul “SISTEM TEMU-KEMBALI INFORMASI DENGAN METODE VECTOR SPACE MODEL PADA PENCARIAN FILE DOKUMEN BERBASIS TEKS” dapat diselesaikan. Penulis mengambil tema tentang sistem temu-kembali informasi di dalam skripsi ini karena keingintahuan penulis mengenai ilmu pencarian informasi dengan metode temu-kembali informasi. Di dalam skripsi ini juga penulis menjelaskan pengembangan sebuah sistem temu-kembali informasi yang digunakan di dalam sebuah sistem penyimpanan dokumen teks berbasis web. Penulis pertama kali mengucapkan terima kasih yang sebesar-besarnya kepada bapak Sigit Priyanta selaku dosen pembimbing yang telah membantu penulis selama bimbingan skripsi ini. Beliau juga selalu memberikan motivasi kepada penulis untuk menyelesaikan skripsi ini tepat pada waktunya. Selain beliau, penulis didalam menyelesaikan skripsi ini juga mendapat banyak sekali bantuan secara moral maupun materiil dari berbagai pihak, maka pada kesempatan ini penulis ingin mengucapkan terima kasih kepada: 1. Kedua orang tua serta adik dan kakak penulis yang tercinta, yang senantiasa memberikan dukungannya. 2. Bapak Janoe Hendarto selaku pembimbing akademik selama penulis melaksanakan studi.
v
vi
3. Bapak Ahmad Ridha atas waktunya untuk berdiskusi dengan penulis. 4. Yulia sebagai sahabat terbaik penulis yang selalu memberikan dorongan dan dukungannya selama ini. 5. Widi, Farid, Dijas, Opus, Rahmad, Medha, Tina, Yaya, Okti, Abriel dan teman-teman seangkatan sejak diploma yang selalu memberikan dukungan dan sarannya kepada penulis 6. Harry, Rere, Isam, Dankos, Fajar, Lira, Anggun, Yudith, Arif dan Adib sebagai kakak kelas penulis sejak diploma yang menjadi sumber motivasi bagi penulis. 7. Semua teman kos, khususnya Mas Cahyo yang bersedia mencarikan buku untuk membantu penulis menyelesaikan skripsi ini. 8. Rio, Tiar, Roy, Siska, Mba Datu, Mba Leli dan seluruh teman-teman seangkatan penulis yang tidak bisa disebutkan semuanya. 9. Civitas Akademik Program Studi Swadaya Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Gadjah Mada yang telah membantu dan bekerja sama dengan penulis selama masa studi. Penulis menyadari bahwa di dalam pembuatan skripsi ini masih terdapat begitu banyak kekurangan, oleh karena itu penulis memohon saran dan kritik yang membangun bagi kesempurnaan skripsi ini. Semoga skripsi ini dapat bermanfaat bagi pembacanya.
Yogyakarta, Januari 2006
DAFTAR ISI
HALAMAN PENGESAHAN................................................................................ iv KATA PENGANTAR ............................................................................................ v DAFTAR GAMBAR .............................................................................................. x DAFTAR TABEL................................................................................................ xiii INTISARI............................................................................................................. xiv ABSTRACT.......................................................................................................... xv BAB I
PENDAHULUAN ................................................................................... 1 1.1
Latar Belakang ................................................................................ 1
1.2
Rumusan Masalah ........................................................................... 3
1.3.
Batasan Masalah ............................................................................ 3
1.4.
Tujuan Penelitian ........................................................................... 4
1.5.
Manfaat Penelitian ......................................................................... 4
1.6.
Metode Penelitian .......................................................................... 4
1.7.
Sistematika Penulisan .................................................................... 5
1.8.
Tinjauan Pustaka ............................................................................ 6
BAB II LANDASAN TEORI ............................................................................... 9 2.1 Temu-kembali Informasi (Information Retrieval) .......................... 9 2.2
Pengindeksan ................................................................................ 12
2.3
Parsing .......................................................................................... 14
2.4
Inverted index................................................................................ 15
2.5 Pembobotan Istilah (Term Weighting) .......................................... 16 2.5.1
Pembobotan tf·idf.............................................................. 17
vii
viii
2.6
Vector Space Model ..................................................................... 18
2.7
Recall dan Precision ..................................................................... 20
2.8
Model Pengembangan Perangkat Lunak Waterfall....................... 21
2.9
Data Flow Diagram (DFD) .......................................................... 24
2.10 Bagan Alir (Flow Chart)............................................................... 25 2.11 Basis Data (Database) .................................................................. 26 BAB III ANALISIS DAN PERANCANGAN..................................................... 29 3.1
Analisis.......................................................................................... 29
3.2
Perancangan .................................................................................. 30 3.2.1
3.2.2
DFD Level 1...................................................................... 32 3.2.1.1
Proses 1 Mesin Indeks........................................ 33
3.2.1.2
Proses 2 Proses Cari ........................................... 34
DFD Level 2...................................................................... 35 3.2.2.1
DFD Level 2 Proses 1 Mesin Indeks.................. 35
3.2.2.1.1 Proses 1.2 Parsing........................................... 36 3.2.2.1.2 Proses 1.3 Penghilangan Stopwords................ 37 3.2.2.1.3 Proses 1.4 Penghitungan Bobot ...................... 39 3.2.2.2
DFD Level 2 Proses 2 Proses Cari..................... 42
3.2.2.2.1 Proses 2.3 Cek Frasa ....................................... 43 3.2.2.2.2 Proses 2.4 Fungsi Kesamaan........................... 45 3.2.3
Perancangan Basis Data .................................................... 47 3.2.3.1
Model Data Konseptual ..................................... 47
3.2.3.2 Model Data logik ............................................... 47
ix
3.2.3.3 3.2.4
Model Data Fisik................................................ 48
Perancangan Antarmuka ................................................... 52 3.2.4.1
Antarmuka Pengindeksan .................................. 52
3.2.4.2
Antarmuka Pencarian ......................................... 53
BAB IV IMPLEMENTASI DAN PEMBAHASAN............................................ 54 4.1
4.2
4.3
Sistem Penyimpanan Data............................................................. 55 4.1.2
Halaman Manipulasi Bagian ............................................. 57
4.1.3
Halaman Manipulasi Data................................................. 60
4.1.4
Halaman Pengguna ........................................................... 66
Modul Pengindeksan..................................................................... 68 4.2.1
Submodul Parsing dan Penghilangan Stopwords ............. 72
4.2.2
Submodul Perhitungan Variabel idf.................................. 74
Modul Pencarian ........................................................................... 77 4.3.1
Submodul Pencarian Frasa pada Query ............................ 79
4.3.2
Submodul untuk Parsing dan Penghilangan Stopwords ... 80
4.3.3
Submodul pencocokan dokumen yang memiliki frasa tepat ................................................................................... 81
4.4
Evaluasi Sistem Temu-Kembali Informasi ................................... 84 4.4.1
Evaluasi Recall dan Precision........................................... 85
BAB V KESIMPULAN DAN SARAN.............................................................. 91 5.1
Kesimpulan ................................................................................... 91
5.2
Saran.............................................................................................. 92
DAFTAR PUSTAKA ........................................................................................... 93
DAFTAR GAMBAR
Gambar 2.1 Kerangka dari sistem temu-kembali informasi sederhana (Ingwersen, 1992) ................................................................................................ 11 Gambar 2.2 Tahapan didalam pemrosesan teks (Baeza-Yates dan Ribeiro-Neto, 1999) ................................................................................................ 14 Gambar 2.3 Recall dan Precision pada contoh hasil temu-kemabali informasi (Baeza-Yates dan Ribeiro-Neto, 1999) ................................................................. 20 Gambar 2.4 Model Pengembangan Waterfall (Pressman, 2005).......................... 22 Gambar 3.1 Diagram Konteks............................................................................... 31 Gambar 3.2 Data Flow Diagram Level 1 ............................................................. 32 Gambar 3.3 Data Flow Diagram Level 2 Proses 1 Mesin Indeks......................... 35 Gambar 3.4 Bagan Alir Proses 1.2 Parsing .......................................................... 37 Gambar 3.5 Bagan Alir Proses 1.3 Penghilangan Stopwords............................... 38 Gambar 3.6 Bagan Alir Proses 1.4 Penghitungan Bobot ...................................... 40 Gambar 3.7 DFD Level 2 Proses 2 Proses Cari .................................................... 42 Gambar 3.8 Bagan Alir Proses 2.3 Cek Frasa....................................................... 44 Gambar 3.9 Bagan Alir Proses 2.4 Fungsi Kesamaan .......................................... 46 Gambar 3.10 Model Data Konseptual Sistem Penyimpanan ................................ 47 Gambar 3.11 Model Data Logik Sistem Penyimpanan......................................... 48 Gambar 3.12 Model Data Fisik Sistem Penyimpanan .......................................... 49 Gambar 3.13 Perancangan Antarmuka Pengindeksan .......................................... 52 Gambar 3.14 Perancangan Antarmuka Pencarian................................................. 53 Gambar 4.1 Antarmuka Login Sistem Penyimpanan............................................ 56
x
xi
Gambar 4.2 Antarmuka Halaman Administrasi.................................................... 57 Gambar 4.3 Antarmuka Halaman Manipulasi Bagian .......................................... 58 Gambar 4.4 Potongan Kode Program Manipulasi Bagian .................................... 60 Gambar 4.5 Antarmuka Halaman Manipulasi Data.............................................. 61 Gambar 4.6 Antarmuka Halaman Input Data ....................................................... 62 Gambar 4.7 Modul Pengubahan File dan Pengambilan Deskripsi File ................ 64 Gambar 4.8 Potongan Kode Program Manipulasi Data........................................ 66 Gambar 4.9 Antarmuka Halaman Pengguna......................................................... 66 Gambar 4.10 Antarmuka Halaman Dokumen....................................................... 67 Gambar 4.11 Antarmuka Halaman Pencarian Canggih ........................................ 68 Gambar 4.12 Kode Program modul Pengindeksan bagian pertama ..................... 71 Gambar 4.13 Kode Program Submodul Parsing dan Penghilangan Stopwords... 72 Gambar 4.14 Kode Program Modul Pengindeksan Bagian Kedua....................... 73 Gambar 4.15 Kode Program Submodul perhitungan idf ...................................... 75 Gambar 4.16 Antarmuka Halaman Pengindeksan ................................................ 76 Gambar 4.17 Kode Program Modul Pencarian ..................................................... 77 Gambar 4.18 Kode Program Submodul Pencarian Frasa pada Query .................. 79 Gambar 4.19 Kode Program Submodul Parsing dan Penghilangan Stopwords... 81 Gambar 4.20 Kode Program submodul Pencocokan Dokumen yang memiliki frasa tepat. ..................................................................................... 82 Gambar 4.21 Tampilan Antarmuka Modul Pencarian .......................................... 84 Gambar 4.22 Kurva Recall-Precision Sampel K01 .............................................. 86 Gambar 4.23 Kurva Recall-Precision Sampel K02 .............................................. 87 Gambar 4.24 Kurva Recall-Precision Sampel K03 .............................................. 87
xii
Gambar 4.25 Kurva Recall-Precision Sampel K04 .............................................. 88 Gambar 4.26 Kurva Recall-Precision Sampel K05 .............................................. 89 Gambar 4.27 Kurva Recall-Precision Sampel K06 .............................................. 89
DAFTAR TABEL
Tabel 2.1 Perbedaan sistem temu-kembali data dan sistem temu-kembali informasi (Rijsbergen, 1979) .............................................................. 10 Tabel 3.1 Contoh Posisi Pencarian Dokumen....................................................... 43 Tabel 3.2 Struktur Data Tabel t_user .................................................................... 49 Tabel 3.3 Struktur Data Tabel t_data .................................................................... 50 Tabel 3.4 Struktur Data Tabel t_bagian ................................................................ 51 Tabel 3.5 Struktur Data Tabel t_index.................................................................. 51 Tabel 3.6 Struktur Data Tabel t_term ................................................................... 51 Tabel 4.1 Daftar kata stopwords pada file stopwords.txt...................................... 70 Tabel 4.2 Deskripsi Dokumen Sampel Pengujian ................................................ 85 Tabel 4.3 Kinerja Sistem temu-kembali dengan menggunakan 6 Sampel............ 86
xiii
INTISARI SISTEM TEMU-KEMBALI INFORMASI DENGAN METODE VECTOR SPACE MODEL PADA PENCARIAN FILE DOKUMEN BERBASIS TEKS Oleh Firnas Nadirman 04/181070/EPA/00481 Seiring berkembangnya teknologi, penyimpanan dokumen dalam bentuk file semakin banyak digunakan. Selain karena mengurangi jumlah ruang penyimpanan, media penyimpanannya dalam bentuk harddisk harganya pun relatif murah. Akan tetapi, file-file tersebut akan terus bertambah setiap harinya dan untuk mencari informasi dari isi file-file tersebut akan menjadi sulit. Untuk itu dikembangkanlah metode ilmu pencarian yang dikenal dengan temu-kembali informasi (information retrieval). Metode-metode temu-kembali informasi sudah dikenal sejak lama, salah satu dari metode tersebut yang paling banyak digunakan karena kemudahan implementasinya adalah Vector Space Model (VSM). Pada metode ini dokumen hasil pencarian akan diurutkan berdasarkan bobot dari kata pencarian yang terdapat di dalam dokumen tersebut. Salah satu algoritma pembobotannya adalah algoritma tf·idf yang dipengaruhi oleh frekuensi kemunculan kata pada sebuah dokumen dan frekuensi dari dokumen yang memiliki kata tersebut. Pada metode VSM, sistem temu-kembali informasi sebelum melakukan pencarian dokumen akan memecah isi teks dari dokumen-dokumen tersebut menjadi indeks kata. Indeks ini yang akan digunakan untuk proses pencarian. Proses pembentukan indeks dari teks yang terdapat di dalam dokumen akan melalui beberapa tahapan yaitu parsing, penghilangan stopwords dan penghitungan bobot. Dan juga pada proses pencarian, query dari pengguna akan melalui proses yang hampir sama pada proses pembentukan indeks. Setelah itu akan dibentuk vektor dokumen dan vektor query untuk diolah sehingga akan mendapatkan bobot dari dokumen hasil pencarian. Dengan metode ini dapat dicari informasi dari dokumen yang disimpan secara cepat, serta dokumen dari hasil pencarian dapat diurutkan berdasarkan bobot informasinya.
xiv
ABSTRACT INFORMATION RETRIEVAL SYSTEM WITH VECTOR SPACE MODEL METHOD AT SEARCHING TEXT DOCUMENT FILE by Firnas Nadirman 04/181070/EPA/00481 Along expand the technology, depository of document in file format is more and more used. Besides, because lessening amount of depository space, [his/its] storage media in the form of harddisk of its price even also cheap relative. However, the file will be non-stoped to increase every day and to look for information from content of the file will become difficult. So Information Retrieval Method was developed for the searching technique. Method of information retrieval have been found since along past year, one of the method which is at most used because easier of implementation is Vector Space Model (VSM). At this method, document of result of searching will sort pursuant to weight from term of keywords which the documents have. One of algorithm of its weight is algorithm called tf·idf influenced by frequency of term frequency and inversed document frequency. At method VSM, information retrieval system before conducting of document search will break content of text from the document to become index term. The index will be used for the search process. Process forming make an index to from text which is there are in document will through some step that is parsing, remove the stopwords and weight calculation. And for the search process, query given from user will also through process which is much the same to at process of create index terms. Afterwards will be formed document vector and query vector to be processed so that will get weight from document for the result. With this method, document can be searched by information from the content kept quickly, and also document from the search result earn to sort pursuant to information weight.
xv
1. BAB I PENDAHULUAN
1.1
Latar Belakang Penggunaan sebuah komputer untuk menyimpan dokumen teks dalam
bentuk file sampai saat ini sudah banyak dilakukan. Setelah munculnya internet pada akhir tahun 1980 yang terkenal dengan World Wide Web (Baeza-Yates & Ribeiro-Neto, 1999) yang bertujuan untuk memberikan berita atau informasi kepada masyarakat di seluruh dunia, berbagai macam informasi dalam bentuk file semakin mudah didapatkan. Dilihat dari perkembangannya sekarang kurang lebih hampir 353 juta host (Internet Systems Consortium, 2005) di internet diakses oleh 957 juta orang di seluruh dunia (Internet World Stats, 2005) dengan menggunakan teknologi komputer sebagai media untuk penyimpanan dan pengaksesannya. Jumlah tersebut akan terus meningkat setiap tahunnya. Dari jumlah pemakaian komputer sampai saat ini membuat komputer merupakan salah satu alat yang dibutuhkan untuk mencari informasi. Dengan banyaknya jumlah informasi yang beredar saat ini menimbulkan sebuah masalah untuk melakukan pencarian informasi yang diinginkan dengan cepat dan akurat. Menurut survey di Inggris pada tahun 2001, 36% pengguna internet di Inggris menghabiskan waktu selama dua jam di internet untuk mencari informasi yang akurat, dan sisanya sudah frustasi dalam dua belas menit jika tidak menemukan informasi yang diinginkannya (Nua Internet Surveys, 2002). Sampai saat ini sudah banyak dikembangkan algoritma yang efisien untuk
1
2
pencarian data di dalam sebuah dokumen teks seperti metode pencarian find first. Namun hal itu bukan merupakan solusi yang tepat, karena pertumbuhan ukuran data yang tersimpan umumnya sangat tinggi dan jumlahnya setiap hari akan bertambah banyak. Sehingga mengakibatkan lambatnya pencarian informasi karena dilakukan satu per satu di setiap dokumen. Dari permasalahan tersebut dikembangkanlah suatu ilmu yang diberi nama temu-kembali informasi (information retrieval). Temu-kembali informasi berkaitan dengan representasi penyimpanan, struktur dan akses dari dokumendokumen yang bertujuan untuk memudahkan pencarian sebuah informasi. Representasi dari dokumen itu nantinya harus mudah diakses oleh pengguna untuk mendapatkan informasi. Akan tetapi, dilihat dari karakteristik pengguna mengenai kebutuhan informasi, untuk membuat sebuah sistem temu-kembali informasi yang cepat dan akurat tidaklah mudah. User pertama kali harus mengubah kebutuhan informasi kedalam sebuah bahasa query yang dapat di proses oleh sistem temu-kembali informasi. Salah satu caranya yaitu dengan memasukan satu atau beberapa istilah. Istilah tersebut nantinya di cocokkan dengan representasi data yang disebut indeks Indeks merupakan struktur data yang paling banyak digunakan oleh sistem temu-kembali informasi. Indeks adalah gugus kata atau konsep terpilih sebagai penunjuk ke informasi (atau dokumen) terkait. Indeks dalam berbagai bentuk, merupakan
inti
setiap
sistem
temu-kembali
informasi
modern
karena
menyediakan akses yang lebih cepat ke data dan juga mempercepat pemrosesan query (Baeza-Yates & Ribeiro-Neto, 1999). Konsep indeks ini sebelumnya sudah banyak digunakan di dalam sebuah buku untuk membantu pencarian suatu istilah.
3
Elemen dari bahasa indeks adalah istilah yang diperoleh dari teks dalam sebuah dokumen yang diuraikan (Rijsbergen, 1979). Nantinya indeks ini digunakan dalam mencari sebuah dokumen dengan menggunakan metode temu-kembali informasi. Melihat dari penggunaan indeks, penulis mencoba menggunakan konsep temu-kembali informasi yang di terapkan di dalam sebuah sistem penyimpanan dokumen teks berbasis web. Dengan menerapkan konsep temu-kembali informasi, diharapkan sistem tersebut dapat melakukan pencarian dokumen berdasarkan informasinya secara cepat. 1.2
Rumusan Masalah Permasalahan yang diambil dari penelitian ini yaitu untuk membuat suatu
sistem yang dapat mencari informasi di dalam dokumen dengan menggunakan konsep temu-kembali informasi yang diterapkan di dalam sebuah sistem penyimpanan dokumen. Selain itu, permasalahan lainnya adalah untuk melakukan pencarian
dokumen-dokumen
yang
disimpan
oleh
sistem
berdasarkan
informasinya. 1.3.
Batasan Masalah Agar penelitian lebih jelas dan lebih terarah, maka perlu diadakan
pembatasan masalah. Pada penelitian ini faktor-faktor yang mempengaruhi temukembali informasi dibatasi oleh tiga faktor saja, yaitu jenis dokumen, ukuran dokumen yang diindeks dan relevansi dari setiap dokumen yang dihasilkan pada saat pencarian dokumen. Selain itu faktor lainnya seperti stemming (pemotongan imbuhan) dan pengelompokkan kata yang berpengaruh di dalam pengindeksan dan pencarian dokumen perlu dibatasi mengingat waktu yang terbatas.
4
1.4.
Tujuan Penelitian Berdasarkan perumusan masalah tersebut di atas maka tujuan penelitian
yang ingin dicapai adalah: 1. Mengembangkan dan mengimplementasikan pengindeksan otomatis untuk membangun sistem pencarian dokumen di dalam sebuah
sistem
penyimpanan dokumen teks dengan konsep temu-kembali informasi. 2. Untuk dapat melakukan pencarian dokumen secara cepat dan akurat dengan menerapkan konsep temu-kembali informasi. 3. Mengukur keakuratan dari hasil pencarian sistem berdasarkan relevansi dokumen, dari query yang diberikan. 1.5.
Manfaat Penelitian Dengan adanya penelitian dan tulisan ini diharapkan dapat memberikan
konstribusi nyata pada pengembangan teknologi dan ilmu pengetahuan khususnya dapat bermanfaat langsung bagi IT. Dengan menerapkan konsep temu-kembali informasi pada sebuah sistem penyimpanan data diharapakan pencarian informasi dapat dilakukan lebih cepat dibandingkan dengan tidak menggunakan konsep temu-kembali informasi. Konsep dari temu-kembali informasi ini dapat diterapkan di dalam sistem penyimpanan data maupun di dalam digital library. 1.6.
Metode Penelitian Metode penelitian yang digunakan adalah:
1.
Studi Pustaka
5
Metode studi pustaka ini dilakukan dengan mengambil referensi dari buku dan jurnal dari penelitian yang berhubungan dengan konsep temu-kembali informasi 2.
Analisis dan Perancangan Sistem Sebelum membuat sebuah sistem temu-kembali informasi harus dilakukan terlebih dahulu analisis kebutuhan dari sistem tersebut. Selanjutnya dilanjutkan dengan perancangan dengan menjabarkan langkah-langkah pembuatan sistem untuk nantinya implementasi dari sistem dapat berjalan dengan baik dan sesuai dengan yang di harapkan.
3.
Implementasi Sistem Setelah mempelajari langkah-langkah pembuatan sistem temu-kembali informasi,
maka
sistem
diimplementasikan.
Implementasi
sistem
dilakukan dengan menggunakan perangkat lunak Apache 2.053, bahasa pemrograman PHP 5.0.5 dan basis data MySQL 4.0.20a. 4.
Evaluasi Sistem Evaluasi sistem dilakukan dengan mengukur kemampuan pencarian sistem temu-kembali tersebut.
1.7.
Sistematika Penulisan Untuk mempermudah dalam pembuatan dan pembahasan penelitian ini,
maka penulis menggunakan sistematika penulisan sebagai berikut: BAB I. PENDAHULUAN
6
Pada bab ini penulis akan membahas tentang latar belakang masalah, perumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, sistematika penulisan dan tinjauan pustaka. BAB II. LANDASAN TEORI Bab kedua ini bersisi teori-teori dasar yang menguraikan tentang perkembangan sistem temu-kembali informasi. BAB III. ANALISIS DAN PERANCANGAN Bab ketiga ini menjelaskan analisis dan perancangan dari sistem temukembali informasi yang dikembangkan. BAB IV. HASIL PENELITIAN DAN PEMBAHASAN Pada bab ini penulis akan membahas implementasi dari sistem temukembali informasi yang di bangun dan evaluasi dari sistem tersebut. BAB V. KESIMPULAN DAN SARAN Pada bab ini penulis mengemukakan tentang kesimpulan yang diambil mengenai pembuatan sistem temu-kembali informasi. Disamping itu penulis juga akan memberikan saran yang sekiranya dapat bermanfaat untuk penelitian selanjutnya. 1.8.
Tinjauan Pustaka Temu-kembali informasi dikembangkan sejak 25 tahun yang lalu dan
sampai saat ini banyak digunakan oleh search engine di dalam informasi di internet.
pencarian
7
Temu-kembali informasi berfokus pada proses yang terlibat di dalam representasi, media penyimpanan, mencari dan menemukan informasi yang relevan dari informasi yang diinginkan oleh user. Hal ini ditulis oleh Ingwersen (1992) di dalam buku yang berjudul Information Retrieval Interaction. Menurut Rijsbergen (1979), temu-kembali informasi berbeda dengan temu-kembali data dilihat dari kemampuan kesamaan, pengambilan kesimpulan, model, klasifikasi, bahasa query, klasifikasi query, hasil yang diinginkan, dan respon kesalahannya. Sistem temu-kembali informasi digunakan untuk mencari dokumen yang relevan. Di dalam sebuah jurnal penelitian, Mizzaro (1998) mengklasifikasikan jenis-jenis relevansi terhadap sebuah dokumen. Nantinya relevansi terhadap dokumen ini dapat digunakan untuk menganalisis dari sebuah sistem temukembali informasi. Salah satu model temu-kembali informasi yang di gunakan adalah Vector Space Model (VSM). Model ini merupakan salah satu model tradisional yang dikembangkan oleh Salton (1969). Di dalam buku berjudul Modern Information Retrieval yang ditulis oleh Baeza-Yates dan Ribeiro-Neto (1999) dinyatakan bahwa model ini sangat populer sampai saat ini karena kemudahan dan kecepatannya. Pembobotan dilakukan untuk memperoleh rangking dari dokumen hasil pencarian. Bartell et all (2002) menyatakan bahwa rangking hasil pencarian dari dokumen di dalam sistem temu-kembali informasi berbasis teks dengan model VSM dapat mengurutkan dokumen-dokumen tersebut dari yang paling relevan
8
sampai dengan yang agak relevan berdasarkan masukan kata kunci dari pengguna. Salton dan Buckley (1987) juga menyarankan penggunaan dari pembobotan indeks dalam melakukan pengurutan dokumen. Banyak penelitian yang pernah dilakukan mengenai sistem temu-kembali informasi, salah satunya adalah Implementasi Operasi Boolean Sistem Retrieval Informasi untuk Dokumen Digital (Faren, 2005). Penelitian tersebut mengenai sistem temu-kembali informasi berbasis model boolean pada pencarian informasi di dalam file berekstensi .txt.
2. BAB II LANDASAN TEORI
2.1
Temu-kembali Informasi (Information Retrieval) Temu-kembali informasi adalah aktifitas utama yang dilakukan oleh
sebuah penyedia informasi atau pusat pelayanan informasi, termasuk perpustakaan dan jenis dari layanan lainnya yang menyediakan informasi kepada masyarakat umum. Menurut sebuah ensiklopedia, temu-kembali informasi adalah seni dan ilmu dalam pencarian informasi di sekumpulan dokumen-dokumen, pencarian informasi di dokumen itu sendiri, pencarian metadata yang menjelaskan sekumpulan dokumen, atau pencarian di dalam basis data (WIKIPEDIA, 2005). Nantinya hasil akhir dari temu-kembali informasi adalah sebuah sistem yang dapat melakukan penemu-kembalian informasi atau disebut sistem temu-kembali informasi. Menurut Lancaster (1968) di dalam Rijsbergen (1979): “sebuah sistem temu-kembali informasi tidak memberitahu (yakni tidak mengubah pengetahuan) pengguna mengenai masalah yang ditanyakannya. Sistem tersebut hanya memberitahukan keberadaan (atau ketidakberadaan) dan keterangan dokumendokumen yang berhubungan dengan permintaannya”. Sistem temu-kembali informasi berbeda dengan sistem temu-kembali data. Sistem temu-kembali data tujuan utamanya untuk menentukan dokumen yang memiliki kata kunci yang sesuai dengan query yang diberikan oleh pengguna di dalam sekumpulan dokumen. Hal ini belum dapat memecahkan masalah
9
10
pengguna akan kebutuhan informasi. Sedangkan sistem temu-kembali informasi memiliki tujuan untuk menemu-kembalikan semua dokumen yang relevan berdasarkan query yang dimasukan oleh pengguna dan menemu-kembalikan dokumen tidak relevan sedikit mungkin (Baeza-Yates dan Ribeiro-Neto, 1999). Sifat pencarian sistem temu-kembali informasi berbeda dengan sistem temu-kembali data (misalnya dalam sistem manajemen basis data) dalam beberapa segi, antara lain spesifikasi query yang tidak lengkap, dan tingkat ketanggapan kesalahan yang tidak peka (Rijsbergen, 1979). Hal ini dapat dilihat pada Tabel 2.1. Tabel 2.1 Perbedaan sistem temu-kembali data dan sistem temu-kembali informasi (Rijsbergen, 1979) Data Retrieval
Information Retrieval
Matching
Exact Match
Partial (best) Match
Inference
Deduksi
Induksi
Model
Deterministik
Probabilistik
Klasifikasi
Monothetic
Polythetic
Bahasa Query
Artificial
Natural
Spesifikasi Query
Lengkap
Tidak Lengkap
Item yang diinginkan
Matching
Relevan
Respon Error
Sensitif
Tidak Sensitif
Kerangka dari sistem temu-kembali informasi sederhana terbagi menjadi dua bagian. Bagian yang pertama adalah bagian si pencari informasi atau pengguna dari sistem. Pengguna dari sistem temu-kembali informasi harus menerjemahkan informasi yang dicarinya agar dapat diproses oleh sistem dengan cara memasukan kata kunci. Kata kunci tersebut nanti di proses menjadi sebuah
11
query yang dapat dimengerti oleh komputer. Bagian yang kedua adalah bagian dari dokumen. Pada bagian ini dokumen-dokumen direpresentasikan dalam bentuk indeks. Nanti query dari pengguna akan diproses melalui fungsi kesamaan untuk membandingkan query dengan indeks dari dokumen untuk mendapatkan dokumen yang relevan. Untuk lebih jelasnya mengenai kerangka sistem temukembali informasi dapat dilihat pada Gambar 2.1.
Pencari Informasi
Dokumen
Formulasi pencarian
Pengindeksan
Query
Representasi dokumen
Fungsi Kesamaan
Daftar dari dokumen yang relevan
Gambar 2.1 Kerangka dari sistem temu-kembali informasi sederhana (Ingwersen, 1992) Perlu diingat bahwa pencarian sebuah informasi di dalam sistem temukembali informasi belum tentu mengembalikan seluruh dokumen yang relevan. Bisa hanya sebagian atau tidak sama sekali. Sistem temu-kembali informasi
12
mungkin tidak memberikan hasil apapun jika memang tidak ditemukan dokumen yang relevan. 2.2
Pengindeksan Mencari sebuah informasi yang relevan sangat tidak mungkin dapat
dilakukan oleh sebuah komputer, meskipun dilakukan oleh sebuah komputer yang memiliki spesifikasi yang canggih. Agar komputer dapat mengetahui sebuah dokumen itu relevan terhadap sebuah informasi, komputer memerlukan sebuah model yang mendeskripsikan bahwa dokumen tersebut relevan atau tidak. Salah satu caranya adalah dengan menggunakan indeks istilah. Indeks adalah bahasa yang digunakan di dalam sebuah buku konvensional untuk mencari informasi berdasarkan kata atau istilah yang mengacu ke dalam suatu halaman. Dengan menggunakan indeks si pencari informasi dapat dengan mudah menemukan informasi yang diinginkannya. Pada
sistem
temu-kembali
informasi, indeks ini nantinya yang digunakan untuk merepresentasikan informasi di dalam sebuah dokumen. Elemen dari indeks adalah istilah indeks (index term) yang didapatkan dari teks yang dipecah di dalam sebuah dokumen. Elemen lainnya adalah bobot istilah (term weighting) sebagai penentuan rangking dari kriteria relevan sebuah dokumen yang memiliki istilah yang sama. Baeza-Yates dan Ribeiro-Neto (1999) menjelaskan tentang proses pembuatan indeks dari sebuah dokumen teks atau dikenal dengan proses analisis teks (automatic teks analysis) melalui beberapa tahap:
13
a. Proses penentuan digit, tanda hubung, tanda baca dan penyeragaman dari huruf yang digunakan. b. Penyaringan kata meliputi penghilangan kata yang memiliki arti niliai paling rendah (stopwords) untuk proses penemu-kembalian. c. Penghilangan imbuhan kata, baik awalan maupun akhiran kata. Penghilangan imbuhan kata ini dikenal dengan stemming. d. Pemilihan istilah untuk menentukan kata atau stem (atau kelompok kata) yang akan digunakan sebagai elemen indeks. e. Pembentukan kategori istilah terstruktur seperti kelompok persamaan kata yang digunakan untuk perluasan dari query dasar yang diberikan oleh pengguna sistem temu-kembali informasi dengan istilah lain yang sesuai. Pengindeksan dapat dilakukan dengan dua cara yaitu manual dan otomatis. Idealnya, untuk mendapatkan indeks istilah yang sempurna sebuah pengindeksan dilakukan secara manual (konvensional). Akan tetapi, menurut Salton (1968) sistem pencarian dan analisa teks yang sepenuhnya otomatis tidak menghasilkan kinerja temu-kembali yang lebih buruk dibandingkan dengan sistem konvensional yang menggunakan pengindeksan dokumen manual dan formulasi pencarian manual. Untuk lebih jelasnya mengenai proses pengindeksan dari sebuah dokumen yang memiliki sekumpulan teks menjadi istilah dapat dilihat pada Gambar 2.2.
14
teks terstruktur
dokumen
Pengenalan struktur
struktur
teks
Aksen, spasi, dll.
teks utuh Penyaringan kata
Pengelompokan kata
Stemming
Pengindeksan manual atau otomatis Indeks Istilah
Gambar 2.2 Tahapan didalam pemrosesan teks (Baeza-Yates dan Ribeiro-Neto, 1999) 2.3
Parsing Parsing adalah proses pengenalan token (tokenizing) didalam rangkain
teks (Grossman, 2002). Di dalam pembuatan sebuah indeks istilah, dokumen dipecah-pecah menjadi unit-unit yang lebih kecil misalnya berupa kata, frasa atau kalimat. Unit tersebut biasanya disebut sebagai token. Sedangkan algoritma untuk memecahkan kumpulan kalimat atau frasa menjadi token disebut tokenizer.
15
Pemrosesan parsing sangat dipengaruhi oleh pengetahuan bahasa yang digunakan di dalam sebuah dokumen untuk menangani karakter-karakter khusus, serta untuk memberikan batasan-batasan token di dalam sebuah dokumen. Parsing akan menghasilkan daftar istilah beserta informasi tambahan seperti frekuensi kemunculan istilah di dalam sebuah dokumen dan posisi-posisi ke berapa saja istilah itu muncul di sebuah dokumen untuk digunakan pada pemrosesan selanjutnya. Namun sebelumnya, terlebih dahulu dilakukan pembuangan kata-kata yang tidak perlu (stopwords) misalnya kata-kata seperti “yang”, “hingga”, “dan”, “dengan”, dll. Penghilangan kata-kata ini dilakukan agar pencarian informasi lebih terarah karena kata-kata tersebut tidak signifikan di dalam menentukan informasi suatu dokumen. 2.4
Inverted index Inverted index adalah salah satu mekanisme untuk pengindeksan sebuah
koleksi teks yang digunakan untuk mempercepat proses pencarian. Struktur dari inverted index terdiri dari dua elemen yaitu kosakata dan posisinya di dalam sebuah dokumen (Baeza-Yates dan Ribeiro-Neto, 1999). Posisi dari sebuah istilah di dalam indeks pada sebuah buku, diterjemahkan dalam bentuk nomor halaman. Pada inverted index, setiap istilah di masukan ke dalam inverted list yang menyimpan daftar dari istilah yang menujuk ke sejumlah dokumen yang memiliki istilah tersebut. Inverted list juga kadang-kadang di sebut posting list (Witten et all, 1999).
16
Misalkan istilah T1 terdapat dalam dokumen D1, D2, dan D3 sedangkan istilah T2 terdapat dalam dokumen D1 dan D2 maka inverted index yang dihasilkan seperti berikut: T1 → D1, D2, D3 T2 → D1, D2 Penggunaan inverted index di dalam sistem temu-kembali informasi memiliki kelemahan yaitu lambat di dalam pengindeksan, tetapi cepat di dalam proses pencarian informasi. Menurut Grossman (2002), Inverted Index adalah struktur yang dioptimasi untuk proses penemukembalian sedangkan proses update hanya menjadi pertimbangan sekunder. Struktur tersebut membalik teks sehingga indeks memetakan istilah-istilah ke dokumen-dokumen (sebagaimana indeks sebuah buku yang memetakan istilah-istilah ke nomor halaman). 2.5
Pembobotan Istilah (Term Weighting) Istilah di dalam suatu indeks harus bisa membedakan kepentingan dari
sebuah dokumen pada sebuah informasi. Caranya yaitu dengan pemberian bobot kepada sebuah istilah terhadap suatu dokumen. Semakin tinggi bobot dari sebuah istilah maka semakin penting istilah tersebut dibandingkan dengan istilah lainnya di dalam sebuah dokumen. Bobot dari istilah ini dicantumkan pada inverted index untuk digunakan dalam proses penemu-kembalian dokumen. Pada saat pencarian istilah tunggal digunakan untuk mengidentifikasi dari isi sekumpulan dokumen, pembedaan harus dilakukan antar istilah tunggal berdasarkan perkiraan nilai istilah tersebut sebagai pendeskripsi sebuah dokumen.
17
Hal ini menunjukkan penggunaan dari bobot istilah yang di cantumkan pada saat proses pengidentifikasian (Salton dan Buckley, 1987). Sebagai contoh terhadap sebuah record R dinyatakan seperti: R= {Ti1, 0.2; Ti2, 0.5 ; Ti3, 0,8} Dari pernyataan tersebut dapat diambil kesimpulan bahwa istilah ketiga memiliki bobot 0.8, sedangkan istilah pertama memiliki bobot yang jauh lebih kecil yaitu sebesar 0.2. Penggunaan dari bobot istilah selain untuk membedakan kepentingan suatu istilah di dalam sebuah dokumen juga dapat digunakan untuk menggunakan pengurutan saat penemukembalian dengan susunan menurun dari bobot yang besar ke kecil sesuai dengan bobot istilah-istilah yang sama antara query dan dokumen. 2.5.1
Pembobotan tf·idf Pada model pengindeksan yang berdasarkan pada frekuensi istilah dapat
diperkirakan bahwa istilah-istilah indeks terbaik adalah istilah-istilah yang sering muncul dalam dokumen individual tetapi jarang muncul dalam keseluruhan koleksi. Sebuah penanda kepentingan jenis ini yang umum adalah perkalian (tf·idf) dengan bobot wij sebuah istilah Ti dalam dokumen Di, didefinisikan sebagai frekuensi istilah dikalikan dengan fungsi inverse document frequency. Baeza-Yates dan Ribeiro-Neto (1999), menyebutkan bahwa pembobotan (tf·idf) terdiri dari dua faktor, yaitu: 1. tf (term frequency)
18
tf adalah frekuensi kemunculan suatu istilah ki di dalam sebuah dokumen dj dibandingkan dengan frekuensi istilah kl yang sering muncul pada dokumen itu. Jika dimasukan dalam rumus matematika didapatkan:
f i, j =
freqi , j max l freql , j
2. idf (inverse document frequency) idf adalah frekuensi kemunculan suatu istilah ki di dalam seluruh dokumen. Penggunaan faktor idf didasarkan pada istilah yang muncul pada setiap dokumen tidak memberikan suatu ciri khusus untuk menentukan dokumen yang relevan dari yang tidak relevan. Jika jumlah seluruh dokumen di dalam sistem dinyatakan dengan nilai N dan jumlah dokumen yang memiliki istilah ki tersebut dinyatakan dengan ni, maka nilai idfi-nya dapat dinyatakan dengan: idf i = log
N ni
Dari dua faktor tersebut maka pembobotan tf·idf dapat dinyatakan dengan: wi , j = f i , j × log
2.6
N ni
Vector Space Model
Salah satu model matematika yang digunakan pada sistem temu-kembali informasi untuk menentukan bahwa sebuah dokumen itu relevan terhadap sebuah informasi adalah Vector Space Model (VSM). Model ini akan menghitung derajat
19
kesamaan antara setiap dokumen yang disimpan di dalam sistem dengan query yang diberikan oleh pengguna. Model ini pertama kali diperkenalkan oleh Salton (1989). Pada VSM, setiap dokumen dan query dari pengguna direpresentasikan sebagai ruang vektor berdimensi n. Biasanya digunakan nilai bobot istilah (term weigthing) sebagai nilai dari vektor pada dokumen nilai 1 untuk setiap istilah yang muncul pada vektor query. Pada model ini, bobot dari query dan dokumen dinyatakan dalam bentuk vektor, seperti: Q = (wq1, wq2, wq3, . . . ,wqt) dan Di = (wi1, wi2, wi3, . . . , wit) Dengan wqj dan wij sebagai bobot istilah Tj dalam query Q dan dokumen Di. Selanjutnya koefisien kesamaan antara query dan dokumen dapat diperoleh dengan formula inner product: t
sim(Q, Di ) = ∑ wqj ⋅ wij j =1
Namun dengan formula di atas, dokumen yang lebih panjang dengan jumlah istilah yang lebih banyak memiliki kemungkinan lebih besar untuk dianggap relevan dengan istilah-istilah query tertentu dibandingkan dokumendokumen yang lebih pendek. Sehingga pada kebanyakan lingkungan penemukembalian, vektor dokumen ternormalisasi lebih disukai namun proses normalisasi vektor query tidak diperlukan karena ukurannya yang umumnya pendek dan perbedaan panjang antar-query relatif kecil. Sehingga formula di atas digantikan dengan formula ternormalisasi:
20
t
sim(Q, Di ) =
2.7
∑w j =1
qj
⋅ wij
t
t
j =1
j =1
∑ (wij ) 2 × ∑ (wqj ) 2
Recall dan Precision
Evaluasi dari sistem temu-kembali informasi dipengaruhi oleh dua parameter utama yaitu recall dan precision. Recall adalah rasio antara dokumen relevan yang berhasil ditemukembalikan dari seluruh dokumen relevan yang ada di dalam sistem, sedangkan precision adalah rasio dokumen relevan yang berhasil ditemukembalikan dari seluruh dokumen yang berhasil ditemu-kembalikan (Grossman, 2002). Dokumen relevan yang ditemukembalikan |Ra|
Seluruh Koleksi Dokumen
Dokumen Relevan |R|
Hasil Temu-kembali |A|
Gambar 2.3 Recall dan Precision pada contoh hasil temu-kemabali informasi (Baeza-Yates dan Ribeiro-Neto, 1999)
Berdasarkan Gambar 2.3 recall dan precision dapat dinyatakan sebagai berikut:
21
Re call =
Ra R
Pr ecision =
Ra A
Dengan menggunakan nilai dari parameter recall dan precision akan dicari nilai dari average precision untuk menghitung keefektifan dan keakuratan dari algoritma sistem temu-kembali informasi. Average precision adalah suatu ukuran evaluasi sistem temu-kembali informasi yang diperoleh dengan cara menghitung rata-rata precision pada seluruh tingkat recall (Grossman, 2002). Sedangkan untuk menentukan nilai dari recall dan precision harus didapatkan jumlah dokumen yang relevan terhadap suatu topik informasi. Satusatunya cara untuk mendapatkannya yaitu dengan membaca dokumen itu satu per satu. Menurut Rijsbergen (1979) relevansi merupakan sesuatu yang sifatnya subyektif. Setiap orang mempunyai perbedaan untuk mengartikan sesuatu dokumen tersebut relevan terhadap sebuah topik informasi. Menurut Mizzaro (1998), evaluasi pada sebuah sistem temu-kembali informasi dengan menggunakan recall dan precision sudah cukup baik untuk menjadi ukuran dari sistem tersebut. 2.8
Model Pengembangan Perangkat Lunak Waterfall
Salah satu model klasik yang digunakan dalam mengembangkan sebuah perangkat lunak adalah model waterfall. Pressman (2005) menyebutkan model ini merupakan model klasik yang menyarankan sistematika pendekatan sekuensial didalam pengembangan perangkat lunak yang dimulai dari spesifikasi kebutuhan
22
dari pelanggan menuju tahap perencanaan, pemodelan, pembangunan dan pengiriman perangkat lunak tersebut, yang pada akhirnya akan kembali lagi dari awal untuk membentuk perangkat lunak yang sesuai dengan keinginan pelanggan. Komunikasi
Perencanaan
Pemodelan
Pembangunan
Pengiriman
Gambar 2.4 Model Pengembangan Waterfall (Pressman, 2005)
Dari Gambar 2.4, model pengembangan waterfall pada awalnya dimulai dari tahap komunikasi. Pada tahap ini pihak pelanggan melakukan komunikasi dengan pihak pengembang perangkat lunak mengenai masalah yang didapatkan sehingga dibutuhkan suatu solusi untuk membuat perangkat lunak didalam memecahkan masalah tersebut. Pada tahap ini kebutuhan perangkat lunak didefinisikan dan inisiasi proyek pembuatan perangkat lunak dilakukan bersamasama oleh pihak pelanggan dan pihak pengembang. Tahap perencanaan pada model ini meliputi kegiatan perencanaan pembuatan perangkat lunak. Pada kegiatan ini, estimasi waktu pembuatan perangkat lunak, penjadwalan serta kegiatan yang akan dilakukan untuk menunjang pembuatan perangkat lunak dibahas bersama-sama oleh pihak pengembang dan pelanggan.
23
Dari tahap perencanaan nantinya akan dilanjutkan ke tahap pemodelan. Pada tahap ini kegiatan utamanya yaitu analisis kebutuhan perangkat lunak yang merupakan proses pengumpulan kebutuhan yang diintensifkan dan difokuskan, khususnya pada perangkat lunak. Tujuannya yaitu untuk memahami sifat program yang akan dibangun. Perekayasa perangkat lunak harus memahami domain informasi, tingkah laku, cara kerja dan antar muka yang diperlukan. Kebutuhan baik untuk sistem maupun perangkat lunak didokumentasikan dan dilihat lagi dengan pelanggan. Selain analisis kebutuhan perangkat lunak, pada tahap ini juga meliputi kegiatan desain perangkat lunak. Pada kegiatan desain perangkat lunak dilakukan proses multi langkah yang berfokus pada empat atribut sebuah perangkat lunak yang berbeda; struktur data, arsitektur perangkat lunak, representasi interface, dan detail (algoritma) prosedural. Proses desain menerjemahkan syarat/kebutuhan ke dalam sebuah representasi perangkat lunak yang dapat diperkirakan demi kualitas sebelum
dimulai
pemunculan
kode.
Sebagaimana
persyaratan,
desain
didokumentasikan dan menjadi bagian dari konfigurasi perangkat lunak. Setelah melalui tahap perencanaan maka pengembangan perangkat lunak dilanjutkan ke tahap berikutnya, yaitu tahap pembangunan. Pada tahap ini pengembang perangkat lunak mulai melakukan implementasi yang meliputi pengenerasian kode dan pengujian perangkat lunak. Pada kegiatan implementasi hasil desain harus diterjemahkan ke dalam bentuk mesin yang bisa dibaca. Tugas ini dilakukan dengan mengikuti langkah-langkah pembuatan kode. Jika desain pada tahap sebelumnya sudah dilakukan secara lengkap, pembuatan kode dapat diselesaikan secara mekanis.
24
Kegiatan implementasi pada akhirnya akan menghasilkan perangkat lunak yang siap diuji. Proses pengujian berfokus pada logika internal perangkat lunak, memastikan bahwa semua pernyataan sudah diuji, dan pada eksternal fungsional yaitu mengarahkan pengujian untuk menemukan kesalahan-kesalahan dan memastikan bahwa input yang dibatasi akan memberikan hasil yang sesuai dengan hasil yang dibutuhkan. Tahap yang terakhir dari pengembangan perangkat lunak pada model waterfall adalah tahap pengiriman. Pada tahap ini seluruh perangkat lunak sudah selesai dan diserahkan kepada pelanggan. Akan tetapi, pada tahap ini perangkat lunak akan mengalami perubahan setelah dikirmkan kepada pelanggan. Perubahan akan terjadi karena kesalahan-kesalahan ditentukan, karena perangkat lunak harus disesuaikan untuk mengakomodasi perubahan-perubahan di dalam lingkungan eksternalnya, atau karena pelanggan membutuhkan perkembangan fungsional. Pada tahap ini kegiatan utama bagi para pengembang perangkat lunak adalah pemeliharaan. Pemeliharaan perangkat lunak mengaplikasikan lagi setiap fase program sebelumnya dan tidak membuat baru lagi. 2.9
Data Flow Diagram (DFD)
DFD merupakan diagram untuk menggambarkan aliran data di dalam sistem untuk fase analisis pada pengembangan perangkat lunak. DFD dapat digunakan untuk menyajikan sebuah sistem atau perangkat lunak pada setiap tingkat abstraksi. DFD menggunakan gambaran input-proses-output dari sistem yang akan dibuat. Pada DFD objek data akan dialirkan ke dalam perangkat lunak, lalu akan ditransformasikan pada elemen proses, dan hasilnya akan dikeluarkan dari perangkat lunak (Pressman, 2005).
25
Elemen-elemen dasar dari DFD adalah : Prosedur atau konsumer informasi yang ada di luar bound sistem untuk dimodelkan. Transfer informasi (fungsi) yang ada di dalam bound sistem untuk dimodelkan.
Objek data; anak panah menunjukkan arah aliran data. Repositori data yang disimpan untuk digunakan oleh satu atau lebih proses. Pada DFD aliran data digambarkan dalam bentuk hirarki, yaitu model DFD yang pertama (biasanya disebut DFD level 0 atau diagram konteks) merepresentasikan sistem secara keseluruhan. Bagian DFD lainnya menjelaskan dari konteks diagram tersebut, dan menyediakan secara detail proses yang digunakan pada setiap bagian level. 2.10
Bagan Alir (Flow Chart)
Bagan alir merupakan Representasi grafis yang paling luas dipakai untuk desain prosedural. Konstruksi dari bagan alir sangat sederhana. Sebuah kotak digunakan
untuk
mengindikasikan
suatu
langkah
pemrosesan.
Diamon
merepresentasikan suatu kondisi logis dan anak panah memperlihatkan aliran kontrol (Presman, 2002). Gambar 2.5 mengilurtrasikan tiga kondisi prosedural dengan menggunakan bagan alir.
26
Tugas Pertama
Kondisi
F
T
Tugas Berikutnya Bagian Else
Bagian Then
Urutan If-then-else
Tugas Loop T
F
Kondisi Case
Bagian Case
T
Kondisi Loop F Do - While Repeat - Until T
F Pemilihan
Gambar 2.5 Konstruksi Bagan Alir 2.11
Basis Data (Database)
Basis Data terdiri dari dua kata, yaitu Basis dan Data. Basis dapat diartikan sebagai markas atau gudang yaitu tempat bersarang/berkumpul. Sedangkan Data adalah representasi fakta dunia nyata yang mewakili suatu objek seperti manusia, barang, hewan, peristiwa, konsep, keadaan dan sebagainya, yang direkam dalam bentuk angka, huruf, simbol, teks, gambar, bunyi atau kombinasinya (Fathansyah, 2001). Beberapa definisi tentang basis data :
27
1. Basis data merupakan himpunan kelompok data (arsip) yang saling berhubungan yang diorganisasi sedemikian rupa agar kelak dapat dimanfaatkan kembali dengan cepat dan mudah. 2. Kumpulan data yang saling berhubungan yang disimpan secara bersama sedemikian rupa dan tanpa pengulangan (redudansi) yang tidak perlu, untuk memenuhi berbagai kebutuhan. 3. Kumpulan file/tabel/arsip yang saling berhubungan yang disimpan dalam media penyimpanan elektronis. Menurut Connoly (1998), basis data adalah koleksi dari relasi data logikal (dan deskripsi dari data ini), yang dirancang untuk mencari informasi yang dibutuhkan oleh organisasi. Sedangkan menurut C.J Date (2004), basis data adalah sebuah koleksi dari data yang tahan lama yang digunakan oleh sistem aplikasi dari perusahaan tertentu Prinsip utama basis data adalah pengaturan data/arsip. Sedangkan tujuan utamanya adalah kemudahan dan kecepatan dalam pengambilan kembali data/arsip. Satu hal yang juga harus diperhatikan, bahwa basis data bukan hanya sekedar penyimpanan data secara elektronis (dengan bantuan komputer). Artinya, tidak semua bentuk penyimpanan data secara elektronis bisa disebut basis data. Kita dapat menyimpan dokumen berisi data dalam file teks (dengan program pengolah kata), file spread sheet, dan lain-lain, tetapi tidak bisa disebut sebagai basis data karena di dalamnya tidak ada pemilihan dan pengelompokan data sesuai jenis/fungsi data, sehingga akan menyulitkan pencarian data kelak. Dalam sebuah basis data yang sangat ditonjolkan adalah pengaturan / pemilihan /
28
pengelompokkan / pengorganisasian data yang akan kita simpan sesuai dengan fungsi/jenisnya.
3. BAB III ANALISIS DAN PERANCANGAN
Pengembangan
perangkat
lunak
dengan
menggunakan
model
pengembangan waterfall meliputi beberapa tahapan. Di dalam penelitian ini, pengembangan sistem temu-kembali informasi ini hanya akan dibahas tahap pemodelan dan pembangunan perangkat lunak yang meliputi analisis, perancangan, pembuatan serta pengujian perangkat lunak. Pada bab ini akan dibahas mengenai analisis dan perancangan pengembangan sistem temu-kembali informasi, sedangkan mengenai implementasi dan pengujian sistem akan dibahas di bab selanjutnya. 3.1
Analisis
Sistem temu-kembali yang akan dibangun merupakan bagian dari sistem pencarian penyimpanan data. Akan tetapi, pada pembahasan analisis dan perancangan serta implementasi dan pengujian pada bab selanjutnya akan lebih diutamakan kepada sistem temu-kembali informasi saja. Untuk lebih jelasnya mengenai sistem penyimpanan data secara garis besar akan dijelaskan sebagai berikut : •
Sistem penyimpanan data akan menyimpan file dokumen berbasis teks yang dimasukan oleh administrator pada media penyimpanan.
•
Dokumen teks akan dikelompokkan menjadi kelompok dokumen sesuai dengan jenis/karakteristiknya. Kelompok dokumen ini selanjutnya akan
29
30
disebut “bagian”. Informasi mengenai bagian akan disimpan ke dalam basis data. •
Informasi mengenai file dokumen (nama dokumen, bagian, letak file, ukuran file, tipe file, dll) akan disimpan ke dalam basis data. Nantinya basis data ini yang akan digunakan dan diakses oleh sistem untuk menampilkan dan memberikan dokumen (informasi dokumen) kepada pengguna. Pada sistem penyimpanan nantinya akan disimpan file dokumen dengan
format word, pdf, dan excel. Pengguna yang ingin mencari file dokumen dengan informasi tertentu harus mengambil file dokumen tersebut dan membacanya satu per satu untuk mendapatkan dokumen yang cocok dengan informasi yang ingin dicari. Dengan banyaknya dokumen yang disimpan di dalam sistem penyimpanan, maka cara pencarian tersebut akan tidak efektif. Untuk itu dibutuhkan sistem pencarian yang dapat mencari informasi dari isi file dokumen yang disimpan di dalam sistem penyimpanan data. Sistem pencarian harus dapat membaca dan menganalisis isi informasi yang dimiliki oleh file dokumen yang disimpan. Sistem pencarian juga harus dapat mengurutkan hasil pencarian dokumen berdasarkan keakuratan pencarian informasi dari file dokumen untuk memudahkan pengguna dalam mencari informasi. Sistem pencarian juga harus menyesuaikan dengan struktur data dari sistem penyimpanan yang sudah dibuat. 3.2
Perancangan
Perancangan merupakan tahapan mempelajari dan mengumpulkan kebutuhan perangkat lunak. Analisis kebutuhan menyediakan representasi dari
31
informasi, modul-modul
dan fungsi yang dapat diterjemahkan ke dalam
arsitektural, antarmuka dan level desain komponen. Pada akhirnya, model analisis dan spesifikasi kebutuhan dapat menyediakan nilai/kualitas dari perangkat lunak yang akan dibangun
kepada pihak pengembang dan pelanggan. Salah satu
representasi dari modul-modul dan fungsi dari perangkat lunak menggunakan tools Data Flow Diagram. Sistem temu-kembali informasi yang akan dibangun menggunakan model ruang vektor (Vector Space Model). Proses utama yang digunakan oleh sistem temu-kembali informasi adalah indexing yang lebih lanjut akan dijelaskan pada tahap perancangan. Sistem ini nantinya akan dibagi menjadi dua bagian besar, yaitu proses indexing yang berhubungan dengan dokumen-dokumen dan proses query yang berhubungan dengan pengguna. Pengaturan indexing dokumen berbasis teks menjadi kumpulan indeks istilah akan dilakukan oleh administrator. Sedangkan proses query pengguna akan direpresentasikan melalui pengiriman kata kunci berupa teks untuk diproses menjadi query yang dapat digunakan oleh sistem ini untuk mencari informasi di dalam dokumen yang disimpan. Gambaran mengenai sistem temu-kembali informasi pada sistem penyimpanan data dapat dilihat pada Gambar 3.1.
File
User
Kata Kunci
Sistem Temukembali Informasi
Pilihan Index
Informasi Dokumen
Gambar 3.1 Diagram Konteks
Administrator
32
Dari diagaram konteks maka dapat diturunkan menjadi Data Flow Diagram (DFD) level 1. DFD adalah sebuah teknik grafis yang menggambarkan aliran data yang bergerak dari input ke output. Selain itu DFD juga menyajikan fungsi-fungsi sistem yang mengolah data input dan menghasilkan data output. Diagram alur data dapat digunakan untuk menyajikan suatu sistem perangkat lunak pada setiap tingkat abstraksi. Dari bentuk diagram konteks sistem temu-kembali informasi, maka bentuk DFD level 1 dari sistem temu-kembali informasi dapat dilihat pada Gambar 3.2. Pada Gambar 3.2 DFD level 1 dapat dilihat 2 proses utama dalam sistem temukembali informasi, yaitu proses Indexing yang diberi nama dengan mesin indeks
U ser
F ile In fo rm a s i D okum en
3 M e n a m p ilk a n In fo rm a s i D okum en
F ile D o k u m e n
K a ta K u n c i H a s il Q u e ry
F ile S to ra g e
2 P ro s e s C a ri
Q u e ry P e n c a ria n
D a ta b a s e P e n y im p a n a n d a ta In d e k s Is tila h
D okum en Teks
1 M e s in In d e k s
P ilih a n In d e x
dan proses Query yang diberi nama dengan proses cari. Gambar 3.2 Data Flow Diagram Level 1 3.2.1 DFD Level 1
Pada Gambar 3.2, DFD level 1 memiliki 3 proses yaitu : 1. Mesin Indeks
A d m in is tra to r
33
2. Proses Cari 3. Menampilkan Informasi Data Proses 1 dan 2 merupakan proses utama yang digunakan untuk sistem temu-kembali informasi, sedangkan proses 3 merupakan bagian dari sistem penyimpanan data. Proses 1 merupakan proses indexing, sedangkan proses 2 merupakan proses querying. 3.2.1.1 Proses 1 Mesin Indeks
Pada proses ini dokumen-dokumen yang sudah disimpan pada sistem akan diproses untuk dijadikan indeks istilah yang akan digunakan dalam proses cari. Salah satu input dari proses ini merupakan pilihan indeks, yaitu pilihan yang diberikan oleh administrator untuk melaksanakan indeks. Pilihan itu terdiri dari tiga macam, yaitu : 1. Seluruh dokumen, yaitu pilihan bagi administrator untuk mengindeks seluruh dokumen yang disimpan di dalam sistem. 2. Bagian, yaitu pilihan bagi administrator untuk mengindeks seluruh dokumen berdasarkan pada suatu bagian di dalam sistem. 3. Dokumen, yaitu pilihan bagi administrator untuk mengindeks satu atau lebih dokumen tertentu yang terdapat di dalam sistem. Setelah administrator memilih pilihan indeks, maka sistem akan melakukan pengindeksan berdasarkan pilihan indeks yang dipilih oleh administrator. Selanjutnya dokumen teks sebagai input yang kedua akan diproses menjadi istilah indeks serta dihitung nilai bobotnya, lalu disimpan ke dalam basis data. Proses
34
pengolahan teks menjadi indeks istilah akan melalui beberapa tahapan subproses, yaitu pengambilan dokumen teks, parsing, penghilangan stopwords dan penghitungan nilai bobot pada tiap istilah di dalam indeks. Subproses ini akan dimodelkan pada DFD level 2. Secara umum proses 1 Mesin Indeks ini bertujuan untuk membentuk informasi indeks dari koleksi dokumen sebagai input dengan melalui beberapa tahapan. 3.2.1.2 Proses 2 Proses Cari
Input pada Proses 1 Proses Cari dari entitas eksternal User adalah kata kunci. Kata kunci ini akan diproses menjadi query untuk mendapatkan dokumen sesuai dengan informasi yang ingin dicari oleh pengguna. Proses pada kata kunci untuk diubah menjadi sebuah query pada sistem temu-kembali informasi juga memiliki beberapa tahapan yang hampir sama dengan pemrosesan teks pada pengindeksan dokumen yaitu parsing, penghilangan stopwords, cek frasa serta fungsi kesamaan untuk mengurutkan dokumen dari bobotnya yang paling besar ke yang paling kecil. Tahap pencarian dokumen menggunakan fungsi kesamaan ruang vektor, yang sudah dibahas pada bab sebelumnya untuk mendapatkan kesamaan dokumen dengan query yang diberikan oleh pengguna. Setelah dilakukan query pada basis data maka hasil query akan diberikan ke Proses 3 Menampilkan Informasi Dokumen yang akan memberikan output berupa informasi dokumen dan file kepada pengguna.
35
3.2.2 DFD Level 2 3.2.2.1 DFD Level 2 Proses 1 Mesin Indeks
Pada Gambar 3.3 DFD Level 2 Proses 1 Mesin Indeks di bagi menjadi 4 sub proses. Akan tetapi proses utama pada mesin indeks ini hanya terdiri dari 3 proses utama yaitu : 1. Parsing 2. Penghilangan Stopwords 3. Penghitungan bobot Ketiga proses tersebut yang akan digunakan oleh sistem temu-kembali informasi untuk mengubah teks menjadi indeks istilah untuk digunakan dalam proses pencarian dokumen.
File Storage
Dokumen Teks
1.2 Parsing
Teks
1.1 Pengambilan Dokumen yang dipilih
Pilihan Index
Administrator
Array Kata
1.3 Penghilangan Stopwords Token
1.4 Penghitungan Bobot
Indeks Istilah
Database Penyimpanan Data
Gambar 3.3 Data Flow Diagram Level 2 Proses 1 Mesin Indeks
36
3.2.2.1.1 Proses 1.2 Parsing
Parsing merupakan proses pengenalan kata di dalam rangkaian teks. Input pada proses ini merupakan teks mentah yang masih dalam bentuk paragraf. Nanti teks ini akan diproses dengan menggunakan algoritma tokenizer untuk dipecah menjadi unit-unit yang lebih kecil misalnya berupa kata (token). Tokenizer menerima masukan berupa rangkaian karakter dan memilahnya menjadi token dengan aturan sebagai berikut: •
Suatu kata dimulai oleh huruf atau angka
•
Kata dipisahkan oleh karakter whitespace (spasi, tabulasi, baris baru, dll)
•
Karakter-karakter khusus yang mengikuti huruf atau angka dianggap bagian dari kata (misalnya tanda persen dalam 125%) namun dianggap sebagai pemisah kata jika tidak. Awal proses pada parsing adalah proses case folding yaitu membuat
semua huruf pada teks yang akan di-parsing menjadi huruf kecil, hal ini dilakukan untuk memperkecil ukuran basis data pada indeks, lalu dilanjutkan dengan pemrosesan penghilangan tanda baca. Selanjutnya akan dilakukan pemisahan teks menjadi array kata. Untuk lebih jelasnya mengenai pemrosesan parsing dapat dilihat pada bagan alir di Gambar 3.4. Keluaran yang dihasilkan adalah array kata yang akan digunakan pada pemrosesan selanjutnya.
37 Mulai
Case Folding
Penghilangan tanda baca
Pembentukan array Kata
Selesai
Gambar 3.4 Bagan Alir Proses 1.2 Parsing 3.2.2.1.2 Proses 1.3 Penghilangan Stopwords
Proses penghilangan stopwords ini berfungsi sebagai penyaring kata-kata umum yang hampir selalu ada pada dokumen dan tidak signifikan untuk dijadikan indeks suatu dokumen. Kata-kata umum ini telah didefinisikan sebelumnya sehingga pada proses ini hanya membandingkan kata yang merupakan hasil proses parsing dengan stopwords. Input pada proses 1.2 Penghilangan Stopwords (Gambar 3.5) adalah array kata hasil dari proses parsing. Algoritmanya adalah sebagai berikut : 1. Baca array kata yang didapat dari proses parsing. 2. Ambil daftar stopwords 3. Bandingkan array kata dengan daftar stopwords Jika kata termasuk ke dalam daftar stopwords, maka buang kata dari array.
38
4. Ulangi ke langkah no.3 sampai array kata paling terakhir.
Mulai
Array Kata sebuah dokumen
i=0
Daftar stopwords
Bandingkan isi array ke-i dengan daftar stopwords i=i+1
Isi array ke-I = stopwords
Ya
Hapus data array ke-i
Tidak
Pengitungan frekuensi token
Tidak
i = jumlah array
Ya
Pembuatan array Token
selesai
Gambar 3.5 Bagan Alir Proses 1.3 Penghilangan Stopwords
Hasil dari proses ini berupa array token yang berwujud dua dimensi dengan format : Array ( Array ( kata → banyaknya kata , kata → posisi kata dalam dokumen ) , kata → banyaknya kata )). Array pada dimensi yang pertama
39
berisi array yang digunakan untuk informasi masing-masing token di dalam sebuah dokumen, sedangkan array di dimensi kedua digunakan untuk mencari kata yang memiliki nilai frekuensi maksimal didalam sebuah dokumen. Array token ini nantinya akan digunakan sebagai masukan pada pemrosesan selanjutnya. 3.2.2.1.3 Proses 1.4 Penghitungan Bobot
Setelah proses penghilangan stopwords proses pengindeksan dokumen dilanjutkan dengan proses berikutnya yaitu proses penghitungan bobot. Proses 1.4 Penghitungan Bobot menggunakan array token hasil dari Proses 1.3 Penghilangan Stopwords sebagai masukannya. Token pada dimensi pertama dari hasil dari Proses 1.3 ini juga yang menjadi indeks istilah yang akan digunakan dalam proses pencarian. Dalam proses 1.4 Penghitungan bobot akan menggunakan algoritma bobot tf·idf. Terdapat 2 variabel utama yang digunakan dalam pembobotan ini, yaitu tf (term frequency) dan idf (inverse document frequency). Proses ini akan menghitung nilai dari dua variabel tersebut, sedangkan untuk nilai dari bobot akhirnya akan dilakukan pada saat pencarian dokumen. Hal ini dilakukan untuk sedikit mempercepat proses pengindeksan dokumen. Hasil akhir dari pemrosesan bobot adalah indeks istilah yang disimpan ke dalam basis data.
40
Mulai
Dokumen
i=0
Array token Dokumen ke-i
Array token ke-j dokumen ke-i sudah ada
j=0
Tidak
i=i+1
Tambah data token ke-j ke Tabel t_terms term
Ya
Penghitungan tf
j=j+1
Tambah data indeks ke tabel t_index
Tidak
i=0
Hitung idf term ke-i
Ambil term dari tabel t_term
indeks
Basis data
j= jumlah array
Ya
Tidak
i=jumlah dokumen
term
i=i+1 Update tabel t_term Tidak
i=jumlah term
Ya
Selesai
Gambar 3.6 Bagan Alir Proses 1.4 Penghitungan Bobot
41
Algoritma penghitungan variabel tf setiap kata didalam sebuah dokumen adalah sebagai berikut : 1. Ambil sebuah dokumen 2. Baca array token 3. Cek tabel t_term, jika kata belum ada di dalam basis data, maka tambahkan informasi kata ke dalam basis data. 4. Hitung nilai tf 5. Tambahkan id_data, id_term, tf dan posisi ke tabel t_index. 6. Ulangi dari nomor 2 sampai array token terakhir 7. Ulangi dari nomor 1 sampai dokumen terakhir Algoritma penghitungan variabel idf setiap kata adalah sebagai berikut : 1. Ambil kata dari tabel t_term pada basis data 2. Hitung nilai idf 3. Update tabel t_term berdasarkan kata yang diambil 4. Ulangi dari nomor 1 sampai kata terakhir di dalam basis data. Dilihat pada bagan alir proses penghitungan bobot (Gambar 3.6), perhitungan variabel idf dapat dilakukan jika seluruh dokumen sudah selesai dihitung nilai variabel tf-nya yang berarti seluruh indeks istilah sudah diinputkan ke dalam basis data. Apabila diinputkan satu dokumen baru maka penghitungan idf-nya harus dilakukan ke seluruh indeks istilah yang terdapat di dalam tabel t_term. Hal ini tidak dapat dihindari sehingga membuat proses pengindeksan dokumen memakan waktu yang cukup lama.
42
3.2.2.2 DFD Level 2 Proses 2 Proses Cari
User
Kata Kunci
2.1 Parsing
Array Kata
2.2 Penghilangan Stopwords Token Query
2.3 cek Frasa
Vektor Dokumen
2.4 Fungsi kesamaan Query Pencarian
Database Penyimpanan Data
Gambar 3.7 DFD Level 2 Proses 2 Proses Cari
Pada DFD Level 2 (Gambar 3.7), Proses 2 Proses Cari di pecah menjadi 4 buah subproses. Proses Cari ini merupakan proses pengubahan kata kunci menjadi query pencarian yang akan diproses untuk mencari dokumen berdasarkan kata kunci yang dimasukan oleh pengguna. Dua subproses awal pada proses cari sama dengan subproses pada pengindeksan dokumen yaitu parsing, penghilangan stopwordsI, cek frasa dan fungsi kesamaan. Algoritma subproses penghilangan stopwords dan parsing pada Proses Cari ini sama dengan algoritma subproses pada proses Mesin Indeks, sehingga tidak akan dijelaskan lagi.
43
3.2.2.2.1 Proses 2.3 Cek Frasa
Input dari Proses 2.3 Cek Frasa yaitu token query hasil dari Proses 2.2 Penghilangan Stopwords. Proses ini merupakan proses pencarian frasa tepat dalam dokumen. Pencarian frasa ini menggunakan posisi token yang terdapat di dalam tabel t_index. Penentuan frasa tepat yang diberikan oleh pengguna dibatasi oleh tanda kutip dua (“) di dalam kata kunci yang dimasukan oleh pengguna. Contoh : •
Seorang pengguna ingin mencari frasa tepat “kota yogya”, maka sistem pertama kali akan mencari seluruh dokumen yang memiliki kata kota dan yogya.
•
Lalu setelah sistem menemukan dokumen memiliki kata tersebut, maka sistem akan mencari dokumen yang memiliki posisi kata “kota” dan “yogya“ tepat bersebelahan dimulai dari kata “kota” dan diikuti kata “yogya”. Tabel 3.1 Contoh Posisi Pencarian Dokumen
Dokumen
Posisi kata “kota”
Posisi “yogya”
Dokumen 1
8,44,80,178
15,56,81,56
Dokumen 2
4,35,77,203,567
22,98,123
Dilihat dari Tabel 3.1 untuk pencarian kata “kota yogya” akan menghasilkan Dokumen 1 karena posisi kata “kota” bersebelahan dengan posisi kata “yogya” yaitu bernilai 80 dan 81. Dokumen 2 tidak memiliki posisi kata “kota” dan kata “yogya” yang bersebelahan, sehingga Dokumen 2 tidak akan dimasukan kedalam vektor sebagai masukan pada proses selanjutnya.
44
Mulai
Id_data id_term posisi
Match = false
Array token
i=0 j=0
letak = posisi token-j ke i
i=i+1 j=0
j=j+1
k=0 k=k+1
Tidak
letak+j = nilai posisi token-j ke-k
Tidak
k= jumlah posisi token-j
Tidak
Tidak
Ya Ya
i = jumlah posisi token ke-0
j= jumlah token
Ya
Ya
Match=true
if match = true
Ya
Tidak
Selesai
Gambar 3.8 Bagan Alir Proses 2.3 Cek Frasa
Algoritma Proses 2.3 Cek Frasa (Gambar 3.8) adalah sebagai berikut : 1. set status match=false.
Add id_data ke dalam Vektor Dokumen
45
2. Ambil data id_data, id_term dan posisi term sesuai dengan array token yang diberikan dari tabel t_index. 3. Ambil posisi dari array token 4. Jika posisi array token pertama ditambah 1 tidak sama dengan seluruh posisi array token berikutnya, maka lanjutkan nomor 3 sampai posisi sama. 5. Jika posisi array token pertama ditambah 1 sama dengan salah satu posisi array token berikutnya lanjutkan dari nomor 2 sampai array token terakhir. 6. Jika posisi array token pertama sampai terakhir telah berurut ubah status match menjadi true. 7. Jika status match = true maka masukan id_data ke dalam array vektor dokumen. 3.2.2.2.2 Proses 2.4 Fungsi Kesamaan
Setelah vektor dokumen sudah dibuat maka vektor tersebut akan dimasukan ke dalam rumus fungsi kesamaan untuk dicari nilai bobot dari masingmasing dokumen berdasarkan query pengguna agar dapat diurutkan. Fungsi kesamaan
disini
menggunakan t
sim(Q, Di ) =
∑w j =1
t
∑ (w j =1
qj
⋅ wij t
2 2 ij ) × ∑ ( wqj ) j =1
model
ruang
vektor,
dengan
rumus
:
46
Mulai
Vektor Dokumen
i=0
Array Token
j=0
Basis data
Ambil nilai tf dan idf dari t_term dan t_index berdasarkan id_data dokumen ke i dan token ke j
j=j+1
i=i+1
wij = tf·idf
atas = atas+(wij*wqj) bawah = bawah + (wij*wij) qvektor = qvektor + (wqj*wqj) Tidak
j= jumlah array
Ya Tidak Array sim
atas / sqrt(bawah*qvektor)
i= jumlah vektor dokumen
Ya Urutkan Array sim
Selesai
Gambar 3.9 Bagan Alir Proses 2.4 Fungsi Kesamaan
Algoritma dari Proses 2.4 Fungsi Kesamaan (Gambar 3.9) adalah sebagai berikut : 1. Ambil array vektor dokumen. 2. Ambil array token.
47
3. Ambil nilai tf dan idf dari tabel tbl_index dan t_term berdasarkan dokumen dan token. Hitung nilai wij=tf·idf. 4. Set atas = atas + (wij*wqj), set bawah = bawah+(wij*wij), set qvektor = qvektor + (wqj*wqj) 5. Ulangi dari nomor 2 sampai array token terakhir
6. Hitung nilai :
atas bawah × qvektor
dan simpan nilainya ke dalam array sim.
7. Ulangi dari nomor 1 sampai vektor dokumen terakhir. 8. Urutkan nilai di dalam array sim. 3.2.3
Perancangan Basis Data
3.2.3.1 Model Data Konseptual
Tahap perancangan konseptual meliputi dua kegiatan yang tidak dapat dipisahkan, yaitu perancangan skema konseptual tentang organisasi data yang harus disimpan dalam basis data, dan rancangan transaksi yang dilakukan untuk memperoleh informasi dari sistem basis data. Perancangan basis data secara konseptual dapat dilihat pada Gambar 3.10.
Administrator
1
Memasukan
n
Dokumen
1
Diindeks Menjadi
n
Dikelompokan
1
n
Term
Bagian
Gambar 3.10 Model Data Konseptual Sistem Penyimpanan 3.2.3.2 Model Data logik
48
Gambar 3.11 Model Data Logik Sistem Penyimpanan
Perancangan basis data secara logik bertujuan untuk menyusun rancangan konseptual dan skema eksternal yang sesuai dengan sistem manajemen basis data yang dipilih. Perancangan basis data secara logik dapat dilihat pada Gambar 3.11. 3.2.3.3 Model Data Fisik
Perancangan basis data secara fisik bertujuan untuk membuat spesifikasi struktur penyimpanan dan jalur akses data sehingga diperoleh kemampuan sistem yang baik untuk berbagai aplikasi. Perancangan basis data secara fisik dapat dilihat pada Gambar 3.12.
49
t_data id_data
FK1
id_bagian tanggal nama_data letak nama_file type_file ukuran_file penulis deskripsi temp_file
t_user PK
t_bagian
PK
id_user uname password guid kontrolisasi
PK
id_bagian bagian folder
t_index PK,FK1 PK,FK2
id_data id_term tf position
t_term PK
id_term term idf
Gambar 3.12 Model Data Fisik Sistem Penyimpanan
Pada basis data yang digunakan dalam Sistem Penyimpanan, terdapat lima tabel yaitu tabel t_user, t_data, t_bagian, t_index, dan t_term. Basis data untuk sistem menggunakan MySQL Versi 4.0.20a. Tabel 3.2 sampai dengan Tabel 3.6 menjelaskan deskripsi tabel yang digunakan dalam Sistem Penyimpanan. Tabel 3.2 Struktur Data Tabel t_user Nama Kolom
Tipe
Keterangan
id_user
Auto Number (Primary Key)
uname
Varchar (25)
Username untuk administrator
password
Varchar (255)
Password untuk login
guid
Varchar (32)
ID untuk session pada server
Kontrolisasi
Tinyint (1)
50
Tabel t_user (Tabel 3.2) digunakan untuk proses login pada bagian administrator, isi dari tabel ini merupakan nama user dan password serta hak akses yang dimiliki oleh administrator. Tabel 3.3 Struktur Data Tabel t_data Nama Kolom
Tipe
Keterangan
id_data
AutoNumber (Primary Key)
id_bagian
Integer (10)
tanggal
Date
nama_data
Varchar (100)
Nama dari dokumen
letak
Varchar (150)
Path file dokumen di dalam Harddisk
nama_file
Varchar (80)
Nama file dokumen sebenarnya yang dimasukan oleh administrator
type_file
Varchar (30)
Ekstension dari file dokumen
ukuran_file
Integer (16)
Ukuran dari file dokumen
penulis
Varchar (80)
Penulis dari dokumen
deskripsi
Varchar (160)
Deskripsi dari file dokumen
temp_file
Varchar (150)
Path file temporary di dalam harddisk
Sistem penyimpanan akan menyimpan informasi dari dokumen yang dimasukan oleh administrator pada tabel t_data (Tabel 3.3). Informasinya berupa nama dari data, letak path dari file dokumen pada harddisk, nama file asli dari dokumen tersebut, tipe ekstensi dari file (.doc, .pdf atau .xls), ukuran file, penulis, deskripsi dari file dan letak file temporary dari file dokumen. Sistem akan menyimpan mengelompokan dokumen kedalam kelompok dokumen yang disebut bagian, informasi dari dokumen ini akan disimpan pada tabel t_bagian (Tabel 3.4). informasi dari bagian kelompok dokumen itu adalah nama bagian dan nama folder diharddisk tempat file dokumen disimpan.
51
Tabel 3.4 Struktur Data Tabel t_bagian Nama Kolom
Tipe
Keterangan
id_bagian
AutoNumber (Primary Key)
bagian
Varchar (255)
Nama bagian
folder
Varchar (255)
Nama Folder bagian di dalam sistem
Dokumen pada sistem penyimpanan akan direlasikan kepada kata-kata indeks pada tabel t_index (Tabel 3.5). Pada tabel ini juga akan disimpan informasi dari variabel tf setiap kata yang dimiliki oleh dokumen dan seluruh posisi dari kata pada dokumen. Tabel 3.5 Struktur Data Tabel t_index Nama Kolom
Tipe
Keterangan
id_data
Integer (10) (Primary Key)
id_term
Integer (10) (Primary Key)
tf
Double
Nilai variabel tf dari suatu term pada sebuah dokumen
position
Text
Posisi term di dalam sebuah dokumen
Tabel 3.6 Struktur Data Tabel t_term Nama Kolom
Tipe
Keterangan
id_term
Auto Number (Primary Key)
term
Varchar (50)
Term suatu indeks istilah
idf
Double
Nilai variabel idf dari suatu term
52
Tabel t_term (Tabel 3.6) menyimpan informasi setiap kata hasil pemrosesan dokumen yang berupa kata term tersebut dan nilai variabel idf dari kata. 3.2.4
Perancangan Antarmuka
3.2.4.1 Antarmuka Pengindeksan
21/01/2006
Banner
Seluruh Dokumen Menu Index Seluruh Dokumen
Bagian Pilih Bagian Index Bagian
Dokumen Dokumen Dokumen Dokumen Dokumen Dokumen Dokumen Dokumen Dokumen Dokumen Dokumen
1 2 3 4 5 6 7 8 9 10
Navigasi Index Dokumen
Gambar 3.13 Perancangan Antarmuka Pengindeksan
53
Antarmuka pengindeksan (Gambar 3.13) dirancang untuk digunakan oleh administrator untuk memilih pilihan indeks. Pilihan terdiri dari tiga macam yaitu seluruh dokumen, bagian dan indeks. Sistem akan mengindeks dokumen sesuai dengan pilihan yang diberikan oleh administrator. 3.2.4.2 Antarmuka Pencarian
Antarmuka pencarian digunakan oleh pengguna sistem untuk mencari dokumen yang berisi informasi yang diinginkan. Form pencarian dapat ditemukan pada setiap halaman dari sistem pencarian data. Gambar dari antarmuka pencarian dapat dilihat pada Gambar 3.14.
30/12/2005 Form Pencarian
Banner
Search :
Menu
Hasil Pencarian
Gambar 3.14 Perancangan Antarmuka Pencarian
4. BAB IV IMPLEMENTASI DAN PEMBAHASAN
Setelah selesai melakukan tahap pemodelan, pengembangan perangkat lunak mulai memasuki tahap pembangunan yaitu kegiatan implementasi dan pengujian perangkat lunak. Pada kegiatan implementasi ini menerjemahkan hasil analisis dan perancangan perangkat lunak ke dalam bahasa mesin yang dikenal oleh komputer. Sedangkan untuk tahap pengujian kinerja sistem diperhitungkan untuk menyesuaikan dengan hasil yang diinginkan. Pada tahap implementasi dibuat dua buah modul dan lima buah submodul untuk mendukung penelitian mengenai temu-kembali informasi. Modul dan submodul tersebut adalah : •
Modul pengindeksan o Submodul
untuk
parsing
dan
penghilangan
stopwords
pada
pengindeksan o Submodul perhitungan nilai variable idf •
Modul pencarian o Submodul untuk pencarian frasa dari query o Submodul untuk parsing dan penghilangan stopwords pada query o Submodul pencocokan dokumen yang memiliki frasa tepat
Lingkungan yang dipakai dalam tahapan implementasi secara terperinci adalah sebagai berikut :
54
55
a.
Perangkat lunak yang digunakan: •
Sistem operasi
•
Bahasa Pemrograman : PHP Versi 5.0.5
•
Basis data
b.
4.1
: Microsoft Windows XP.
: MySQL Versi 4.0.20a
Perangkat keras yang digunakan : •
Processor AMD Athlon (tm) XP 1800+ 1,533 Ghz
•
Monitor 15”
•
Harddisk 80 GB
•
RAM 1 GB
•
Keyboard + Mouse
Sistem Penyimpanan Data
Untuk mendukung penelitian tentang sistem pencarian dengan metode temu-kembali informasi, maka dibuat sistem penyimpanan yang dapat menyimpan data berupa dokumen teks. Dokumen teks ini nantinya yang akan dicari oleh sistem pencarian. Dokumen teks ini akan disimpan di dalam sistem dan dikelompokan berdasarkan bagiannya. Penambahan bagian dan dokumen di dalam sistem penyimpanan data ini hanya dapat dilakukan oleh administrator sebagai pengguna yang memiliki otoritas tertinggi dan tentunya administrator ini memiliki nama user dan password untuk mengakses halaman admin di dalam sistem.
56
Gambar 4.1 Antarmuka Login Sistem Penyimpanan
Namun sebelum menambahkan bagian dan dokumen, administrator harus melakukan login ke dalam sistem dengan memasukan nama user dan password. Sistem selanjutnya akan melakukan verifikasi nama user dan password yang dimasukan oleh administrator tadi dengan cara mencari nama user dan password tersebut pada tabel t_user di dalam basis data. Antarmuka dari halaman login sistem penyimpanan dapat dilihat pada Gambar 4.1. Jika nama user dan password yang dimasukan oleh administrator terdapat di dalam basis data pengguna, maka administrator selanjutnya akan memasuki halaman administrasi. Pada halaman administrasi (Gambar 4.2), administrator dapat memilih halaman untuk memanipulasi bagian dan data serta halaman untuk melakukan pengindeksan dokumen yang terdapat di dalam sistem.
57
Gambar 4.2 Antarmuka Halaman Administrasi 4.1.2
Halaman Manipulasi Bagian
Halaman manipulasi bagian (Gambar 4.3) merupakan halaman yang berfungsi untuk menambah, mengubah dan menghapus bagian di dalam sistem. Seperti yang telah disebutkan sebelumnya, dokumen di dalam sistem penyimpanan akan disimpan menjadi kelompok-kelompok dokumen. Pada sistem ini minimal harus terdapat satu kelompok dokumen. Jika tidak, maka dokumen tidak dapat dimasukan ke dalam sistem.
58
Gambar 4.3 Antarmuka Halaman Manipulasi Bagian
Pada halaman manipulasi bagian yang dapat dilihat pada Gambar 4.3, administrator akan memasukan nama bagian ke dalam form tambah bagian.untuk menambah bagian. Nanti nama bagian ini akan dimasukan ke dalam basis data. Namun, sebelumnya akan dilakukan pemeriksaan ke dalam basis data. Jika nama bagian yang akan ditambahkan sudah ada di dalam basis data, maka sistem akan menolak nama tersebut, sebaliknya jika nama tersebut belum ada maka sistem akan memasuki proses penambahan bagian baru. Setelah nama bagian berhasil ditambahkan maka sistem akan membuat folder dari bagian tersebut pada media penyimpanan harddisk dengan format [folder home]/data/[nama bagian]. Pada folder tersebut nantinya dokumen pada suatu bagian akan diletakan. Setelah itu informasi dari nama bagian dan nama folder tersebut akan di simpan ke dalam tabel t_bagian pada basis data.
59
Untuk pengubahan nama bagian, juga akan mengubah nama folder dari bagian tersebut. Dan untuk penghapusan bagian, akan menghapus seluruh dokumen yang ada di dalam bagian serta menghilangkan folder pada mendia penyimpanan harddisk. Potongan kode program dari penambahan, pengubahan dan penghapusan bagian dapat dilihat pada Gambar 4.4. if ($action== "add"){ $bagian =$_POST['bagian']; if ($bagian==""){ $msg = "Error : Nama Bagian harus diisi !!
"; } else{ $sql = "select * from t_bagian where nama_bagian='$bagian'"; if (@mysql_num_rows(mysql_query($sql))){ $msg = "Error : Nama Bagian Sudah ada!!
"; }else { $bag = preg_replace("/\W+/i","",$bagian); if (!$bag|| strlen($bag) <=1){ $msg = "Nama Bagian salah!!
"; } else{ $folder = preg_replace("/\W+/i","",$bagian); $folder = strtolower($folder); $folder = ereg_replace(" ", "_",$folder); $dir= "data/"; $sql = "Insert into t_bagian values('','$bagian','$folder')"; if (mysql_query($sql)){ mkdir($dir.$folder); header('Location: admin_bagian.php?msg='.urlencode(":: Bagian Berhasil di tambahkan!!")); }else{ $msg = "Query Error!!
"; $id_bagian=""; } } } } } elseif($action =="edit"){ $bagian_baru = $_GET['bagian_baru']; if ($bagian_baru==""){ $msg = "Error : Nama Bagian Baru harus diisi !!
"; } else{ $sql = "select * from t_bagian where nama_bagian='$bagian_baru'"; if (@mysql_num_rows(mysql_query($sql))){ $msg = "Error : Nama Bagian Sudah ada!!
"; }else { $bag = preg_replace("/\W+/i","",$bagian_baru); if (!$bag|| strlen($bag) <=1){ $msg = "Nama Bagian Baru salah!!
"; } else{ $folder = preg_replace("/\W+/i","",$bagian_baru); $folder = strtolower($folder); $folder = ereg_replace(" ", "_",$folder); $dir= "data/"; $sql = "Update t_bagian set nama_bagian='$bagian_baru', folder='$folder' where id_bagian='$id_bagian'"; if (mysql_query($sql)){ rename($dir.$folder_lama,$dir.$folder); header('Location: admin_bagian.php?msg='.urlencode(":: Bagian Berhasil di Update!!"));
60
}else{ $msg = "Query Error!!
"; $id_bagian=""; } } } } } elseif($action == "empty"){ $sql = "select letak,temp_file from t_data where id_bagian='$id_bagian'"; $rs = mysql_query($sql); while ($row = mysql_fetch_array($rs)){ unlink($row[0]); @unlink($row[1]); } $sql = "DELETE from t_data where id_bagian='$id_bagian'"; if (mysql_query($sql)){ header('Location: admin_bagian.php?msg='.urlencode(":: Bagian Berhasil di Kosongkan!!")); }else{ $msg = "Query Error!!
"; $id_bagian=""; } } elseif($action == "delete"){ $dir = "data/"; $sql = "select letak,temp_file from t_data where id_bagian='$id_bagian'"; $rs = mysql_query($sql); while ($row = mysql_fetch_array($rs)){ unlink($row[0]); @unlink($row[1]); } $sql = "select folder from t_bagian where id_bagian='$id_bagian'"; $folder = mysql_fetch_row(mysql_query($sql)); $sql = "DELETE from t_data where id_bagian='$id_bagian'"; mysql_query($sql); $sql = "Delete from t_bagian where id_bagian='$id_bagian'"; if (mysql_query($sql)){ rmdir($dir.$folder[0]); header('Location: admin_bagian.php?msg='.urlencode(":: Bagian Berhasil di Hapus!!")); }else{ $msg = "Query Error!!
"; $id_bagian=""; } }
Gambar 4.4 Potongan Kode Program Manipulasi Bagian 4.1.3
Halaman Manipulasi Data
Setelah administrartor menambah sebuah bagian pada sistem, maka selanjutnya administrator dapat mulai menambahkan data yang berupa dokumen teks ke dalam sistem. Halaman manipulasi data (Gambar 4.5) pertama kali akan memberikan daftar dari dokumen yang disimpan di dalam sistem sesuai dengan nama bagian yang dipilih oleh administrator. Untuk menambah data baru pada bagian tersebut, maka administrator dapat menekan tombol “add” yang berada
61
pada kanan atas dari daftar dokumen. Selanjutnya, halaman input data (Gambar 4.6) akan ditampilkan kepada administrator. Pada halaman ini, sebelum administrator
memasukan
dokumen,
maka administrator minimal harus
memasukan informasi mengenai nama data, bagian serta file dari data yang akan dimasukan ke dalam sistem. Jika semua persyaratan untuk memasukan dokumen sudah terpenuhi maka sistem akan melakukan proses penambahan data ke dalam tabel t_data pada basis data..
Gambar 4.5 Antarmuka Halaman Manipulasi Data
62
Gambar 4.6 Antarmuka Halaman Input Data
Sebelum sistem melakukan penambahan data dokumen ke dalam basis data, file dari dokumen akan di-upload ke dalam sistem dan diletakan sesuai dengan folder bagian yang sudah dipilih, selanjutnya sistem akan mengubah nama file dokumen menjadi format tahun_bulan_tanggal_jam_menit_detik_[nama file yang sudah di hilangkan spasi dan diubah huruf kapitalnya]. Hal ini bertujuan agar file yang memiliki nama yang sama tetapi isinya berbeda dapat dimasukan oleh administrator ke dalam sistem. Namun nama asli dari file dokumen tersebut akan disimpan di dalam basis data untuk digunakan pada saat pengguna dari sistem ingin men-download file tersebut. Tipe file dokumen yang dapat disimpan di dalam sistem dapat terdiri dari 3 jenis yaitu file Microsoft Word, Microsoft Excel dan PDF. Akan tetapi, dokumen yang dimasukan ke dalam sistem pada penelitian ini hanya
63
menggunakan file dokumen dengan format Microsoft Word (.doc). Untuk memudahkan sistem pada saat melakukan pengindeksan, maka pada saat memasukan file dokumen juga dibuat file ascii yang dihasilkan dari file Microsoft Word yang dimasukan oleh administrator. Pembuatan file temporary ini menggunakan bantuan beberapa aplikasi tambahan yaitu: 1. Catdoc, aplikasi untuk mengubah file Microsoft Word (.doc) menjadi file ascii. Aplikasi ini dapat di-download di http://www.45.free.net/~vitus/ice/ catdoc/ 2. Xls2csv, aplikasi untuk mengubah file Microsoft Excel (.xls) menjadi file ascii. Aplikasi ini dapat di-download di http://www.45.free.net/~vitus/ ice/catdoc/ 3. Xpdf, aplikasi untuk mengubah file pdf menjadi file ascii. Aplikasi ini dapat di-download di http://www.foolabs.com/xpdf/ File temporary ini disimpan pada folder [folder home]/tmp. File temporary ini isinya hanya teks utuh yang dimiliki oleh file dokumen yang dimasukan oleh administrator. Selain berfungsi untuk digunakan pada saat pengindeksan dokumen, file temporary ini juga dapat digunakan untuk melihat isi dari dokumen kepada pengguna, sebelum pengguna men-download file asli dari dokumen ini. Sistem juga akan membuat deskripsi dari file yang dimasukan oleh administrator secara otomatis dengan cara mengambil 150 huruf pada awal dokumen. Modul untuk pengubahan file menjadi file temporary dan modul untuk mendapatkan deskripsi dari file dapat dilihat pada Gambar 4.7.
64
function getDesc($file,$type_file){ if ($type_file == "application/pdf"){ $bin = "bin/pdftotext/pdftotext.exe"; $type = "pdf"; }elseif($type_file == "application/vnd.ms-excel"){ $bin = "bin/catdoc/xls2csv.exe"; $type = "xls"; }elseif($type_file == "application/msword"){ $bin = "bin/catdoc/catdoc.exe"; $type = "doc"; } else{ $bin = ""; $desc = "Tidak terdapat deskripsi untuk file ini"; } if ($bin){ $ren = date("YmdHis_"); for ($i=1; $i<=8; $i++) { $temp_filename .= rand(1,9); } $temp_file = "tmp/".$temp_filename.".tmp"; $temp_file_save = "tmp/".$ren.$temp_filename.".tmp"; $dir = dirname($_SERVER['SCRIPT_FILENAME'])."/"; if (copy($file,$temp_file)){ $execute = $dir.$bin." ".$dir.$temp_file; if ($type == "doc" || $type == "xls"){ exec($execute,$output); for($i=0;$i <= count($output)-1 ;$i++){ $arrdesc.=$output[$i]."\n"; } if ($type =="xls"){ $arrdesc = ereg_replace(";"," ",$arrdesc); $arrdesc = ereg_replace("\""," ",$arrdesc); } $berkas=fopen($temp_file_save,"w"); fputs($berkas,$arrdesc); fclose($berkas); } elseif ($type == "pdf"){ exec($execute); $temp_file2 = $temp_file.".txt"; if (file_exists($temp_file2)){ $arrdesc = getFile($temp_file2); copy($temp_file2,$temp_file_save); unlink($temp_file2); } else{ $desc = "Deskripsi file tidak ada."; } } if ($arrdesc){ $desc = preg_replace("/\n/"," ",$arrdesc); $desc = preg_replace("/\s+/"," ",$desc); $desc = preg_replace("/\s+[\d+\W*]*\s+/"," ",$desc); $desc = substr($desc,0,150)."..."; } } unlink($temp_file); } return array($desc,$temp_file_save); }
Gambar 4.7 Modul Pengubahan File dan Pengambilan Deskripsi File
Selanjutnya sistem akan menyimpan seluruh informasi yang telah dibuat oleh sistem dari sebuah file dokumen tersebut ke dalam basis data. Potongan kode program dari manipulasi data dapat dilihat pada Gambar 4.8.
65
if ($action== "add"){ if(!$nama_data || !$upload_file || !$id_bagian){ $msg = "Yang bertanda <strong>* tidak boleh kosong!!"; $state = "add"; } else{ $ren = date("YmdHis"); $date = date ("Y-m-d"); $dir = "data/"; $nama_file = $upload_file['name']; $nama_file_baru =$ren.strtolower(ereg_replace(" ","_",$nama_file)); $folder = getData("folder","t_bagian","id_bagian='".$id_bagian."'"). "/"; $letak = $dir.$folder.$nama_file_baru; $type_file = $upload_file['type']; $ukuran_file = $upload_file['size']; if (@copy($upload_file['tmp_name'],$letak)){ $desc = getDesc($letak,$type_file); $sql = "insert into t_data values('','$id_bagian', '$date', '$nama_data', '$letak', '$nama_file', '$type_file', '$ukuran_file', '$penulis', '".addslashes($desc[0])."', '".$desc[1]."')"; if(mysql_query($sql)){ $msg = ":: File berhasil di add!!"; header('Location: admin_data.php?id_bagian='.$id_bagian. '&msg='.urlencode($msg)); }else{ $msg = "Query Error!!"; $state= "add"; } }else{ $msg = "File gagal di Upload!!"; $state= "add"; } } } elseif($action =="edit"){ if(!$nama_data || !$id_bagian){ $msg = "Yang bertanda <strong>* tidak boleh kosong!!"; $state = "edit"; } else{ $date = date ("Y-m-d"); if ($upload_file){ $filelama = getData("letak","t_data","id_data='$id_data'"); $temp_filelama = getData("temp_file", "t_data", "id_data= '$id_data'"); unlink($filelama); @unlink($temp_filelama); $ren = date("YmdHis"); $dir = "data/"; $nama_file = $upload_file['name']; $nama_file_baru = $ren.strtolower(ereg_replace(" ", "_", $nama_file)); $folder = getData("folder", "t_bagian", "id_bagian= '".$id_bagian. "'")."/"; $letak = $dir.$folder.$nama_file_baru; $type_file = $upload_file['type']; $ukuran_file = $upload_file['size']; if (copy($upload_file['tmp_name'],$letak)){ $desc = getDesc($letak,$type_file); $sqlplus = "letak='$letak', nama_file='$nama_file', type_file='$type_file', ukuran_file='$ukuran_file', deskripsi='".$desc[0]."', temp_file='".$desc[1]."',"; } }
66
$sql = "Update t_data set id_bagian='$id_bagian’, nama_data= '$nama_data', tanggal='$date',$sqlplus penulis='$penulis' where id_data='$id_data'"; if(mysql_query($sql)){ $msg = ":: File berhasil di edit!"; header('Location: admin_data.php?id_bagian=' .$id_bagian. '&msg=' .urlencode($msg)); }else{ $msg = "Query Error!!"; $state= "edit"; } } } elseif($action == "delete"){ $filelama = getData("letak","t_data","id_data='$id_data'"); $temp_filelama = getData("temp_file","t_data","id_data='$id_data'"); unlink($filelama); @unlink($temp_filelama); $sql = "delete from t_data where id_data='$id_data'"; if(mysql_query($sql)){ $msg ='Data berhasil di Hapus !!'; $sql = "delete from t_index where id_data='$id_data'"; header('Location: admin_data.php?id_bagian=' .$id_bagian. '&msg=' .urlencode($msg)); } }
Gambar 4.8 Potongan Kode Program Manipulasi Data 4.1.4
Halaman Pengguna
Gambar 4.9 Antarmuka Halaman Pengguna
67
Halaman pengguna pada sistem pencarian dapat dilihat pada Gambar 4.9. Pada palaman ini, pengguna pertama kali diharuskan untuk memilih bagian dari dokumen. Setelah pengguna memilih bagian, maka pengguna dapat melihat dokumen yang terdapat di dalam bagian tersebut beserta seluruh informasi yang dimiliki oleh dokumen. Pengguna dapat melihat tanggal dari pengubahan dokumen ini, nama file serta ukuran dari file. Di setiap dokumen yang ditampilkan terdapat dua link, yang pertama berfungsi untuk men-download file dari dokumen dan yang kedua berfungsi untuk melihat isi dari dokumen tersebut. Gambar dari halaman dokumen dapat dilihat pada Gambar 4.10.
Gambar 4.10 Antarmuka Halaman Dokumen
Di setiap halaman yang dapat diakses oleh pengguna, terdapat sebuah form yang berfungsi untuk mencari dokumen yang memiliki suatu informasi tertentu dengan memasukan kata kunci ke dalam form. Form ini terletak pada bagian
68
kanan atas pada setiap halaman yang dilihat oleh pengguna. Selain itu pengguna juga dapat mencari informasi dari dokumen dengan fasilitas pencarian canggih. Pada fasilitas pencarian canggih (Gambar 4.11), pengguna dapat mencari dokumen secara spesifik dengan memasukan kata kunci yang berupa kata dan kata tepat, penulis, serta bagian tertentu dari dokumen yang akan dicari.
Gambar 4.11 Antarmuka Halaman Pencarian Canggih 4.2
Modul Pengindeksan
File dari modul pengindeksan diberi nama dengan nama tokenize.php dan digunakan hanya pada saat sistem temu-kembali melakukan pengindeksan dokumen. Di dalam modul ini akan dilakukan parsing dan penghilangan stopwords dari dokumen-dokumen yang akan diindeks dilanjutkan dengan penghitungan nilai variabel tf dan idf. Hasil dari pengindeksan akan disimpan ke dalam basis data yang akan digunakan pada saat pencarian dokumen.
69
Modul yang digunakan pada saat pengindeksan ada dua buah, yaitu modul untuk parsing dan penghilangan stopwords serta modul perhitungan variabel idf. Dokumen yang diindeks diambil dari media penyimpanan sesuai dengan pilihan yang diberikan oleh administrator. Namun sebelum itu, untuk mengetahui letak dokumen di media penyimpanan maka terlebih dahulu akan dilakukan pengambilan informasi dokumen dari tabel t_data pada basis data. Awal dari modul pengindeksan adalah pendefinisian lamanya waktu indeks yang akan digunakan. Hal ini dimaksud agar waktu batas maksimum eksekusi file php yang sudah di set pada server web disesuaikan dengan lamanya waktu eksekusi pengindeksan dokumen. Perlu diingat pembuatan indeks sekumpulan dokumen dapat memakan waktu berjam-jam bahkan mungkin berhari-hari tergantung dari jumlah kata yang terdapat pada seluruh dokumen. Pada penelitian ini, untuk menghindari agar server web tidak menghetikan proses pengindeksan sebelum semua dokumen selesai diindeks maka batas maksimum waktu pengindeksan akan diatur menjadi 86400 detik yaitu selama satu hari penuh. Setelah mengatur batas waktu maksimum maka dilakukan pengambilan daftar kata stopwords yang disimpan didalam sebuah file bernama stopwords.txt di dalam media penyimpanan. Isi dari daftar kata-kata stopwords yang disimpan di dalam file txt tersebut dapat dilihat pada Tabel 4.1
70
Tabel 4.1 Daftar kata stopwords pada file stopwords.txt Stopwords menunjukkan menurut mereka merupakan meski meskipun misalnya mungkin namun nanti nyaris oleh pada
ada adalah adanya adapun aduh agar ah akan aku alih-alih anda andai antar
biasanya bila bilamana buat bukan dalam dan dapat dari daripada dekat demi demikian
kalau kalian kami kamu karena kata katanya kau ke kebanyakan kecuali kemanakah kemudian
antara apa apakah apalagi asalkan atas atau ataupun Bagai bagaikan bagaimana bagaimanakah bagaimanapun bagi bahkan bahwa balik banyak barangkali bawah beberapa begini begitu belakang belum berapa berbagai bersama beserta betapa biar
dengan depan di dia dikatakan dilakukan dkk dll dsb engkau hal hampir hanya harus hingga ia ialah ini itu iya jadi jangan jarang jauh jika jikalau juga jumlah justru kadang kadang-kadang
kenapa kenapakah kepada ketika ketimbang kini kita lagi lain lain-lain lainnya lalu lebih lepas lewat maka makin manakala masih masing-masing masing-masingnya maupun melainkan melakukan melalui memang mengatakan mengenai menjadi menjelang menuju
padahal para pasti pelbagai per peri perihal pinggir pula pun saat saja sambil sampai samping sang sangat sangatlah saya seakan seakan-akan seantero sebab sebabnya sebagai sebagaimana sebagainya sebelum sebelumnya sebuah secara
sedang sedangkan sedikit segera sehabis sehingga sehubungan sejak sejumlah sekarang sekeliling seketika sekitar sekonyongkonyong selagi selain selalu selama selanjutnya selesai seluruh seluruhnya semakin semenjak sementara semua semuanya seorang sepanjang seperti sepertinya seputar seraya sering seringkali serta sesuai sesuatu sesudah sesudahnya sesungguhnya setelah seterusnya setiap
seusai sewaktu si siapa siapakah siapapun suatu sudah supaya tak tanpa tapi tatkala telah tengah tentang tentu tentunya tergolong terhadap terjadi terkadang terlalu terlebih termasuk ternyata tersebut tertentu tetap tetapi tiap tiba-tiba tidak ujar ujarnya umumnya untuk walau walaupun ya yaitu yakni yang
71
Kata-kata yang terdapat pada Tabel 4.1 tersebut tidak akan digunakan sebagai kata di dalam indeks serta pada query pencarian. Penggunaan sebuah file stopwords.txt dikarenakan kata-kata tersebut tidak diperbarui secara rutin, walaupun ada penambahan kata stopwords dapat dilakukan secara mudah oleh administrator. Selanjutnya, kata-kata yang terdapat di dalam file stopwords.txt akan dimasukan kedalam sebuah variabel bertipe array untuk dapat digunakan oleh sistem secara mudah. include "inc/ir.function.php"; set_time_limit(86400); // 1 full day $stopwords = file("./bin/stopwords.txt"); for ($i =0 ; $i <= count($stopwords) -1; $i++){ $stopwords[$i]= trim($stopwords[$i]); } $mode = $_POST['mode']; $id_data = $_POST['id_data']; $pilih_bagian = $_POST['pilih_bagian']; if ($mode == "all"){ $sql = "select id_data,temp_file from t_data"; }elseif($mode == "bagian"){ $sql = "select id_data,temp_file from t_data where id_bagian='$pilih_bagian'"; }else if ($mode == "dokumen"){ $OrSql = true; if (count($id_data)){ for ($i =0 ; $i <= count($id_data)- 1 ; $i++){ if (trim($id_data[$i])){ if ($OrSql){ $plussql = "id_data=".$id_data[$i]." "; $OrSql = false; } else{ $plussql .= "OR id_data=".$id_data[$i]." "; } $QStr.= "id_data[]=".$id_data[$i]."&"; } } $sql = "select id_data, temp_file from t_data where $plussql"; } } $rs = mysql_query($sql,$konek);
Gambar 4.12 Kode Program modul Pengindeksan bagian pertama
Setelah pendefinisian lama waktu eksekusi dan pengambilan daftar kata stopwords, maka proses pengindeksan akan dilanjutkan ke proses pemilihan dokumen yang akan diindeks. Selanjutnya akan dilakukan pengambilan informasi dokumen yang akan diindeks dari basis data. Informasi yang diambil hanya letak
72
alamat dari file sementara, bukan letak dari file aslinya. Kode program pada modul pengindeksan bagian pertama dapat dilihat pada Gambar 4.12. 4.2.1 Submodul Parsing dan Penghilangan Stopwords
Setelah informasi mengenai dokumen sudah diambil dari basis data maka akan dilakukan pemecahan teks (parsing) dan penghilangan stopwords dari teks yang terdapat di dalam dokumen. Disini informasi dokumen yaitu id_data dan temp_file dari basis data akan digunakan satu per satu hingga informasi dokumen terakhir sesuai dengan pilihan yang diberikan oleh administrator. Dari informasi dokumen tersebut akan didapat isi dari dokumen berupa teks untuk digunakan oleh submodul parsing dan penghilangan stopwords. Submodul parsing dan penghilangan stopwords akan memecah teks yang terdapat didalam dokumen menjadi token yang siap untuk digunakan pada indeks. Modul ini diberi nama indexText dan parameter masukan yang digunakan oleh modul ini ada dua yaitu teks yang didapatkan dari dokumen dan array stopwords hasil pendefinisian pada awal file pengindeksan. function indexText($string,$stopwords){ global $buangkarakter; $str2 = strtolower($string); $str2 = strip_tags($str2); $str2 = preg_replace($buangkarakter," ",$str2); $arraystr = explode (" ",$str2); $j=0; for ($i = 0 ; $i <= count($arraystr)-1 ; $i++){ $tokens =trim($arraystr[$i]); if ($tokens){ if (strlen($tokens) >2 && !in_array($tokens,$stopwords)){ $maxtoken[$tokens]++; $token[$tokens][0]++; $token[$tokens][1].= $j.","; $j++; } } } return array($token,$maxtoken); }
Gambar 4.13 Kode Program Submodul Parsing dan Penghilangan Stopwords
73
Setelah itu teks dari seluruh dokumen akan diseragamkan menjadi huruf kecil semua. Dilanjutkan dengan proses penghilangan kode-kode html, penghilangan tanda baca dan diakhiri dengan proses penghilangan stopwords dari teks dokumen. Hasil dari submodul ini adalah array dua dimensi yang dimensi pertama berisi array frekuensi kata dan posisi dari kata pada dokumen dan posisi dimensi kedua berisi array frekuensi kata. Kode program dari submodul parsing dan penghilangan stopwords dapat dilihat pada Gambar 4.13. $string = file_get_contents($row[1]); $temp_tokens = indexText($string,$stopwords); $maxText = max($temp_tokens[1]); $totaltxt = count($temp_tokens[0]); $j = 0; $i=0; $OrSql = true; foreach($temp_tokens[0] as $token => $property){ usleep(50000); $tf=number_format($property[0]/$maxText,4); $position = substr($property[1],0,-1); $i++; if (!getCount("t_term","term='$token'")){ $sqltoken= "insert into t_term values('','$token','')"; mysql_query($sqltoken); $id_term= mysql_insert_id(); }else { $id_term= getData("id_term","t_term","term='".$token."'"); } $array_sql[$j][0] = $row[0]; $array_sql[$j][1] = $id_term; $array_sql[$j][2] = $tf; $array_sql[$j][3] = $position; $j++; if ($j==200 || $i == $totaltxt){ usleep(50000); for ($k=0; $k <=count($array_sql);$k++){ if ($k % 15 == 0){ usleep(50000); } $sqlindex = "insert into t_index values('".$array_sql[$k][0]."', '".$array_sql[$k][1]."', '".$array_sql[$k][2]."', '".$array_sql[$k][3]."')"; mysql_query($sqlindex,$konek); } $j=0; unset($array_sql); } }
Gambar 4.14 Kode Program Modul Pengindeksan Bagian Kedua
74
Hasil dari submodul tersebut akan dimasukan ke dalam dua variabel yang akan digunakan untuk proses penambahan atau perubahan data di dalam basis data. Sebelumnya terlebih dahulu kata akan dicek terlebih dahulu ke tabel t_term di dalam basis data. Kata yang sudah terdapat di dalam basis data tidak akan dimasukan kembali dan token yang belum terdapat di dalam basis data akan ditambahkan ke tabel t_term. Setelah itu akan dilakukan penambahan data ke tabel t_index di dalam basis data. Kode program dari penggunaan submodul parsing dan penghilangan stopwords pada file pengindeksan dapat dilihat pada Gambar 4.14. Jika dilihat pada Gambar 4.14 proses penambahan token ke dalam tabel t_index dilakukan berulang-ulang. Hal ini akan menyebabkan kinerja prosessor yang meningkat dalam waktu yang cukup lama. Untuk menghindari hal itu maka digunakan fungsi usleep untuk menghentikan sesaat kerja dari prosessor komputer. Pada Gambar 4.14 perintah tersebut diberi nilai 50000 yang berarti 50000 mikrodetik atau sebesar 0,05 detik adalah lamanya waktu berhenti sesaat kerja dari prosessor. 4.2.2
Submodul Perhitungan Variabel idf
Setelah seluruh informasi indeks selesai dimasukan ke dalam tabel t_term dan informasi token pada setiap dokumen sudah dimasukan ke dalam tabel t_index, maka dapat dilakukan perhitungan variabel idf yang akan disimpan pada tabel t_term. Variabel idf ini dapat dihitung dengan rumus : ⎛N⎞ idf i = log⎜⎜ ⎟⎟ ⎝ ni ⎠
75
Dimana : idfi = nilai idf dari suatu elemen kata i N = jumlah dari seluruh dokumen di dalam sistem ni = jumlah frekuensi dokumen yang memiliki kata i Dari rumus tersebut dapat diambil kesimpulan, apabila terdapat penambahan sebuah dokumen maka nilai dari variabel idf-nya harus diperbarui pada setiap kata yang terdapat dalam sistem. Hal ini tidak dapat dihindari karena terdapat variabel N dan ni dari rumus tersebut yang merupakan jumlah dari dokumen di dalam sistem. Perhitungan variabel idf ini akan membuat pengindeksan memakan waktu yang cukup lama. function CreateIDF(){ global $konek; $OrSQL = true; $sql = "select id_term from t_term"; $rs = mysql_query($sql,$konek); $totalDocument = getCount("t_data","id_data"); $j=0; while ($row = mysql_fetch_row($rs)){ usleep(50000); $totalUsedTerm = getCount("t_index","id_term='".$row[0]."'"); $idf = number_format(log($totalDocument/$totalUsedTerm),4); $term[$j][0] = $row[0]; $term[$j][1] = $idf; $j++; } usleep(100000); for ($k=0 ; $k<=count($term)-1;$k++){ if ($k % 15 == 0){ usleep(50000); } $sqlidf = "update t_term set idf='".$term[$k][1]."' where id_term='".$term[$k][0]."'"; mysql_query($sqlidf); } }
Gambar 4.15 Kode Program Submodul perhitungan idf
Submodul perhitungan idf ini tidak memiliki masukan karena semua datanya dapat diambil pada basis data. Submodul ini diberi nama CreateIDF. Penggunaan submodul ini juga akan menyebabkan sistem menggunakan kerja prosessor yang cukup lama. Maka dari itu, pada submodul ini juga digunakan
76
perintah usleep untuk menghentikan sesaat kerja dari prosessor. Kode program dari submodul perhitungan variabel dapat dilihat pada Gambar 4.15.
Gambar 4.16 Antarmuka Halaman Pengindeksan
Submodul ini di dalam modul pengindeksan dipanggil pada bagian akhir. Penggunaan submodul ini juga mengakhiri dari kegiatan pengindeksan. Antarmuka dari halaman pengindeksan dapat dilihat pada Gambar 4.16.
77
4.3
Modul Pencarian
if (trim($q)){ $mtime=microtime(); $mtime=explode(" ",$mtime); $mtime=$mtime[1] + $mtime[0]; $tstart=$mtime; $phrase = getPhraseArray($q,$stopwords); $plussql = getTermArray($q,$stopwords); $sql = "select distinct t_data.id_data from t_index,t_term,t_data where t_index.id_term=t_term.id_term and t_data.id_data=t_index.id_data and ($plussql) $addSqlBagian $addSqlType"; $rs = mysql_query($sql,$konek); if (@mysql_num_rows($rs)){ while ($row = mysql_fetch_row($rs)){ unset($Dvektor); unset($tf); unset($idf); for ($i = 0 ; $i <= count($phrase)-1;$i++){ if($wij = getTruePhrase($phrase[$i],$row[0],$stopwords)){ $numQterm++; $atas += ($wij[0]); $qvektor += ($wij[1]); $found = true; $search = true; } } if ($numQterm){ $sqldi = "SELECT sum((t_index.tf* t_term.idf)*( t_index.tf*t_term.idf)) FROM t_term, t_index WHERE t_index.id_data ='".$row[0]."' AND t_term.id_term = t_index.id_term"; $bawah = mysql_result(mysql_query($sqldi),0); $penyebut = $bawah*$qvektor; $sim[$row[0]] = @($atas / sqrt($penyebut)); } unset($numQterm); unset($bawah); unset($atas); unset($qvektor); } $mtime=microtime(); $mtime=explode(" ",$mtime); $mtime=$mtime[1] + $mtime[0]; $tend=$mtime; $totaltime=($tend-$tstart); $totaltime=number_format($totaltime,4); } else{ $messages= ":: Data tidak ditemukan!!"; $found = false; } }else { $messages = ":: Kata apa yang mau anda cari?"; $found = false; }
Gambar 4.17 Kode Program Modul Pencarian
Setelah pengindeksan selesai, maka proses pencarian dapat dilakukan. Pada penelitian ini modul pencarian akan menggunakan sebuah file yaitu search.php. Pada file ini kata kunci yang diberikan oleh pengguna akan diproses
78
terlebih dahulu dengan proses parsing dan penghilangan stopwords, lalu akan dibentuk array yang berisi kata-kata yang terdapat dalam indeks. Dari kata kunci juga akan dibuat array yang berisi frasa yang mungkin dibuat oleh pengguna. Setelah itu akan dilanjutkan dengan pencarian dokumen yang memiliki frasa tepat sesuai dengan masukan oleh pengguna, penghitungan bobot, fungsi kesamaan dan yang terakhir pengurutan dokumen berdasarkan bobotnya. Setelah dokumen terurut maka hasilnya dapat ditampilkan kembali kepada pengguna. Pada awal pengambilan kata kunci, akan diambil nilai dari waktu awal pengeksekusian file pencarian. Lalu pada akhir dari fungsi kesamaan akan diambil juga nilai waktu akhir. Selisih waktu awal dan waktu akhir ini digunakan untuk informasi kepada pengguna mengenai lamanya pencarian yang dilakukan oleh sistem. Potongan kode program pada file pencarian dapat dilihat pada Gambar 4.17. Modul pencarian menggunakan tiga buah submodul yaitu modul untuk pencarian frasa pada query, submodul parsing dan penghilangan stopwords pada query dan modul untuk pengecekan frasa tepat pada dokumen sesuai dengan frasa pada query yang diberikan.
79
4.3.1
Submodul Pencarian Frasa pada Query
function getPhraseArray($q,$stopwords){ $quoted = explode('"', $q); for($i = 0; $i <= count($quoted)-1 ; $i++) { if($i == 0 && !$quoted[$i]) { //kutip pada awal kata kunci $begin = True; $i++; } if($begin) { $phrase[] = $quoted[$i]; } elseif($quoted[$i]) { $temp_phrase = explode(" ", $quoted[$i]); for($n = 0; $n < count($temp_phrase); $n++) { $str = trim($temp_phrase[$n]); if(trim($str) && !in_array($str,$stopwords)) { $phrase[] = $str; } } } $begin = !$begin; } return $phrase; }
Gambar 4.18 Kode Program Submodul Pencarian Frasa pada Query
Submodul ini diberi nama getPhraseArray. Kode program dari submodul pencarian frasa pada query dapat dilihat pada Gambar 4.18. Pengguna sistem didalam melakukan pencarian dapat mencari frasa yang terdapat di dalam dokumen dengan cara memberikan tanda kutip (“) sebagai batas frasa pada kata kunci yang dimasukan. Adakalanya pengguna memasukan lebih dari dua frasa pada kata kunci. Misal pengguna memasukan kata kunci: ‘ “bom bali” “kenaikan bbm” ’, maka sistem akan memecah kata kunci tersebut menjadi dua buah bagian frasa “bom bali” dan “kenaikan bbm”. Kedua frasa ini akan disimpan ke dalam array untuk digunakan pada proses selanjutnya. Masukan dari submodul ini terdiri dari dua macam yaitu kata kunci yang diberikan oleh pengguna serta array dari daftar stopwords yang diambil dari file stopwords.txt.
80
4.3.2
Submodul untuk Parsing dan Penghilangan Stopwords
Setelah kata kunci di proses untuk memisahkan frasa, maka pemrosesan selanjutnya yaitu pemisahan kata-kata di dalam kata kunci untuk di sesuaikan dengan indeks yang terdapat di dalam basis data. Submodul untuk parsing dan penghilangan stopwords akan memecah kata kunci tersebut menjadi beberapa kata lalu akan dicocokan dengan kata yang terdapat di dalam tabel t_term pada basis data. Namun sebelum itu kata-kata yang termasuk ke dalam stopwords akan dibuang. Masukan dari submodul ini sama dengan submodul pencarian frasa. Perbedaannya terletak pada proses pemecahan teks pada kata kunci dari query. Pada submodul frasa kata kunci akan dipecah menjadi frasa-frasa yang sesuai berdasarkan tanda kutip (“) sebagai pemisah frasa, sedangkan pada submodul ini kata kunci akan dipecah berdasarkan tiap-tiap katanya. Misal: kata kunci ‘“bom bali” “kenaikan bbm”’ akan dipecah menjadi kata “bom”, “bali”, “kenaikan” dan “bbm”. Lalu setelah itu kata-kata tersebut akan di cari di dalam basis data untuk disesuaikan. Pada Gambar 4.19 dijabarkan kode program dari submodul parsing dan penghilangan stopwords. Pada gambar tersebut dapat dilihat keluaran dari submodul ini adalah array yang berisi penyataan SQL untuk meng-query seluruh dokumen yang memiliki kata-kata yang terdapat pada kata kunci yang diberikan oleh pengguna ke dalam basis data. Pernyataan SQL yang dihasilkan pada submodul ini akan digunakan untuk mencari id_data dari dokumen yang memiliki kata yang sesuai dengan kata kunci dan juga kata kunci tersebut harus terdapat di
81
dalam tabel t_term. Id_data dari dokumen tersebut diambil dari tabel t_index pada basis data. function getTermArray($q,$stopwords){ global $konek; $user_query = trim(strtolower($q)); $user_query = ereg_replace('"',"",$user_query); $array_user_query = explode(" ",$user_query); $orSql = true; for ($i=0 ; $i <= count($array_user_query) -1 ; $i++){ if (!in_array($array_user_query[$i],$stopwords)){ if ($orSql){ $plussql = "t_term.term = '".$array_user_query[$i]."'"; $orSql = false; }else{ $plussql .= " or t_term.term = '".$array_user_query[$i]."'"; } } } $orSql = true; $sql = "select distinct id_term from t_term where $plussql"; $rs = mysql_query($sql,$konek); if (@mysql_num_rows($rs)){ while ($row= mysql_fetch_row($rs)){ if ($orSql){ $plussql = "t_term.id_term='".$row[0]."'"; $orSql = false; }else { $plussql .= " or t_term.id_term='".$row[0]."'"; } } } return $plussql; }
Gambar 4.19 Kode Program Submodul Parsing dan Penghilangan Stopwords 4.3.3
Submodul pencocokan dokumen yang memiliki frasa tepat
Setelah id_data diambil maka dapat dicari frasa yang sesuai dengan frasa yang sudah didapatkan dari submodul pencarian frasa. Setiap id_data yang didapatkan akan dicocokan kata per kata sesuai dengan posisinya di dalam dokumen. Urutan dari tiap-tiap kata di dalam frasa harus sama dengan urutan frasa yang sudah di dapatkan. Kode Program dari submodul ini dapat dilihat pada Gambar 4.20.
82
function getTruePhrase($phrase,$id_data,$stopwords){ global $konek; global $buangkarakter; $temp = explode(" ",$phrase); for ($i=0 ; $i <= count($temp) -1 ; $i++){ if (!in_array($temp[$i],$stopwords)){ $array_kunci[] = preg_replace($buangkarakter,"",$temp[$i]); } } for ($i = 0 ; $i <= count($array_kunci) -1 ; $i++){ $sql = "SELECT t_index.position,t_index.tf,t_term.idf FROM t_index, t_term WHERE t_index.id_data = '".$id_data."' AND t_term.term = '".$array_kunci[$i]."' AND t_index.id_term = t_term.id_term"; $result = mysql_query($sql,$konek); if ($row = @mysql_fetch_row($result)){ $array_phrase[$i]= explode(",",$row[0]); $diwq += ($row[1]*$row[2])*$row[2]; $wq += ($row[2]*$row[2]); }else{ return false; } } if (count($array_kunci) > 1){ $match = false; $banyak_letak_kata1 = count($array_phrase[0]); for ($i = 0 ; $i <= $banyak_letak_kata1-1 ;$i++){ $j = 1; $letak = $array_phrase[0][$i]; while ($j <= count($array_phrase)-1){ if (in_array($letak+1,$array_phrase[$j])){ if($j == count($array_phrase)-1){ $match = true; $j++; }else{ $letak++; $j++; } }else{ break; } } if ($match){ break; } } if ($match){ return array($diwq,$wq); }else{ return false; } }else{ return array($diwq,$wq); } }
Gambar 4.20 Kode Program submodul Pencocokan Dokumen yang memiliki frasa tepat.
Submodul ini memiliki tiga masukan yaitu array dari frasa, id_data dan array kata stopwords. Pada awal pemrosesan, submodul ini akan memecah setiap
83
kata frasa yang dipisahkan oleh spasi. Apabila di dalam frasa tersebut terdapat kata stopwords maka akan dihilangkan juga. Setelah itu akan diambil dari basis data informasi mengenai posisi kata, nilai tf dari kata dan nilai idf dari kata pada dokumen yang dengan id_data sesuai pada masukan. Jika frasa yang dimasukan hanya terdiri dari satu kata maka submodul ini akan langsung memberikan hasilnya, kalau tidak, akan di cari urutan frasa yang benar pada dokumen berdasarkan posisi yang sudah diambil dari basis data. Keluaran dari submodul ini adalah array yang berisi jumlah perkalian dari bobot kata (tf·idf) dengan bobot dari query, jumlah kuadrat dari bobot kata dan jumlah kuadrat dari bobot query. Array ini akan digunakan untuk penghitungan fungsi kesamaan dengan rumus: t
sim(Q, Di ) =
∑w j =1
qj
⋅ wij
t
t
j =1
j =1
∑ (wij ) 2 × ∑ (wqj ) 2
Dimana : sim(Q,Di) = nilai fungsi kesamaan dari dokumen Di pada query Q wqj
= bobot dari kata j pada query
wij
= bobot dari kata j pada dokumen ke i
t
= jumlah indeks kata pada sistem
Submodul ini akan bernilai false jika dokumen tidak memiliki frasa yang sesuai dengan frasa yang didapatkan dari kata kunci. Setelah dokumen dihitung nilai kesamaannya, maka nilai-nilai tersebut akan dimasukan ke dalam array untuk
84
diurutkan. Lalu hasil dari pencarian dokumen akan tampilkan kepada pengguna. Tampilan antar muka pencarian dapat dilihat pada Gambar 4.21.
Gambar 4.21 Tampilan Antarmuka Modul Pencarian 4.4
Evaluasi Sistem Temu-Kembali Informasi
Pada Bagian ini akan dijelaskan mengenai pengujian sistem temu-kembali informasi. Dokumen sebagai bahan dari pengujian ini didapatkan dari artikel berita utama kompas edisi cetak (http://kompas.com/kompas-cetak/) dan republika edisi cetak (http://www.republika.co.id) selama bulan Oktober tahun 2005, kecuali untuk tanggal 29 Oktober 2005 tidak terdapat dokumen pada website republika. Dokumen akan dipisah menjadi dua bagian sesuai dengan nama sumber dari dokumen tersebut yaitu bagian kompas dan republika. Bagian kompas terdiri dari 212 dokumen dan republika terdiri dari 180 dokumen, jadi total seluruh
85
dokumen sebanyak 392 dokumen. Deskripsi isi dari dokumen yang akan dijadikan bahan uji di dalam sistem dapat dilihat pada Tabel 4.2. Proses pengindeksan memperoleh jumlah kata unik untuk dijadikan indeks sebanyak 16.828 kata, dan terdapat sebanyak 79.345 hubungan antara kata yang diindeks dengan dokumen. Proses pengindeksan memakan waktu selama 2 Jam 35 menit 29 detik. Ukuran dari basis data untuk pengindeksan sebesar 4.115,2 KB. 4.4.1
Evaluasi Recall dan Precision Tabel 4.2 Deskripsi Dokumen Sampel Pengujian
Pengujian
Kata Kunci
Dokumen Relevan Kompas
Total
Republika
K01
Bantuan Langsung Tunai (BLT)
20
11
31
K02
“Kenaikan Harga BBM”
24
16
40
K03
Kasus Suap “Makamah Agung
18
6
24
K04
Bom Bunuh Diri Bali
22
12
34
K05
Gempa Pakistan
3
6
9
K06
Arus Mudik Lebaran
6
10
16
Lain-lain
119
119
238
Jumlah seluruh Dokumen
212
180
392
Evaluasi sistem akan dilakukan dengan metode recall dan precision. Pengujian dilakukan dengan memasukan kata kunci sesuai dengan deskripsi. Sampel pengujian diambil sebanyak 6 buah sesuai tertera pada Tabel 4.2 yaitu K01 sampai dengan K06.
86
Tabel 4.3 Kinerja Sistem temu-kembali dengan menggunakan 6 Sampel
Recall 10 20 30 40 50 60 70 80 90 100 Average Precision
K01
K02
100 100 100 100 93,75 81,818 60 61,538 50,94 22,627
100 100 75 69,565 55,55 48 0 0 0 0
77,0673
44,8115
Precision K03 K04 66,666 100 83,33 100 58,333 100 62,5 100 66,666 100 70 100 42,5 96 34,545 93,103 0 91,176 0 85 48,454
K05
96,5279
K06
50 66,666 75 80 83,333 83,333 85,71 87,5 88,888 90
100 100 83,33 85,714 72,727 76,923 78,571 76,471 73,684 72,727
79,043
82,0147
Pengujian dengan sampel K01 didapatkan sebanyak 161 dokumen dengan rata-rata lama proses pencarian selama 3,8 detik. Pada Tabel 4.3 dapat dilihat bahwa sampel K01 pada titik recall 10% memiliki nilai precision sebesar 100%, selanjutnya pada titik recall 20% memiliki nilai precision sebesar 100% dan begitu seterusnya sehingga dari data tersebut dapat dibentuk kurva recallprecision untuk sampel K01 yang dapat dilihat pada Gambar 4.22.
Kurva Recall-Precision Sampel K01 120
Precision
100 80 60
K01
40 20 0 10
20
30
40
50
60
70
80
90 100
Recall
Gambar 4.22 Kurva Recall-Precision Sampel K01
87
Pengujian dengan sampel kata kunci K02 didapatkan 70 dokumen dengan rata-rata lama proses pencarian 2,2 detik. Kurva recall-precision untuk sampel K02 dapat dilihat pada Gambar 4.23.
Kurva Recall Precision Sampel K02 120
Precision
100 80 60
K02
40 20 0 10
20
30
40
50
60
70
80
90
100
Recall
Gambar 4.23 Kurva Recall-Precision Sampel K02
Pada sampel K02 dapat dilihat pada nilai recall 70%, 80%, 90% dan 100% tidak didapatkan nilai persentase dari precision. ini berarti bahwa tidak seluruh dokumen
yang memiliki informasi mengenai “’kenaikan harga bbm’” dapat
ditemu-kembalikan oleh sistem pencarian.
Precision
Kurva Recall-Precision Sampel K03 90 80 70 60 50 40 30 20 10 0
K03
10
20
30
40
50
60
70
80
90
100
Recall
Gambar 4.24 Kurva Recall-Precision Sampel K03
88
Pengujian dengan sampel kata kunci K03 didapatkan 119 dokumen dengan rata-rata lama proses pencarian 2,8 detik. Pada sampel K03 ini juga didapatkan nilai precision 0% pada recall 90% dan 100%. Ini juga berarti tidak seluruh dokumen yang memiliki informasi mengenai “kasus suap ‘makamah agung’” berhasil ditemu-kembalikan oleh sistem. Kurva recall-precision untuk sampel K03 dapat dilihat pada Gambar 4.24.
Kurva Recall Precision Sampel K04 105
Precision
100 95 K04
90 85 80 75 10
20
30
40
50
60
70
80
90
100
Recall
Gambar 4.25 Kurva Recall-Precision Sampel K04
Pengujian dengan sampel kata kunci K04 didapatkan 141 dokumen dengan rata-rata lama proses pencarian 3,5 detik dengan rata-rata nilai precision sebesar 96,5279% pada setiap titik recall. Hal ini terjadi karena kata kunci yang dimasukan memiliki keunikan dibandingkan kata kunci lainnya sehingga sistem dapat melakukan proses temu-kembali hampir mendekati maksimal Grafik recallprecision untuk sampel K04 dapat dilihat pada Gambar 4.25. Pengujian dengan sampel kata kunci K05 didapatkan 13 dokumen dengan rata-rata lama proses pencarian 0,2 detik dengan rata-rata nilai precision sebesar
89
79,043% pada setiap titik recall.. Kurva recall-precision untuk sampel K05 dapat dilihat pada Gambar 4.26.
Kurva Recal-Precision Sampel K05 100
Precision
80 60 K05 40 20 0 10
20
30
40
50
60
70
80
90
100
Recall
Gambar 4.26 Kurva Recall-Precision Sampel K05
Pengujian dengan sampel kata kunci K06 didapatkan 52 dokumen dengan rata-rata lama proses pencarian 1,04 detik dengan rata-rata nilai precision sebesar 82,0147% pada setiap titik recall. Kurva recall-precision untuk sampel K06 dapat dilihat pada Gambar 4.27.
Kurva Recall-Precision Sampel K06 120
Precision
100 80 60
K06
40 20 0 10
20
30
40
50
60
70
80
90
100
Recall
Gambar 4.27 Kurva Recall-Precision Sampel K06
90
Dari hasil pengujian sampel dokumen sesuai dengan kata kunci K01 sampai K06 dapat dilihat perbedaan waktu pencarian yang ditempuh. Perbedaan waktu pencarian ini didapatkan dari dua faktor, banyaknya dokumen yang berhasil ditemu-kembalikan dan banyaknya kata kunci yang dimasukan. Sedangkan untuk keakuratan hasil pencarian untuk mendapatkan dokumen yang relevan tergantung pada keunikan kata kunci yang diberikan oleh pengguna. Sedangkan untuk pencarian dengan menggunakan frasa tepat lebih mengurangi jumlah recall dari hasil pencarian. Akan tetapi, penggunaan frasa tepat ini tidak menaikan nilai precision sehingga tidak seluruh dokumen yang relevan dapat ditemu-kembalikan ke pengguna. Kinerja dari sistem temu-kembali pada sampel dokumen K01 sampai K06 dapat dilihat pada Tabel 4.3. Secara kinerja sistem temu-kembali yang dikembangkan sudah cukup baik karena dengan rata-rata average precision sekitar 71,31973% yang berarti rata-rata tiap recall point, 71,31973% dokumen yang berhasil ditemu-kembalikan relevan dengan query yang diberikan.
5. BAB V KESIMPULAN DAN SARAN
5.1
Kesimpulan
Berdasarkan hasil penelitian yang berupa pengembangan sistem pencarian dengan metode temu-kembali informasi dapat diambil sebuah kesimpulan yaitu: 1. Sistem temu-kembali informasi yang dibuat dapat mencari informasi dari isi file dokumen yang disimpan di dalam sistem. 2. Proses pengindeksan dokumen didalam sistem temu-kembali informasi yang dikembangkan melalui beberapa tahapan pemrosesan teks, yaitu parsing, penghilangan stopwords dan penghitungan nilai bobot setiap kata yang akan dijadikan indeks. Sedangkan untuk proses pencariannya juga melalui beberapa tahapan proses yang yang hampir sama dengan proses pengindeksan, yaitu parsing, penghilangan stopwords, cek frasa dan yang terakhir adalah penghitungan fungsi kesamaan untuk mendapatkan nilai bobot setiap dokumen yang akan dicari. 3. Kecepatan pencarian sebuah informasi tergantung dari jumlah dokumen yang dihasilkan dan jumlah kata kunci yang digunakan sebagai query pencarian. 4. Pencarian dengan menggunakan frasa tepat dapat mengurangi nilai recall dari hasil pencarian. Akan tetapi hal ini akan menyebabkan nilai precision menurun, karena tidak semua dokumen yang memiliki informasi yang relevan dapat ditemu-kembalikan. Dan juga penggunaan frasa tepat dapat
91
92
memperlama proses pencarian karena kata kunci harus diproses untuk mencocokan dokumen. 5. Secara kinerja, sistem temu-kembali yang dikembangkan sudah cukup baik karena dengan rata-rata average precision sekitar 71,31973% yang berarti rata-rata pada tiap recall point, 71,31973% dokumen yang berhasil ditemu-kembalikan relevan dengan query yang diberikan. 5.2
Saran
Dari
penelitian
ini
masih
terdapat
banyak
kemungkinan
untuk
mengembangkan dan meningkatkan kemampuan serta menutupi kekurangankekurangan yang telah dipaparkan diatas. Beberapa hal yang diusulkan untuk penelitian dan pengembangan sistem temu-kembali informasi berikutnya, yaitu: 1. Penggunaan kompresi untuk memperkecil ruang penyimpanan serta mempercepat proses pencarian teks. 2. Dikembangkannya algoritma stemming (penghilangan imbuhan) untuk kata-kata berbahasa indonesia. Penggunaan stemming dapat mengurangi ukuran dari indeks pada sistem temu-kembali informasi. 3. Penggunaan thesaurus (pengelompokan kata yang berhubungan) sehingga dapat meningkatkan precision dari hasil pencarian temu-kembali informasi. 4. Penggunaan model dari temu-kembali informasi yang lainnya untuk dapat membandingkan hasil kinerja temu-kembali informasi sehingga dapat ditemukan model yang paling baik dari sistem temu-kembali informasi.
DAFTAR PUSTAKA
Baeza-Yates & Ribeiro-Neto, 1999, Modern Information Retrieval, Harlow, Addison-Wesley. Bartell et all, 2002, Optimizing Parameters in a Ranked RetrievalSystem Using Multi-Query Relevance Feedback, Institute of Neural Computation, and Departement of Science & Engineering University Of California, San Diego. Connoly, T. M. & Begg, C. E., Database System : A Practical Approach to Design, Implementation, and Management, Harlow, Addison-Wesley. Date, C.J., Pengenalan Sistem Basis Data Edisi Ketujuh, Judul Asli: An Introduction to Database System Seventh Edition, PT Indeks Group Media. Faren, 2005, IMPLEMENTASI OPERASI BOOLEAN SISTEM RETRIEVAL INFORMASI UNTUK DOKUMEN DIGITAL, Skripsi Program Studi Ekstensi Ilmu Komputer Jurusan Matematika Universitas Gadjah Mada, Yogyakarta. Fathansyah., 2001, Basis Data, Bandung, Informatika Bandung. Grossman, D., 1992, IR Book, http://www.ir.iit.edu/~dagr/cs529/files/ir_book/ [7 Maret 2002] Ingwersen, P, 1992, Information Retrieval Interaction, London, Taylor Graham Publishing. http://www.db.dk/pi/iri [29 Agustus 2005] Internet Systems Consortium, 2005, ISC Domain Survey: Number of Internet Hosts, http://www.isc.org/ops/ds/host-count-history.php [12 Oktober 2005] Internet World Stats, 2005, World Internet Usage Statistic and Populatoin Stats, September 2005, http://www.internetworldstats.com/stats.htm [11 Oktober 2005]. Mizzaro, S., 1998. How Many Relevances in Information Retrieval?, Department of Mathematics and Computer Science University of Udine, http://www/dimi.uniud.it/~mizzaro [31 Agustus 2005] Nua Internet Surveys, 2005, Nua Internet Surveys: Net users' patience only lasts 12 minutes, http://www.nua.ie/surveys/ index.cgi?f=VS&art_id= 905356650&rel=true [12 Oktober 2005] Pressman R., 2002, Rekayasa Perangkat Lunak, Pendekatan Praktisi (Buku Satu), Judul Asli: SOFTWARE ENGINEERING: A Practitioner’s Approach, Yogyakarta, ANDI. Pressman, R., 2005, SOFTWARE ENGINERING: A Practitioner’s Approach Sixth Edition, New York, McGraw-Hill.
93
94
Rijsbergen, C.J. van., 1979, Butterworths, London.
Information
Retrieval,
Second
Edition.
Salton, G., 1969, Automatic Text Analysis. Technical Report No. 69-36. Department of Computer Science. Cornell University, Ithaca, New York. Salton, G., 1989, Automatic Text Processing: The Transformation, Analysis, And Retrieval Information by Computer, Massachusetts, Addison-Wesley. Salton, G. & Buckley, C., 1987, Term Weighting Approaches in Automatic Text Retrieval, Technical Report No. 87-881, Departement of Computer Science Cornell University Ithaca, New York. Wikipedia, 2005, Information retrieval - Wikipedia, the free encyclopedia, http://en.wikipedia.org/wiki/Information_retrieval [21 Oktober 2005] Witten et all, 1999, Managing Gigabytes: Compressing and Indexing Document dan Images Second Edition, San Fransisco, Morgan Kaufmann Publishers.