sistem temu-kembali informasi dengan metode vector space model
DESCRIPTION
SISTEM TEMU-KEMBALI INFORMASIDENGAN METODE VECTOR SPACE MODELTRANSCRIPT
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
ii
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
iii
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
iv
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
Sigit Priyanta, S.Si., M.Kom
Ketua Tim Penguji
Drs. Janoe Hendarto, M.Kom
Penguji
Drs. Azhari, M.T.
Penguji
Drs. Suprapto, M.Kom
v
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.
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
vii
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
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 DFD Level 1...................................................................... 32
3.2.1.1 Proses 1 Mesin Indeks........................................ 33
3.2.1.2 Proses 2 Proses Cari ........................................... 34
3.2.2 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 Model Data Fisik................................................ 48
3.2.4 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 Sistem Penyimpanan Data............................................................. 55
4.1.2 Halaman Manipulasi Bagian............................................. 57
4.1.3 Halaman Manipulasi Data................................................. 60
4.1.4 Halaman Pengguna ........................................................... 66
4.2 Modul Pengindeksan..................................................................... 68
4.2.1 Submodul Parsing dan Penghilangan Stopwords ............. 72
4.2.2 Submodul Perhitungan Variabel idf.................................. 74
4.3 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
x
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
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
xiii
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
xiv
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.
xv
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.
1
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
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 dokumen-
dokumen 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 temu-
kembali 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 temu-
kembali informasi yang dikembangkan.
BAB IV. HASIL PENELITIAN DAN PEMBAHASAN
Pada bab ini penulis akan membahas implementasi dari sistem temu-
kembali 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 pencarian
informasi di internet.
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 temu-
kembali 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.
9
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 dokumen-
dokumen 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
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 temu-
kembali informasi dapat dilihat pada Gambar 2.1.
Gambar 2.1 Kerangka dari sistem temu-kembali informasi sederhana
(Ingwersen, 1992)
Perlu diingat bahwa pencarian sebuah informasi di dalam sistem temu-
kembali informasi belum tentu mengembalikan seluruh dokumen yang relevan.
Bisa hanya sebagian atau tidak sama sekali. Sistem temu-kembali informasi
Query
Formulasi pencarian
Pengindeksan
Pencari Informasi Dokumen
Representasi dokumen
Fungsi Kesamaan
Daftar dari dokumen yang relevan
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
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.
dokumen
Pengenalan struktur
Aksen, spasi, dll.
Penyaringan kata
Pengelompokan kata
Stemming
Pengindeksan manual atau
otomatis
teks
teks terstruktur
struktur
teks utuh
Indeks Istilah
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:
jll
jiji freq
freqf
,
,, max=
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:
ii n
Nidf log=
Dari dua faktor tersebut maka pembobotan tf·idf dapat dinyatakan dengan:
ijiji n
Nfw log,, ×=
2.6 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
jijqji wwDQsim
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 dokumen-
dokumen yang lebih pendek. Sehingga pada kebanyakan lingkungan penemu-
kembalian, 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
jqj
t
jij
t
jijqj
i
ww
wwDQsim
1
2
1
2
1
)()(),(
2.7 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).
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:
Dokumen Relevan
|R|
Hasil Temu-kembali
|A|
Seluruh Koleksi Dokumen
Dokumen relevan yang
ditemukembalikan |Ra|
21
ARa
ecision
RRa
call
=
=
Pr
Re
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. Satu-
satunya 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.
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 bersama-
sama 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.
Komunikasi
Perencanaan
Pemodelan
Pembangunan
Pengiriman
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 :
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.
Transfer informasi (fungsi) yang ada di dalam bound sistem untuk dimodelkan.
Prosedur atau konsumer informasi yang ada di luar bound sistem untuk dimodelkan.
Objek data; anak panah menunjukkan arah aliran data.
Repositori data yang disimpan untuk digunakan oleh satu atau lebih proses.
26
Tugas Pertama
Tugas Berikutnya
Urutan
Bagian Then
KondisiT
Bagian Else
F
If-then-else
F
F
T
T
T
F
Kondisi Case
Bagian Case
Kondisi Loop
Tugas Loop
Do - WhileRepeat - Until
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.
29
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
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.
Gambar 3.1 Diagram Konteks
UserSistem Temu-
kembali Informasi AdministratorPilihanIndexKata Kunci
Informasi Dokumen
File
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 temu-
kembali informasi, yaitu proses Indexing yang diberi nama dengan mesin indeks
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
P ilihanIndex
A dm in is tra to r
F ileU se rIn fo rm as i D okum en
K a ta K unc i
D a tabaseP eny im panan
da ta
F ile S to rage
2P roses C a ri
1M esin Indeks
3M enam p ilkan
In fo rm asiD okum en
Q ueryP enca rian
Indeks Is tilahD okum en
T eks
F ile D okum en
H asilQ uery
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.
PilihanIndex
Administrator
DokumenTeks
File Storage
Indeks IstilahDatabase
PenyimpananData
1.1Pengambilan
Dokumen yangdipilih
1.2Parsing Teks
1.3Penghilangan
Stopwords
ArrayKata
1.4Penghitungan
Bobot
Token
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
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.
Mulai
Selesai
Case Folding
Penghilangantanda baca
Pembentukanarray Kata
38
4. Ulangi ke langkah no.3 sampai array kata paling terakhir.
Mulai
ArrayKata
sebuahdokumen
i=0
Bandingkan isiarray ke-i dengandaftar stopwords
Isi array ke-I =stopwords
Hapus data arrayke-i
Ya
i = jumlah array
Tidak
Tidak
i=i+1
Ya
selesai
Daftarstopwords
Pengitunganfrekuensi
token
Pembuatanarray Token
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 tokenDokumen
ke-i
j=0Array token ke-jdokumen ke-i
sudah ada
Ya Penghitungan tf
Tidak
Tambah datatoken ke-j keTabel t_terms
Tambah dataindeks ke tabel
t_index
j= jumlah arrayTidak
j=j+1
Tidak
i=i+1
i=jumlahdokumen
Basisdataindeks
term
Ambil term daritabel t_term Ya
term
i=0
Hitung idfterm ke-i
Update tabelt_term
i=jumlah term
Tidak
i=i+1
Selesai
Ya
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
QueryPencarian
DatabasePenyimpanan
Data
Kata KunciUser2.1
Parsing
2.2Penghilangan
Stopwords
ArrayKata
Token Query
2.4Fungsi
kesamaan
2.3cek Frasa
Vektor Dokumen
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
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.
MulaiId_dataid_termposisi
Match = false
Arraytoken
i=0j=0
letak = posisitoken-j ke i
j=j+1
j= jumlah token
k=0
letak+j = nilai posisi
token-j ke-k
Tidakk=k+1
k= jumlahposisitoken-j
Tidak
Tidak
Tidak
i=i+1j=0
Ya
Ya
Match=true
i = jumlahposisi token ke-0
Ya
Ya
Selesai
if match = true Ya
Add id_datake dalam
VektorDokumen
Tidak
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 masing-
masing dokumen berdasarkan query pengguna agar dapat diurutkan. Fungsi
kesamaan disini menggunakan model ruang vektor, dengan rumus :
∑∑
∑
==
=
×
⋅=
t
jqj
t
jij
t
jijqj
i
ww
wwDQsim
1
2
1
2
1
)()(),(
46
Mulai VektorDokumen i=0
ArrayToken
j=0
Basisdata
Ambil nilai tf dan idfdari t_term dan
t_index berdasarkanid_data dokumen ke i
dan token ke j
wij = tf·idf
atas = atas+(wij*wqj)bawah = bawah + (wij*wij)
qvektor = qvektor + (wqj*wqj)
j= jumlah array
j=j+1
Tidak
Ya
atas /sqrt(bawah*qvektor)
Arraysim
i= jumlahvektor dokumen
Tidak
i=i+1
Urutkan Arraysim
Ya
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 : qvektorbawah
atas×
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.
Gambar 3.10 Model Data Konseptual Sistem Penyimpanan
3.2.3.2 Model Data logik
Administrator Memasukan Dokumen
Bagian
Dikelompokan
n
n
1
1
Term
DiindeksMenjadi
n
1
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_user
PK id_user
unamepasswordguidkontrolisasi
t_data
PK id_data
FK1 id_bagiantanggalnama_dataletaknama_filetype_fileukuran_filepenulisdeskripsitemp_file
t_bagian
PK id_bagian
bagianfolder
t_term
PK id_term
termidf
t_index
PK,FK1 id_dataPK,FK2 id_term
tfposition
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
Gambar 3.13 Perancangan Antarmuka Pengindeksan
Banner21/01/2006
Menu
Index Seluruh Dokumen
Seluruh Dokumen
Index Bagian
Bagian
Pilih Bagian
Dokumen
Dokumen 1Dokumen 2Dokumen 3Dokumen 4Dokumen 5Dokumen 6Dokumen 7Dokumen 8Dokumen 9Dokumen 10
Navigasi
Index Dokumen
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.
Banner30/12/2005
Menu
Hasil Pencarian
Search :
Form Pencarian
Gambar 3.14 Perancangan Antarmuka Pencarian
54
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 :
55
a. Perangkat lunak yang digunakan:
• Sistem operasi : Microsoft Windows XP.
• Bahasa Pemrograman : PHP Versi 5.0.5
• Basis data : MySQL Versi 4.0.20a
b. Perangkat keras yang digunakan :
• Processor AMD Athlon (tm) XP 1800+ 1,533 Ghz
• Monitor 15”
• Harddisk 80 GB
• RAM 1 GB
• Keyboard + Mouse
4.1 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 !! <br>"; } else{ $sql = "select * from t_bagian where nama_bagian='$bagian'"; if (@mysql_num_rows(mysql_query($sql))){ $msg = "Error : Nama Bagian Sudah ada!! <br>"; }else { $bag = preg_replace("/\W+/i","",$bagian); if (!$bag|| strlen($bag) <=1){ $msg = "Nama Bagian salah!!<br>"; } 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!! <br>"; $id_bagian=""; } } } } } elseif($action =="edit"){ $bagian_baru = $_GET['bagian_baru']; if ($bagian_baru==""){ $msg = "Error : Nama Bagian Baru harus diisi !! <br>"; } else{ $sql = "select * from t_bagian where nama_bagian='$bagian_baru'"; if (@mysql_num_rows(mysql_query($sql))){ $msg = "Error : Nama Bagian Sudah ada!! <br>"; }else { $bag = preg_replace("/\W+/i","",$bagian_baru); if (!$bag|| strlen($bag) <=1){ $msg = "Nama Bagian Baru salah!!<br>"; } 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
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
}else{ $msg = "Query Error!! <br>"; $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!! <br>"; $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!! <br>"; $id_bagian=""; } }
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
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.
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); }
65
if ($action== "add"){ if(!$nama_data || !$upload_file || !$id_bagian){ $msg = "Yang bertanda <strong>*</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>*</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
Gambar 4.8 Potongan Kode Program Manipulasi Data
4.1.4 Halaman Pengguna
Gambar 4.9 Antarmuka Halaman Pengguna
$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)); } }
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 ada biasanya kalau menunjukkan sedang seusai adalah bila kalian menurut sedangkan sewaktu adanya bilamana kami mereka sedikit si adapun buat kamu merupakan segera siapa aduh bukan karena meski sehabis siapakah agar dalam kata meskipun sehingga siapapun ah dan katanya misalnya sehubungan suatu akan dapat kau mungkin sejak sudah aku dari ke namun sejumlah supaya alih-alih daripada kebanyakan nanti sekarang tak anda dekat kecuali nyaris sekeliling tanpa andai demi kemanakah oleh seketika tapi antar demikian kemudian pada sekitar tatkala
antara dengan kenapa padahal sekonyong-konyong telah
apa depan kenapakah para selagi tengah apakah di kepada pasti selain tentang apalagi dia ketika pelbagai selalu tentu asalkan dikatakan ketimbang per selama tentunya atas dilakukan kini peri selanjutnya tergolong atau dkk kita perihal selesai terhadap ataupun dll lagi pinggir seluruh terjadi Bagai dsb lain pula seluruhnya terkadang bagaikan engkau lain-lain pun semakin terlalu bagaimana hal lainnya saat semenjak terlebih bagaimanakah hampir lalu saja sementara termasuk bagaimanapun hanya lebih sambil semua ternyata bagi harus lepas sampai semuanya tersebut bahkan hingga lewat samping seorang tertentu bahwa ia maka sang sepanjang tetap balik ialah makin sangat seperti tetapi banyak ini manakala sangatlah sepertinya tiap barangkali itu masih saya seputar tiba-tiba bawah iya masing-masing seakan seraya tidak beberapa jadi masing-masingnya seakan-akan sering ujar begini jangan maupun seantero seringkali ujarnya begitu jarang melainkan sebab serta umumnya belakang jauh melakukan sebabnya sesuai untuk belum jika melalui sebagai sesuatu walau berapa jikalau memang sebagaimana sesudah walaupun berbagai juga mengatakan sebagainya sesudahnya ya bersama jumlah mengenai sebelum sesungguhnya yaitu beserta justru menjadi sebelumnya setelah yakni betapa kadang menjelang sebuah seterusnya yang biar kadang-kadang menuju secara setiap
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.
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
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);
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.
Gambar 4.13 Kode Program Submodul Parsing dan Penghilangan Stopwords
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); }
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.
Gambar 4.14 Kode Program Modul Pengindeksan Bagian Kedua
$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); } }
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 :
⎟⎟⎠
⎞⎜⎜⎝
⎛=
ii n
Nidf log
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.
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
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); } }
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
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
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; }
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
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.
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; }
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.
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.
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; }
82
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
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); } }
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
jqj
t
jij
t
jijqj
i
ww
wwDQsim
1
2
1
2
1
)()(),(
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
Dokumen Relevan Pengujian Kata Kunci
Kompas Republika
Total
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
Precision Recall K01 K02 K03 K04 K05 K06
10 100 100 66,666 100 50 100 20 100 100 83,33 100 66,666 100 30 100 75 58,333 100 75 83,33 40 100 69,565 62,5 100 80 85,714 50 93,75 55,55 66,666 100 83,333 72,727 60 81,818 48 70 100 83,333 76,923 70 60 0 42,5 96 85,71 78,571 80 61,538 0 34,545 93,103 87,5 76,471 90 50,94 0 0 91,176 88,888 73,684
100 22,627 0 0 85 90 72,727 Average Precision 77,0673 44,8115 48,454 96,5279 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 recall-
precision untuk sampel K01 yang dapat dilihat pada Gambar 4.22.
Kurva Recall-Precision Sampel K01
0
20
40
60
80
100
120
10 20 30 40 50 60 70 80 90 100
Recall
Prec
isio
n
K01
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
0
20
40
60
80
100
120
10 20 30 40 50 60 70 80 90 100
Recall
Prec
isio
n
K02
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.
Kurva Recall-Precision Sampel K03
0102030405060708090
10 20 30 40 50 60 70 80 90 100
Recall
Prec
isio
n
K03
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
75
80
85
90
95
100
105
10 20 30 40 50 60 70 80 90 100
Recall
Prec
isio
n
K04
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 recall-
precision 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
0
20
40
60
80
100
10 20 30 40 50 60 70 80 90 100
Recall
Prec
isio
n
K05
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
0
20
40
60
80
100
120
10 20 30 40 50 60 70 80 90 100
Recall
Prec
isio
n
K06
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.
91
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
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 kekurangan-
kekurangan 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.
93
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.
94
Rijsbergen, C.J. van., 1979, Information Retrieval, Second Edition. Butterworths, London.
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.