Sistem temu balik informasi dokumen makalah ilmiah berbahasa Indonesia menggunakan struktur data inverted index berbasis hash table dan linked list

(1)

i

SISTEM TEMU BALIK INFORMASI DOKUMEN MAKALAH ILMIAH BERBAHASA INDONESIA MENGGUNAKAN STRUKTUR DATA INVERTED INDEX BERBASIS HASH TABLE DAN LINKED LIST

SKRIPSI

Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer

Program Studi Teknik Informatika

Oleh:

Reza Mohammad Darojad NIM:085314024

JURUSAN TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA


(2)

ii

INFORMATION RETRIEVAL SISTEM OF INDONESIAN SCIENTIFIC PAPER USING INVERTED INDEX DATA STRUCTURE BASED ON

HASH TABLE AND LINKED LIST

THESIS

Presented as Partial Fullfilment of the Requirements To Obtain the Computer Bachelor Degree

In Informatics Engineering

By:

Reza Mohammad Darojad NIM:085314024

INFORMATICS ENGINEERING STUDY PROGRAM

DEPARTMENT OF INFORMATICS ENGINEERING

FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

2013


(3)

iii

HALAMAN PERSTETUJUAN

SKRIPSI

SISTEM TEMU BALIK INFORMASI DOKUMEN MAKALAH ILMIAH BERBAHASA INDONESIA MENGGUNAKAN STRUKTUR DATA INVERTED INDEX BERBASIS HASH TABLE DAN LINKED LIST

Oleh:

Reza Mohammad Darojad NIM:085314024 Telah disetujui oleh:

Dosen Pembimbing


(4)

iv

HALAMAN PERSTETUJUAN

SKRIPSI

SISTEM TEMU BALIK INFORMASI DOKUMEN MAKALAH ILMIAH BERBAHASA INDONESIA MENGGUNAKAN STRUKTUR DATA INVERTED INDEX BERBASIS HASH TABLE DAN LINKED LIST

Dipersiapkan dan ditulis oleh Reza Mohammad Darojad

NIM:085314024

Telah dipertahankan di depan Panitia Penguji Pada tanggal 15 Februari 2013

dan dinyatakan memenuhi syarat

Susunan Panitia Penguji

Nama Lengkap Tanda Tangan

Ketua Sri Hartati Wijono, S. Si., M. Kom. ... Sekretaris Puspaningtyas Sanjoyo Adi, S.T., M.T. ... Asnggota JB. Budi Darmawan, S.T., M. Sc. ...

Yogyakarta , .... Februari 2013 Fakultas Sains dan Teknologi

Universitas Sanata Dharma Dekan,


(5)

v

PERNYATAAN KEASLIAN KARYA

Saya menyatakan dengan seungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya orang lain kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.

Yogyakarta, Februari 2013 Penulis,


(6)

vi

ABSTRAKSI

Makalah ilmiah adalah karya ilmiah akademik yang dipublikasikan. Makalah ilmiah berbahasa Indonesia lebih ditujukan untuk ruang lingkup pembaca

nasional.

Seiring bertambahnya jumlah makalah ilmiah yang beredar para akademisi memerlukan informasi mengenai makalah-makalah yang akan mereka baca atau referensikan. Informasi tersebut dapat diperoleh menggunakan sistem temu-kembali informasi (Information retrieval) agar pengguna mendapatkan keputusan sumber informasi yang tepat sesuai kebutuhan pengguna.

Sistem Pemerolehan informasi yang dibangun berfokus pada model TF-IDF dengan algoritma stemming Nazief & Adriani karena dokumen makalah yang akan di cari adalah makalah ilmiah berbahasa Indonesia dan algoritma tersebut adalah yang paling optimal tingkat relevansinya untuk saat ini.


(7)

vii

ABSTRACT

Scientific papers are academic papers that published. Indonesian-language scientific papers aimed more at the national scope of the reader.

With the growing number of outstanding scientific papers, academics need information about the papers they would read or refer. Such information can be obtained using Information Retrieval Systems so that users get the right decision sources of information according to user needs.

Information Retrieval System is built focusing on the model TF-IDF with Nazief & Adriani stemming algorithms for paper documents that will be looking for is a scientific paper in Indonesian language and the algorithm is the optimal level of relevance for today.


(8)

viii

HALAMAN PERSETUJUAN PUBLIKASI KARYA ILMIAH

UNTUK KEPENTINGAN AKADEMIS

Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma:

Nama : Reza Mohammad Darojad

NIM : 085413024

Demi pengembangan ilmu pengetahuan, saya memberikan kepada perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul:

SISTEM TEMU BALIK INFORMASI DOKUMEN MAKALAH ILMIAH BERBAHASA INDONESIA MENGGUNAKAN STRUKTUR DATA INVERTED INDEX BERBASIS HASH TABLE DAN LINKED LIST

Berserta perangkat yang diperlukan bila ada. Dengan demikian saya memberikan kepada perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikan secara terbatas, dan mempublikasikannya di internet atau media laiin untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberi royalti kepada saya selama tetap mencantumkan nama saya sebagai penulis.

Demikian pernyataan ini saya buat dengan sebenarnya. Dibuat di Yogyakarta

Pada tanggal:

Yang menyatakan


(9)

ix

KATA PENGANTAR

Puji syukur kepada Yesus Kristus yang telah memberikan karunia, rahmat, dan kesempatan, sehingga penulis dapat menyelesaikan skripsi ini. Penyusunan skripsi ini tidak lepas dari semua pihak yang turut memberikan dukungan, doa, semangat, dan bantuan yang sangat bermanfaat bagi penulis. Pada kesempatan ini penulis mengucapkan terima kasih sebesar besarnya kepada :

1. Bapak JB. Budi Darmawan, S.T., M.Sc. selaku dosen pembimbing senantiasa memberikan masukkan dan bantuan dalam membimbing penulis untuk menyelesaikan skripsi ini.

2. Segenap dosen Universitas Sanata Dharma yang telah membantu memberikan bekal pengetahuan kepada penulis.

3. Ibu Sulistyaningtyas dan Kakak Tyas yang selalu memberi dukungan. 4. Seluruh sahabat dan rekan-rekan TI yang tidak dapat penulis sebutkan atas

kesediaanya dalam memberikan masukkan, menemani dan memberi dukungan kepada penulis.

Penulis menyadari bahwa masih banyak kekurangan yang terdapat pada skripsi ini. Saran dan kritik penulis harapkan untuk kebaikan bersama. Semoga bermanfaat.

Yogyakarta, Februari 2013 Penulis,


(10)

x

Daftar Isi

HALAMAN JUDUL... i

HALAMAN PERSETUJUAN SKRIPSI ... iii

PERNYATAAN KEASLIAN KARYA ... v

ABSTRAKSI ... vi

ABSTRACT ... vii

HALAMAN PERSETUJUAN PUBLIKASI KARYA ILMIAH ... viii

KATA PENGANTAR... ix

Daftar Isi ... x

Bab I Pendahuluan ... 1

1.1. Latar belakang ... 1

1.2. Rumusan Masalah ... 2

1.3. Tujuan ... 3

1.4. Batasan Masalah ... 3

1.5. Metodologi Penelitian ... 4

1.6. Sistematika Penulisan ... 5

Bab II Landasan Teori ... 7

2.1 Information Retrieval ... 7

2.2 Proses Indexing ... 9

2.3 Pembobotan Kata ... 14

2.4 Hash Table ... 17

2.5 LinkedList ... 17

2.6 Precision dan Recall ... 17

BAB III ANALISA DAN PERANCANGAN SISTEM ... 18

3.1 Analisa Sistem ... 18

3.2 Perancangan Sistem ... 33

BAB IV IMPLEMENTASI SISTEM ... 48

4.1. Spesifikasi Perangkat Lunak dan Perangkat Keras ... 48

4.3. Implementasi Inverted Index ... 59

4.4. Implementasi Antarmuka ... 65


(11)

xi

4.6. Implementasi Model ... 72

BAB V ANALISA HASIL ... 73

BAB VI KESIMPULAN DAN SARAN ... 87

6.1 Kesimpulan ... 87

Daftar Pustaka ... 89


(12)

1

Bab I

Pendahuluan

1.1. Latar belakang

Jumlah dokumen makalah ilmiah digital di Indonesia terus bertambah sehingga masyarakat terutama akademisi memerlukan suatu sistem yang dapat mengakses dan menyediakan berbagai informasi sesuai kebutuhannya. Informasi tersebut dapat diperoleh menggunakan sistem temu-kembali informasi (Information retrieval) agar pengguna mendapatkan sumber informasi yang tepat sesuai kebutuhan pengguna dari sekumpulan dokumen yang besar (Manning, 2009).

TF-IDF adalah salah satu metode dari Information Retrieval untuk memberikan bobot hubungan suatu kata (term) terhadap dokumen. Metode TF-IDF yang digunakan menggunakan teknik pembobotan Savoy karena pada teknik pembobotan ini, bobot istilah telah dinormalisasi. Teknik ini memperhitungkan jumlah dokumen yang mengandung istilah yang bersangkutan dan jumlah keseluruhan dokumen. Sehingga jika sebuah istilah mempunyai frekuensi kemunculan yang sama pada dua dokumen belum tentu mempunyai bobot yang sama. Teknik ini sudah diterapkan pada dokumen berbahasa Indonesia dan cukup baik dalam memberikan bobot dokumen terurut(Baeza, 1999).

Data yang berisi daftar term dan hubungannya dengan dokumen disimpan dalam sebuah Inverted Index. Inverted index terdiri dari dua bagian utama, dictionary dan posting list. Struktur data Hash Table adalah pilihan sesuai digunakan sebagai dictionary karena waktu aksesnya relatif singkat dimana


(13)

2

pengurutan data tidak diutamakan. Posting List memerlukan struktur data penyimpanan yang terurut dan dinamis, Ordered Linked List diimplementasikan untuk Posting List karena ukuran Linked List yang dapat melebar menyesuaikan data yang ditambahkan. Ordered Linked List berdasarkan pada Linked List dengan penambahan pengurutan data (Robert, 2003).

Pencarian dokumen makalah ilmiah yang sudah ada sebagian besar menghasilkan informasi berdasarkan abstrak, judul,pengarang, penerbit, dan subjek makalah. bukan seluruh isi makalah. Peneliti mengembangkan Sistem Pemerolehan Informasi untuk dokumen makalah berbahasa Indonesia menggunakan seluruh isi teks dokumen.

1.2. Rumusan Masalah

Dari latar belakang di atas dapat dirumuskan beberapa masalah yang akan dikaji, yaitu:

1. Sejauh mana performa struktur data Hash dan LinkedList terhadap pencarian dokumen?

2. Bagaimana sistem temu balik informasi ini dapat menghasilkan dokumen yang relevan yang teranking berdasarkan query masukan oleh pengguna? 3. Seberapa relevankah dokumen hasil dari metode pembobotan TD-IDF


(14)

3

1.3. Tujuan

Penelitian ini bertujuan untuk mengimplementasikan sistem pemerolehan informasi untuk pencarian makalah ilmiah berbahasa Indonesia menggunakan seluruh isi teks makalah ilmiah dan mengetahui unjuk kerja sistem yang

menggunakan Inverted Index klasik dengan struktur data Hash Table dan Ordered LinkedList dengan operasi boolean dasar

1.4. Batasan Masalah

1. Sistem ini berfokus pada dokumen berbahasa Indonesia yang mengandung format Portable Document Format(PDF).

2. Dokumen hasil Query yang akan dipilih user telah tersedia dalam indeks sistem dan merupakan bagian dari koleksi pengujian sebanyak 281 dokumen berbahasa Indonesia.

3. Koleksi pengujian diambil dari kolesi dokumen makalah ilmiah berbahasa Indonesia.


(15)

4

1.5. Metodologi Penelitian

Dalam penelitian ini dilakukan tahap-tahap penelitian sebagai berikut: 1. Studi Pustaka

Studi pustaka penerapan inverted index klasik menggunakan pembobotan TF-IDF dengan operasi AND.

2. Pengumpulan Data

Pengumpulan dokumen-dokumen makalah ilmiah yang berbahasa Indonesia sebagai corpus sebanyak 281 dokumen.

3. Implementasi

Implementasi penerapan TF-IDF dan struktur data classical yaitu Inverted Index yang berbasis pada Hash dan Ordered LinkedList untuk mendukung inverted index dengan menggunakan rumus pembobotan Savoy.

4. Pengujian

Pengujian relevansi pencarian menggunakan recall precision dan Pengamatan unjuk kerja waktu query dengan operasi AND dengan dua belas kelompok kata yang mengandung frekuensi dokumen tertentu. Kelompok kata tersebut adalah kelompok kata yang memiliki dfk 1 sampai 2, dfk mendekati 140, dan dfk kurang lebih 280, 1 kata kunci pencarian hingga 4 kata kunci pencarian.


(16)

5

1.6. Sistematika Penulisan

Sistematika penulisan dan penyusunan tugas akhir ini dibagi menjadi 6 (enam) bab, yaitu :

BAB I PENDAHULUAN

Bab ini berisi penjelasan tentang latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian, dan sistematika dari penulisan tugas akhir.

BAB II LANDASAN TEORI

Bab ini berisi penjelasan tentang teori-teori yang berkaitan dengan penulisan tugas akhir.

BAB III ANALISIS DAN PERANCANGAN SISTEM

Bab ini berisi penjelasan mengenai identifikasi masalah yang ada, kerja dari sistem yang ada, dan analisis sistem yang meliputi analisis masalah dalam sistem lama dan analisis kebutuhan sistem baru. Terdapat pula perancangan sistem meliputi perancangan proses, perancangan basisdata, dan perancangan antarmuka untuk para pengguna sistem. BAB IV IMPLEMENTASI SISTEM

Bab ini berisi implementasi dari sistem yang sudah dirancang BAB V ANALISA HASIL


(17)

6 BAB VI KESIMPULAN DAN SARAN

Bab ini berisi tentang kesimpulan dan saran dari analisis dan perancangan sistem yang telah dilakukan dalam tugas akhir ini.


(18)

7

Bab II Landasan

Teori

2.1Information Retrieval

Sistem temu kembali informasi (information retrieval system) merupakan sistem untuk menemukan kembali (retrieve) informasi-informasi yang relevan terhadap kebutuhan pengguna dari suatu kumpulan informasi secara otomatis. Penekanannya ada pada penemukembalian informasi yang sifatnya tidak terstruktur. Salah satu contoh dari sistem temu kembali informasi adalah search-engine atau mesin pencarian (Mandala,2004).

Tujuan yang harus dipenuhi dari Sistem temu kembali informasi adalah bagaimana mendapatkan dokumen relevan dan tidak mendapatkan dokumen yang tidak relevan. Tujuan lainnya adalah bagaimana menyusun dokumen yang telah didapatkan tersebut ditampilkan terurut dari dokumen yang memiliki tingkat relevansi lebih tingi ke tingkat relevansi rendah. Penyusunan dokumen terurut tersebut disebut sebagai perangkingan dokumen.

Dokumen diwakili melalui set index term.Index term menyediakan logical view dari dokumen Jika kolesi dokumen cukup besar komputer akan

melakukan pengurangan jumlah set term melalui penghapusan

stopwords,operasi stemming. Operasi teks tersebut akan mengurangi kompleksitas dari dokumen dan mengubah logical view dari full text ke set


(19)

8

index term. Gambar 2.1 menunjukkan logical view yang digunakan sistem pemerolehan informasi(Baeza, 1999).

Gambar 2.1 Logikal view dari sebuah dokumen: dari full text menjadi sebuah set indeks term(Baeza, 1999).

Sistem pemerolehan informasi memiliki beberapa tahap.Pertama melakukan indentifikasi terhadap dokumen-dokumen yang akan digunakan, operasi yang akan dilakukan terhadap teks, dan model teks. Text operations mentransformasikan dokumen asal menjadi logicalview. Setelah logicalview diperoleh, dibuat indeks term untuk mempercepat pencarian terhadap jumlah data yang besar. Setelah dokumen selesai diindeks, proses retrieval dapat diinisiasi. Sebelum dikirim ke pengguna, dokumen retrieval di peringkat terlebih dahulu berdasarkan kemungkinan relevansinya(Baeza, 1999).


(20)

9

Gambar 2.2 Proses dari pemerolehan informasi(Baeza, 1999).

2.2Proses Indexing

Indeks kata dibuat dalam bentuk inverted index. Inverted index terdiri dari dua bagian utama, dictionary dan posting list. Dictionary menyimpan daftar kata, sedangkan posting list menyimpan identitas dokumen yang mengandung kata yang bersangkutan. Setiap kata terhubung dengan satu rangkaian posting list menggunakan penunjuk.(Manning,2009).


(21)

10 Parsing

Proses ini mengambil query dari kata-kata kunci pengguna dengan cara memotong string input berdasarkan tiap kata yang menyusunnya Elemen teks (string input) dipisahkan dengan teknik parsing menggunakan pemisahan string dilakukan berdasarkan operator pemisah untuk kemudian di eksekusi terhadap index.(Manning,2009).

Stopword Removing

Proses ini menghilangkan stopword pada string input yang menyusun dokumen dan query. Dalam proses ini digunakan sebuah daftar kata buang (stoplist) yaitu daftar kata-kata yang tidak digunakan (dibuang) karena tidak signifikan dalam membedakan dokumen atau query. Stoplist ini umumnya berupa kata tugas, kata hubung, kata bantu, yang mempunyai fungsi dalam kalimat penyusun dokumen tetapi tidak memiliki arti..

Stemming

Stemming merupakan suatu proses yang terdapat dalam sistem IR yang mentransformasi kata-kata yang terdapat dalam suatu dokumen ke kata-kata akarnya (root word) dengan menggunakan aturan-aturan tertentu. Sebagai contoh, kata bersama, kebersamaan, menyamai, akan


(22)

11

berbahasa Indonesia berbeda dengan stemming pada teks berbahasa Inggris. Pada teks berbahasa Inggris, proses yang diperlukan hanya proses menghilangkan sufiks. Sedangkan pada teks berbahasa Indonesia, selain sufiks, prefiks, dan konfiks juga dihilangkan.

Algoritma yang dibuat oleh Bobby Nazief dan Mirna Adriani ini memiliki tahap-tahap sebagai berikut:

1. Cari kata yang akan distem dalam kamus. Jika ditemukan maka diasumsikan bahwa kata tesebut adalah root word. Maka algoritma berhenti.

2. Inflection Suffixes (“-lah”, “-kah”, “-ku”, “-mu”, atau “

-nya”) dibuang. Jika berupa particles (“-lah”, “-kah”, “-tah”

atau “-pun”) maka langkah ini diulangi lagi untuk

menghapus Possesive Pronouns (“-ku”, “-mu”, atau “

-nya”), jika ada.

3. Hapus Derivation Suffixes (“-i”, “-an” atau “-kan”). Jika kata ditemukan di kamus, maka algoritma berhenti. Jika tidak maka ke langkah 3a

a. Jika “-an” telah dihapus dan huruf terakhir dari

kata tersebut adalah “-k”, maka “-k” juga ikut

dihapus. Jika kata tersebut ditemukan dalam kamus maka algoritma berhenti. Jika tidak ditemukan maka lakukan langkah 3b.


(23)

12

b. Akhiran yang dihapus (“-i”, “-an” atau “-kan”)

dikembalikan, lanjut ke langkah 4.

4. Hapus Derivation Prefix. Jika pada langkah 3 ada sufiks yang dihapus maka pergi ke langkah 4a, jika tidak pergi ke langkah 4b.

a. Periksa tabel kombinasi awalan-akhiran yang tidak diijinkan. Jika ditemukan maka algoritma berhenti, jika tidak pergi ke langkah 4b.

b. For i = 1 to 3, tentukan tipe awalan kemudian hapus awalan. Jika root word belum juga ditemukan lakukan langkah 5, jika sudah maka algoritma berhenti. Catatan: jika awalan kedua sama dengan awalan pertama algoritma berhenti. 5. Melakukan Recoding.

6. Jika semua langkah telah selesai tetapi tidak juga berhasil maka kata awal diasumsikan sebagai root word. Proses selesai.

Tipe awalan ditentukan melalui langkah-langkah berikut:

1. Jika awalannya adalah: “di-”, “ke-”, atau “se-” maka tipe

awalannya secara berturut-turut adalah “di-”, “ke-”, atau “se


(24)

13

2. Jika awalannya adalah “te-”, “me-”, “be-”, atau “pe-” maka

dibutuhkan sebuah proses tambahan untuk menentukan tipe awalannya.

3. Jika dua karakter pertama bukan “di-”, “ke-”, “se-”, “te-”,

“be-”, “me-”, atau “pe-” maka berhenti.

4. Jika tipe awalan adalah “none” maka berhenti. Jika tipe

awalan adalah bukan “none” maka awalan dapat dilihat pada

Tabel 2. Hapus awalan jika ditemukan.

Untuk mengatasi keterbatasan pada algoritma di atas, maka ditambahkan aturan-aturan dibawah ini(Agusta,2009):


(25)

14

 Jika kedua kata yang dihubungkan oleh kata penghubung adalah kata yang sama maka root word adalah bentuk

tunggalnya, contoh: “buku-buku” root word-nya adalah

“buku”.

 Kata lain, misalnya “bolak-balik”, “berbalas-balasan, dan

”seolah-olah”. Untuk mendapatkan root word-nya,kedua kata

diartikan secara terpisah. Jika keduanya memiliki root word yang sama maka diubah menjadi bentuk tunggal, contoh: kata

“berbalas-balasan”, “berbalas” dan “balasan” memiliki root

word yang sama yaitu “balas”, maka root word “berbalas

-balasan” adalah “balas”. Sebaliknya, pada kata “bolak-balik”,

“bolak” dan “balik” memiliki root word yang berbeda, maka

root word-nya adalah “bolak-balik”

2. Tambahan bentuk awalan dan akhiran serta aturannya.

 Untuk tipe awalan “mem-“, kata yang diawali dengan awalan

“memp-” memiliki tipe awalan “mem-”.

 Tipe awalan “meng-“, kata yang diawali dengan awalan

“mengk-” memiliki tipe awalan “meng-”.

2.3Pembobotan Kata

2.3.1 Term Frequency

Term Frequency (tf) factor, yaitu faktor yang menentukan bobot term pada suatu dokumen berdasarkan jumlah kemunculannya dalam dokumen tersebut.


(26)

15

Nilai jumlah kemunculan suatu kata (term frequency) diperhitungkan dalam pemberian bobot terhadap suatu kata. Semakin besar jumlah kemunculan suatu term (tf tinggi) dalam dokumen, semakin besar pula bobotnya dalam dokumen atau akan memberikan nilai kesesuian yang semakin besar.

Frekuensi kata dinotasikan sebagai , ′ dengan menotasikan kata and

′ sebagai urutan dokumen. Untuk sebuah dokumen d, jumlah bobot dapat diketahui dari bobot tf diatas.(Manning,2009).

2.3.2 Inverse Document Frecuency

Inverse Document Frequency (idf) factor, yaitu pengurangan dominansi term yang sering muncul di berbagai dokumen. Hal ini diperlukan karena term yang banyak muncul di berbagai dokumen, dapat dianggap sebagai term umum (common term) sehingga tidak penting nilainya. Sebaliknya faktor kejarangmunculan kata (term scarcity) dalam koleksi dokumen harus diperhatikan dalam pemberian bobot. Kata yang muncul pada sedikit dokumen harus dipandang sebagai kata yang lebih penting (uncommon tems) daripada kata yang muncul pada banyak dokumen. Pembobotan akan memperhitungkan faktor kebalikan frekuensi dokumen yang mengandung suatu kata (inverse document frequency).(Manning,2009).


(27)

16

Pembobotan TF-IDF mengkombinasikan frekuensi kata dan inverse document frequency . Pembobotan TF-IDF didapat dengan menggunakan rumus berikut (savoy) (Hasibuan, 2001)

Wik = ntfik * nidfk,

dimana ntfik = dan nidfk =

 � = � +� +� …. . +�

 � = �� �� �� … …

Dimana :

 Wik adalah bobot istilah k pada dokumen i.

 tfikmerupakan frekuensi dari istilah k dalam dokumen i.

 n adalah jumlah dokumen dalam kumpulan dokumen.

 dfk adalah jumlah dokumen yang mengandung istilah k.

 Maxj tfij adalah frekuensi istilah terbesar pada satu dokumen.

 Wd= bobot sebuah dokumen

Dengan kata lain, tf-idft,d berlaku untuk termt bobotdi dokumen d yang 1. Tertinggi jika t sering muncul dengan jumlah dokumen yang kecil. 2. Lebih rendah jika term muncul beberapa kali di dalam dokumen,

atau muncul di banyak dokumen.

3. Paling rendah jika term muncul di semua dokumen. (Manning,2009) ij j ik tf Max tf

 n df n k log log        


(28)

17

2.4Hash Table

Hash Table adalah struktur data yang menawarkan pemasukan dan pencarian data dengan sangat cepat. Ide dari Hash Table adalah memperbolehkan banyak dari kemungkinan key berbeda yang mungkin di petakan ke lokasi yang sama di dalam array dibawah fungsi tindakan pengindeksan. Hash Table beroperasi relatif cepat O(logN) kali. Untuk pembuatan daftar kamus kata, hash table adalah pilihan yang baik.(Robert,2003).

2.5 LinkedList

LinkedList adalah struktur data yang berbentuk node yang node lainnya menunjuk menggunakan pointer. Ukuran LinkedList menjadi dinamis karena ukurannya bertambah mengikuti jumlah node yang dimasukkan kedalam rantai node.(Kruse,1994).

2.6Precision dan Recall

Dalam Information Retrieval, sebuah metode perlu diukur keefektifannya. Dalam hal ini menggunakan pengukuran precision dan recall. Pengukuran precison dan recall dinyatakan dalam rumus berikut.

=#( � �� � )

#( �� � )

� = #( � �� � )


(29)

18

BAB III

ANALISA DAN PERANCANGAN SISTEM

3.1 Analisa Sistem

3.1.1 Gambaran Sistem

Sistem Pemerolehan Informasi Makalah Ilmiah dikembangkan untuk membantu pengguna mencari makalah ilmiah yang sesuai dan relevan dengan kata kunci yang dimasukkan oleh pengguna.

Arsitektur sistem pemerolehan informasi ditunjukkan pada gambar 3.1. Dokumen koleksi berupa file makalah ilmiah berbahasa Indonesia dengan ekstensi .pdf. Sistem melakukan text operation pada dokumen tersebut, berupa pembuangan kata buang dan stemming menggunakan algoritma Nazief & Adriani untuk teks berbahasa Indonesia, lalu melakukan proses indexing kata dan dokumen pada RDBMS. Sistem mengambil index dari RDBMS ke random access memory secara periodik di dalam Inverted Index serta melakukan pembobotan.

Pada proses pencarian pengguna memasukkan query, yang akan diproses oleh text operation. Sistem melakukan pencarian pada Inverted Index dengan operasi AND kemudian melakukan ranking berdasarkan bobot dokumen. Hasil dokumen yang sudah memiliki peringkat ditampilkan melalui user interface.


(30)

19 Text operation

Dokumen Koleksi

Text RDBMS Indexing

Ranking

Inverted Index Query Operations

User Interface

Searching

Text

retrieved docs

ranked docs

Interved file User need

Logical view

query

Logical view

Gambar 3.1. Rancangan Sistem Pemerolehan Informasi.

Inverted Index yang dibuat menggabungkan antara Hash Table sebagai dictionary dan Ordered Linked List sebagai posting list seperti pada gambar 3.2. Beberapa variabel untuk rumus perhitungan pembobotan Savoy di simpan pada term, posting, dan dokumen. Term menyimpan dfk dan nidfk. Posting menyimpan ntifk tfik dan w. Dokumen menyimpan maxtf.

Ordered Linked List berdasarkan pada Linked List, namun akan dilakukan sorting pada saat akan menambahkan data sehingga posting dimasukkan secara terurut berdasarkan iddocument. Inverted index akan dimodelkan lebih detil pada rancangan diagram kelas.


(31)

20

Gambar 3.2 Representasi Inverted Index

3.1.2 Analisis Kebutuhan Pengguna

3.1.2.1 Use Case Model

Term Dfk Nidfk Jurnal Ntfik Tfik w Jurnal Ntfik Tfik w Jurnal Ntfik Tfik w Id Judul Tahun Penulis Filename Maxtf Id Judul Tahun Penulis Filename Maxtf Id Judul Tahun Penulis Filename Maxtf

Jurnal Jurnal Jurnal

Term Dfk Nidfk Jurnal Ntfik Tfik w Jurnal Ntfik Tfik w Jurnal Ntfik Tfik w Id Judul Tahun Penulis Filename Maxtf Id Judul Tahun Penulis Filename Maxtf Id Judul Tahun Penulis Filename Maxtf


(32)

21

Sistem Pemerolehan Informasi Makalah yang akan dikembangkan diakses 2 aktor yaitu administrator dan pengguna. Tabel berikut menjelaskan deskripsi untuk setiap aktor:

Tabel 3.1. Tabel Use Case Model

Aktor Keterangan

Administrator 1. Dapat melakukan login sebagai administrator

2. Menangani pengelolaan data makalah

3. Dapat melakukan pencarian

4. Dapat melihat isi makalah

Pengguna 1. Dapat melakukan pencarian (searching) data

makalah sesuai kata kunci yang dimasukan

2. Dapat melihat isi dari makalah


(33)

22 Subsistem Pencarian Makalah

Ilmiah Berbahasa Indonesia Subsistem Operasi Teks

Menambahkan dokumen makalah

Mengubah data

dokumen makalah Login

Mencari dokumen makalah

Logout

Administrator

Pengguna

<< dep

end on >>

<<depend on>>

<<depend on>>

Sistem Pemerolehan Informasi Makalah Ilmiah Berbahasa Indonesia


(34)

23

3.1.2.3 Skenario Use Case

a. Login

Tabel 3.2 Login

Nama Use Case Login

ID Use Case 1

Prioritas Tinggi

Pelaku Bisnis utama

Administrator

Deskripsi Use case ini menggambarkan proses login

bagiAdministrator

Pra-kondisi Administrator mempunyai username dan password

Pemicu Administrator ingin melakukan penambahan atau

perubahan data makalah

Langkah umum Langkah 1:

User/administrator/staff memasukan username dan

password. Langkah 2:

User/administrator/staff menekan tombol login.

Langkah 3: Sistem mengecek validasi data masukan (username dan password)

user/administrator/Staff .

Langkah 4: Sistem masuk ke halaman utama


(35)

24

Administrator

Langkah alternatif

Alternatif-Langkah 4: Jika data ( username dan password) yang

dimasukkan tidak sesuai maka sistem akan mengembalikan ke halaman awal login. Kesimpulan Use case ini berhenti apabila administrator

telah berhasil masuk ke dalam halaman Administrator Pasca kondisi Administrator berhasil masuk ke halaman utama

Administrator.

Administrator tidak jadi melakukan login. Administrator gagal melakukan login.


(36)

25

b. Menambah Makalah

Tabel 3.3 Menambah Makalah

Nama Use Case Menambah Makalah

ID Use Case 2

Prioritas Sedang

Pelaku Bisnis utama

Administrator

Deskripsi Use case ini menggambarkan proses Administrator

menambahkan makalah

Pra-kondisi Administrator berhasil masuk ke halaman utama

Administrator.

Pemicu Administrator ingin melakukan penambahan makalah

Langkah umum Langkah 1:

Administrator Memilih menu menambah makalah

Langkah 2: Administrator

memasukkan data-data makalah dan File makalah.

Langkah 3:

Langkah 4: Sistem

Menyimpan data makalah baru beserta file makalah.

Langkah 5: Sistem masuk ke halaman utama


(37)

26 Administrator menekan tombol simpan

berhasil menyimpan

Langkah alternatif

Alternatif-Langkah 4: Jika data yang

dimasukkan tidak lengkap maka sistem akan

meminta Administrator untuk melengkapi data yang diperlukan.

Kesimpulan Use case ini berhenti apabila Sistem

telah berhasil Menyimpan data makalah baru.

Pasca kondisi Data makalah bertambah

c. Merubah Makalah

Tabel 3.4. Narasi Use Case Menambah Data Makalah

Nama Use Case Mengubah Data Makalah

ID Use Case 3

Prioritas High


(38)

27

Deskripsi Use case ini menggambarkan proses mengubah data

makalah

Pra-kondisi Administrator berada di halaman hasil pencarian

Pemicu Use case ini digunakan oleh administrator untuk

mengubah data makalah

Langkah utama Aksi aktor Respon sistem

Langkah 1 :

Administrator menge-klik link mengubah data makalah

Langkah 3 :

Administrator memasukkan data baru makalah dan menekan tombol ubah

Langkah 2 :

Sistem akan

menampilkan halaman

mengubah data

makalah

Langkah 4 :

Sistem akan

mengganti data lama dengan data baru yang telah dimasukkan


(39)

28

Langkah alternatif Alternatif langkah 3 : Administrator batal mengganti data makalah dan kembali ke halaman administrator

Kesimpulan Use case ini berhenti jika administrator telah berhasil

mengubah data makalah

Pasca kondisi Data di database telah berubah

d. Mencari Makalah

Tabel 3.5 Narasi Use Case Mencari Makalah

Nama Use Case Cari Makalah

ID Use Case 6

Prioritas High

Pelaku bisnis utama Administrator dan Pengguna

Deskripsi Use case ini menggambarkan proses pencarian

makalah

Pra-kondisi Aktor berada di halaman utama

Pemicu Use case ini digunakan untuk mencari makalah

Langkah utama Aksi aktor Respon sistem

Langkah 1 :

Aktor memilih menu cari makalah

Langkah 2 :


(40)

29 Langkah 3 :

Aktor memasukkan keyword dan menekan tombol cari

menampilkan halaman cari makalah

Langkah 4 :

Sistem akan

menampilkan hasil

pencarian

Langkah alternatif Alternatif langkah 3 : Pengguna batal melakukan pencarian sistem kembali ke halaman awal

Kesimpulan Use case ini berhenti jika pengguna telah

menemukan makalah yang dicari

Pasca kondisi Aktor berhasil menemukan makalah yang dicari

Aktor tidak berhasil menemukan makalah yang dicari karena tidak sesuai dengan keyword

e. Melihat Makalah

Tabel 3.6. Narasi Use Case Melihat Makalah

Nama Use Case Lihat Makalah


(41)

30

Prioritas High

Pelaku bisnis utama Administrator dan Pengguna

Deskripsi Use case ini menggambarkan proses melihat data

makalah

Pra-kondisi Aktor berada di halaman pencarian

Pemicu Use case ini digunakan oleh aktor untuk melihat data

makalah

Langkah utama Aksi aktor Respon sistem

Langkah 1 :

Aktor menge-klik link lihat makalah

Langkah 2 :

Sistem akan

menampilkan data

makalah

Langkah alternatif -

Kesimpulan Use case ini berhenti jika aktor telah berhasil melihat

data makalah

Pasca kondisi Aktor berhasil melihat data makalah

Aktor tidak berhasil melihat data makalah karena data tidak ditemukan


(42)

31

f. Logout

Tabel 3.7. Narasi Use Case Logout

Nama Use Case Logout

ID Use Case 5

Prioritas High

Pelaku bisnis utama Administrator

Deskripsi Use case ini menggambarkan proses logout bagi

administrator

Pra-kondisi Administrator berada pada halaman administrator

dan akan keluar dari halaman administrator

Pemicu Use case ini digunakan oleh administrator untuk

keluar dari halaman administrator

Langkah utama Aksi aktor Respon sistem

Langkah 1 :

Administrator menge-klik menu logout

Langkah 2 :

Sistem akan keluar

dari halaman

administrator

Langkah alternatif -


(43)

32

dari halaman administrator


(44)

33

3.2 Perancangan Sistem

3.2.1 Desain Logikal

3.2.1.1 Diagram Akifitas

3.2.1.3.1. Administrator Login


(45)

34

3.2.1.3.2. Menambah Makalah

Berikut adalah diagram dari aktifitas menambah makalah.

3.2.1.3.3. Merubah Data Makalah


(46)

35

3.2.1.3.4. Mencari Makalah

Berikut adalah diagram dari aktifitas mencari makalah .

3.2.1.3.5. Melihat Makalah


(47)

36

3.2.1.2 Model Kelas Analisis

Berikut ini adalah rancangan diagram model kelas analisis.

Login.jsp

beanLogin

Administrator Administrator

InvertedIndex

Jurnal

Word Posting

StopList benCariJurnal

beanKelolajurnal Pengguna

Adminhome.jsp

Halamancari.jsp

Tambahjurnal.jsp

Ubahhapusjurnal.jsp


(48)

37

3.2.1.3Diagram Sequence

3.2.1.3.1. Mencari Jurnal

Berikut adalah rancangan diagram sequence pencarian jurnal.

3.2.1.4 Diagram Kelas Analisis

3.2.1.3.1. Case Login

Berikut ini adalah rancangan diagram kelas pada case login

login.jsp

+validasiLoginAdministrator(in username : string, in password : string) : void +logoutAdministrator() : string

-username : string -password : string

beanLogin.java

used by

1 1

+setUserName(in : string) : void +getUserName() : string +setPassword(in : string) : void +getPassword() : string

+getAdmistrator(in username) : Administrator -username : string

-password : string

Administrator

<<boundary>>

<<entity>> <<controller>>

adminhome.jsp

used by


(49)

38

3.2.1.3.2. Case Ubah Data

Berikut ini adalah rancangan diagram kelas pada case ubah data

+setUserName(in : string) : void +getUserName() : string +setPassword(in : string) : void +getPassword() : string

+getAdmistrator(in username) : Administrator -username : string

-password : string Administrator

+tambahJurnal(in : Jurnal) : boolean +hapusJurnal(in : Jurnal) : boolean +editJurnal(in : Jurnal, in : Jurnal) : boolean

beanKelolaJurnal

-judul -tahun -penulis -fileName -maxtf -postlist

Jurnal

* 1

1 *

ubahhapusjurnal.jsp tambahjurnal.jsp


(50)

39

3.2.1.3.3. Case Pencarian Informasi Makalah

Berikut ini adalah rancangan diagram kelas pada case pencarian

+setUserName(in : string) : void +getUserName() : string +setPassword(in : string) : void +getPassword() : string

+getAdmistrator(in username) : Administrator -username : string

-password : string

Administrator

+Cari()

beanCariJurnal

-wordlist : HashMap

InvertedIndex

1

1 *

1

halamanhasilcari.jsp halamancari.jsp


(51)

40

3.2.1.3.4. Diagram Kelas Pemodelan Struktur Data Inverted Index

Berikut ini adalah rancangan diagram kelas untuk memodelkan Struktur Data Inverted Index.


(52)

41

3.2.1.5 Perancangan Database

3.2.1.3.1. Conceptual Design

Berikut ini adalah desain database secara konseptual.

status id_status description punya documents id_document max_term title path year authors id_status_ready id_status_3 id_status_2 posting frequency id_term id_document terms id_term stemmed_words posting_stopword frequency id_term id_document stopwords id_stopword stopwords dictionary id_dictionary root_word administrator id_administrator username pasword

1 * *

*

*

* CONCEPTUAL DATABASE DESIGN

ntfik w nidfk dfk sourceterm id_sourceterm is_root_word id_term * word 1 Status id_status (PK) description Documents id_document (PK) title path authors year id_status_ready (FK) id_status2 (FK) id_status3(FK) max_term Posting id_document (FK) id_term (FK) frequency ntfik w Terms id_term (PK) terms stemmed_words is_root_word dfk nidfk Posting_stopword id_document (FK) id_stopword (FK) frequency Stopwords id_stopword (PK) stopword Dictionary id_dictionary (PK) root_word Administrator id_administrator (PK) username pasword Sourceterm id_sourceterm (PK) id_term (FK) word is_root_word


(53)

42

3.2.2 Desain Fisikal

3.2.2.1Desain Antarmuka

3.2.1.1.1. Halaman Beranda dan Pencarian

Pada halaman pencarian jurnal terdapat kolom isian untuk mengisikan kata kunci pencarian. Pencarian dapat dimulai dengan menekan tombol keyboard Enter atau menekan tombol cari pada tampilan Gambar 3.4.

Gambar 3.4. Halaman Beranda

Copyright © 2012 | Login

Header Title


(54)

43

3.2.1.1.2. Halaman Hasil Pencarian

Pada halaman hasil pencarian, Gambar 3.5 ditampilkan tambahan informasi waktu pencarian dan daftar dokumen yang sudah diurutkan sesuai relevansinya terhadap kata kunci pencarian. Pengguna dapat melihat isi setiap dokumen dari hasil pencarian dengan membuka link judul dokumen yang dipilih.


(55)

44

3.2.1.1.3. Halaman Login Administrator

Halaman Login Administrator Gambar 3.6 menampilkan dua kolom isian yang diisi dengan nama pengguna dan kata sandi. Untuk melanjutkan masuk, pengguna dapat menekan tombol keyboard Enter atau menekan tombol masuk pada tampilan.

Header

Title

Home

Kelola Jurnal Logout

Nama Pengguna Kata Sandi

Masuk

Halaman Login Administrator

Copyright © 2012


(56)

45

3.2.1.1.4. Halaman Beranda Administrator

Halaman beranda administrator Gambar 3.7 terdapat menu “Kelola

Makalah” dengan submenu “Tambah Makalah” untuk menuju halaman tambah makalah dan submenu “Edit Makalah” untuk menuju halaman edit makalah.

Pengguna dapat menekan tombol beranda untuk kembali ke halaman utama

administrator. Tombol “Logout” berfungsi untuk keluar dari halaman utama

administrator.

Gambar 3.7. Halaman Beranda Administrator

Selamat datang di halaman Administrator

Copyright © 2012

Header Title

Beranda Kelola Makalah


(57)

46

3.2.1.1.5. Halaman Menambah Makalah

Pada halaman tambah makalah Gambar 3.8 administrator dapat

menambahkan dokumen makalah baru dengan memasukkan data judul, penulis, tahun pada kolom yang disediakan. Pada kolom file, administrator dapat memilih file makalah yang berformat pdf yang akan diupload. Setelah semua data lengkap administrator dapat menekan tombol simpan.

Gambar 3.8. Halaman Menambah Makalah

Judul Penulis File

Copyright © 2012

Header Title

Beranda Kelola Makalah

Logout

pilih


(58)

47

3.2.1.1.6. Halaman Kelola Makalah

Halaman kelola jurnal ditunjukkan pada Gambar 3.9 administrator dapat melakukan pengubahan data makalah yang meliputi judul makalah, nama penulis, dan tahun dengan menekan icon edit pada baris yang sesuai dengan dokumen yang akan dirubah datanya. Sebuah form akan muncul saat icon edit dipilih. Administrator dapat memasukkan data-data baru pada setiap kolom dan menekan tombol simpan jika akan menyimpan perubahan tersebut.

Header Title

Home Kelola Jurnal Logout

N o Judul Penulis Tahun N ama File

x x x

Judul Penulis Tahun File

Simpan

Cari

Menghapus dan Mengubah Data Jurnal

Copyright © 2012


(59)

48

BAB IV

IMPLEMENTASI SISTEM

4.1. Spesifikasi Perangkat Lunak dan Perangkat Keras

4.1.1. Spesifikasi Perangkat Lunak

Sistem menggunakan spesifikasi beberapa perangkat lunak pendukung untuk implementasi sistem pemrosesan teks dan sistem pencarian makalah ilmiah berbahasa Indonesia sebagai berikut :

1. Sistem operasi: Oracle Linux Server Release 5.8 2. Oracle 11g,

3. Oracle SQL Developer 3.0.04,

4. Java JDK 1.6.0 dan OODBC

5. Netbeans 6.9.1

6. Browser : Mozilla Firefox

4.1.2. Spesifikasi Perangkat Keras

Spesifikasi perangkat keras yang digunakan untuk implementasi sistem pemrosesan teks dan sistem pencarian makalah ilmiah berbahasa Indonesia adalah sebagai berikut :

4.1.Prosesor: Intel XEON E5620 (4 Core, 2, 40 GHz)

4.2.Memori RAM: 8 GB RDIMM

4.3.Hardisk: RAID 5 Logical 2TB


(60)

49

4.2. Implementasi Basis Data

Pada sistem ini diimplementasikan database teks untuk menyimpan hasil seluruh proses preprocessing dokumen jurnal yang berbasis RDBMS. Database sistem ini dibuat menggunakan Oracle 11g. Aplikasi pendukung untuk melakukan pengolahan query adalah SQL Developer.

Langkah – langkah dalam pembuatan database adalah seperti berikut :

1. Membuat database baru dengan login sebagai SYSTEM menggunakan SQL Developer.

2. Membuat tabel-tabel dalam database yang telah dibuat dengan menuliskan perintah create tabel diikuti nama tabel dan kolom-kolom dalam tabel. Di dalam database terdapat 8 tabel.


(61)

50

Gambar 4.1. Database berbasis RDBMS pada sistem pemrosesan teks

Berikut proses pembuatan tabel untuk database text RDBMS : 1. Tabel Status

Tabel 4.1. Tabel Status

Nama Field Tipe Data Ukuran Keterangan

id_status NUMBER - Primary key untuk

tabel status

description VARCHAR2 20 Deskripsi status

Berikut query untuk membuat tabel status :

2. Tabel Documents

Tabel 4.2. Tabel Documents

Nama Field Tipe Data Ukuran Keterangan

id_document NUMBER - Primary key untuk

tabel documents

title VARCHAR2 256 Judul dari dokumen

path VARCHAR2 256 Nama file dari

CREATE TABLE STATUS (

ID_STATUS NUMBER NOT NULL , DESCRIPTION VARCHAR2 (20) )

;

ALTER TABLE STATUS

ADD CONSTRAINT STATUS_DOCUMENTS_PK PRIMARY KEY ( ID_STATUS ) ;


(62)

51

dokumen

max_term NUMBER - Frekuensi terbesar

dari sebuah dokumen

authors VARCHAR2 100 Penulis dari dokumen

year NUMBER - Tahun dari dokumen

id_status_ready NUMBER - Status untuk dokumen

id_status2 NUMBER - Status untuk untuk

sistem pencarian

id_status3 NUMBER - Status untuk untuk

sistem pencarian

Berikut perintah untuk membuat tabel documents :

CREATE TABLE DOCUMENTS (

ID_DOCUMENT NUMBER NOT NULL , MAX_TERM NUMBER,

ID_STATUS_READY NUMBER NOT NULL , ID_STATUS2 NUMBER NOT NULL , ID_STATUS3 NUMBER NOT NULL , AUTHORS VARCHAR2 (100) , YEAR NUMBER

) ;

ALTER TABLE DOCUMENTS

ADD CONSTRAINT documents_PK PRIMARY KEY ( ID_DOCUMENT ) ;

ALTER TABLE DOCUMENTS

ADD CONSTRAINT DOCUMENTS_STATUS1_FK FOREIGN KEY (

ID_STATUS_READY )


(63)

52

(

ID_STATUS )

;

ALTER TABLE DOCUMENTS

ADD CONSTRAINT DOCUMENTS_STATUS2_FK FOREIGN KEY ( ID_STATUS2 ) REFERENCES STATUS ( ID_STATUS ) ;

ALTER TABLE DOCUMENTS

ADD CONSTRAINT DOCUMENTS_STATUS_FK FOREIGN KEY ( ID_STATUS3 ) REFERENCES STATUS ( ID_STATUS ) ;

3. Tabel Posting

Tabel 4.3. Tabel Posting

Nama Field Tipe Data Ukuran Keterangan

id_document NUMBER - Foreign key dari tabel documents

id_term NUMBER - Foreign key dari tabel terms

frequency NUMBER - Frekuensi kata pada dokumen

ntfik NUMBER - Hasil perhitungan

frequency/frequency terbesar pada sebuah dokumen


(64)

53

rumus perhitungannya

ndfik*ntfik

Berikut perintah untuk membuat tabel posting :

CREATE TABLE POSTING (

ID_DOCUMENT NUMBER NOT NULL ,

ID_TERM NUMBER NOT NULL ,

FREQUENCY NUMBER ,

NTFIK NUMBER , W NUMBER

) ;

ALTER TABLE POSTING

ADD CONSTRAINT POSTING_DOCUMENTS_FK FOREIGN KEY ( ID_DOCUMENT ) REFERENCES DOCUMENTS ( ID_DOCUMENT ) ;

ALTER TABLE POSTING

ADD CONSTRAINT POSTING_TERMS_FK FOREIGN KEY ( ID_TERM ) REFERENCES TERMS ( ID_TERM ) ;


(65)

54 4. Tabel Terms

Tabel 4.4. Tabel Terms

Nama Field Tipe Data Ukuran Keterangan

id_term NUMBER - Primary key untuk tabel

terms

terms VARCHAR2 50 Kata sebelum proses

stemming

stemmed_word VARCHAR2 50 Kata setelah proses

stemming

is_root_word CHAR 1 Keterangan apakah terms

ada di kamus

Berikut perintah untuk membuat tabel terms :

CREATE TABLE TERMS (

TERMS VARCHAR2 (50) ,

STEMMED_WORDS VARCHAR2 (50) , IS_ROOT_WORD CHAR (1)

) ;

ALTER TABLE TERMS


(66)

55 5. Tabel Posting_Stopword

Tabel 4.5. Tabel Posting_stopword

Nama Field Tipe Data Ukuran Keterangan

id_document NUMBER - Foreign key dari tabel

documents

id_stopword NUMBER - Foreign key dari tabel

stopwords

frequency NUMBER - Frekuensi stopword pada

dokumen

Berikut perintah untuk membuat tabel posting_stopword :

CREATE TABLE POSTING_STOPWORD (

FREQUENCY NUMBER,

ID_STOPWORD NUMBER NOT NULL , ID_DOCUMENT NUMBER NOT NULL )

;

ALTER TABLE POSTING_STOPWORD


(67)

56 6. Tabel Stopwords

Tabel 4.6. Tabel Stopwords

Nama Field Tipe Data Ukuran Keterangan

id_stopword NUMBER - Primary key untuk tabel

stopwords

stopword VARCHAR2 20 Daftar kata buang

Berikut perintah untuk tabel stopwords :

FOREIGN KEY ( ID_DOCUMENT ) REFERENCES DOCUMENTS ( ID_DOCUMENT ) ;

ALTER TABLE POSTING_STOPWORD

ADD CONSTRAINT POSTING_STOPWORD_STOPWORDS_FK FOREIGN KEY ( ID_STOPWORD ) REFERENCES STOPWORDS ( ID_STOPWORD ) ;

CREATE TABLE STOPWORDS (

ID_STOPWORD NUMBER NOT NULL , STOPWORD VARCHAR2 (20) }

;

CREATE INDEX STOPWORDS__IDX ON STOPWORDS (

ID_STOPWORD ASC , STOPWORD ASC )

;

ALTER TABLE STOPWORDS


(68)

57 7. Tabel Dictionary

Tabel 4.7. Tabel Dictionary

Nama Field Tipe Data Ukuran Keterangan

id_dictionary NUMBER - Primary key untuk tabel

dictionary

root_word VARCHAR2 20 Daftar kata dasar Bahasa

Indonesia

Berikut perintah untuk membuat tabel dictionary :

8. Tabel Administrator

Tabel 4.8. Tabel Administrator CREATE TABLE DICTIONARY

(

ID_DICTIONARY NUMBER NOT NULL , ROOT_WORD VARCHAR2 (20)

) ;

CREATE UNIQUE INDEX DICTIONARY__IDX ON DICTIONARY (

ID_DICTIONARY ASC , ROOT_WORD ASC

) ;

ALTER TABLE DICTIONARY

ADD CONSTRAINT DICTIONARY_PK PRIMARY KEY ( ID_DICTIONARY ) ;


(69)

58

Nama Field Tipe Data Ukuran Keterangan

id_administrator NUMBER - Primary key untuk tabel

administrator

username VARCHAR2 10 Username

pasword VARCHAR2 20 Password

Berikut perintah yang digunakan untuk membuat tabel administrator :

9. Tabel Sourceterm

Tabel 4.9. Tabel Sourceterm

Nama Field Tipe Data Ukuran Keterangan

id_sourceterm NUMBER - Primary key

untuk tabel

sourceterm

id_term NUMBER - Foreign key dari

tabel terms

word VARCHAR2 50 Kata tanpa

proses stemming CREATE TABLE ADMINISTRATOR

(

ID_ADMINISTRATOR NUMBER NOT NULL , USERNAME VARCHAR2 (10) ,

PASWORD VARCHAR2 (20) )

;

ALTER TABLE ADMINISTRATOR

ADD CONSTRAINT ADMINISTRATOR_PK PRIMARY KEY ( ID_ADMINISTRATOR ) ;


(70)

59

is_root_word CHAR 1 Keterangan

apakah terms

ada di kamus

Berikut perintah yang digunakan untuk membuat tabel administrator :

4.3. Implementasi Inverted Index

Dari pemodelan Inverted Index di dalam bab sebelumnya, di dalam struktur Inverted Index pada bagian Ordered Linked List dilakukan sorting pada saat akan menambahkan data sehingga posting dimasukkan secara terurut berdasarkan id document. Setiap data posting baru yang akan ditambahkan dilakukan sequensial search dari indek posisi 0 dengan cara melakukan casting LinkedList ke ListIterator dan menemukan posisi indek yang tepat berdasarkan nomor id dokumen data posting baru dibandingkan dengan id dokumen yang sudah ada di dalam List. Proses sorting pada saat penambahan posting di implementasikan dalam listing code 1 pada method addWord di dalam kelas InvertedIndex.

Listing Code 1. Method addWord

CREATE TABLE SOURCETERM (

ID_SOURCETERM INTEGER NOT NULL , WORD VARCHAR2 (50) ,

IS_ROOT_WORD CHAR (1) , ID_TERM INTEGER NOT NULL )

;

ALTER TABLE SOURCETERM

ADD CONSTRAINT SOURCETERM_PK PRIMARY KEY ( ID_SOURCETERM ) ;


(71)

60 Term freqtambah = getWordlist().get(term); //ambil Posting Listnya

ListIterator<Posting> iteratorPosting = freqtambah.getPostlist().listIterator(); //selama iterator posting punnya data berikutnya

while (iteratorPosting.hasNext()) {

//jika jurnal_id Jurnal Posting sama dengan jurnal_id dari parameter

If(iteratorPosting.next().getJurnal().getJurnal_id()==aPost.getJurnal().getJurnal_ id()) {

Posting freqtambahPosting = iteratorPosting.previous();

return; } iteratorPosting.previous(); if( iteratorPosting.next().getJurnal().getJurnal_id()>aPost.getJurnal().getJurnal_id() ) {

//tambahkan ke posting ke index sebelum

Posting freqtambahPosting = iteratorPosting.previous(); iteratorPosting.add(aPost);

return; }

}

if (!iteratorPosting.hasNext()) { iteratorPosting.add(aPost);

Posting freqtambahPosting = iteratorPosting.previous();

} return; }

Untuk melakukan search sistem akan menyaring dan memproses kata kunci masukan dari pengguna kemudian mengakses hashtable Term dengan kata kunci masukan dari pengguna sebagai key. Sistem akan memperoleh sebuah objek Term untuk setiap kata kunci dan melakukan interseksi dengan method AND pada

Listing Code 2 antar posting list pada setiap Term dengan mencari id dokumen yang sama. Interseksi akan menghasilkan sebuah posting list baru dengan bobot posting yang sudah diakumulasi untuk setiap posting yang memiliki id dokumen sama pada saat Interseksi. Jumlah term yang memiliki posting list yang harus di interseksikan adalah sama dengan jumlah kata kunci yang dapat ditemukan oleh sistem di dalam Hashtable Term. Posting hasil interseksi terakhir diurutkan dari


(72)

61

bobot terbersar hingga bobot terkecil. Listing code untuk pencarian dapat dilihat pada lampiran bagian b.

Dalam proses interseksi antara dua term sistem mengambil posting masing-masing term dan melakukan casting ke type objek ListIterator agar dapat dilakukan traversal pada posting. Posting yang memiliki dokumen paling sedikit akan diprioritaskan sebelum posting yang lain. Untuk dapat melakukan traversal di masing-masing posting maka dibuat variabel objek bertipe Posting penunjuk bantu1 dan bantu2. Penunjuk bantu1 dan bantu2 mulai dari indek pertama dan mulai membandingkan id dokumen masing-masing. Jika ditemukan dokumen yang sama maka akan diambil posting keduanya dan mengakumulasikan bobot kedua posting kemudian bantu1 bergeser ke posisi index berikutnya. Jika pada posisi bantu2 yang sedang ditunjuk tidak ditemukan dokumen yang sama, bantu2 akan bergeser ke posisi indek berikutnya hingga ditemukan atau sampai tidak ada lagi indek berikutnya. Hasil posting interseksi dikembalikan dengan bobot terakumulasi.

Listing Code 2. Method AND

/*---method untuk operasi AND---*/

public Term AND(Term term1, Term term2) {

ListIterator<Posting> t1;

ListIterator<Posting> t2;

/*jika term1 mempunyai dokumen lebih sedikit dengan term2*/

if (term1.getPostlist().size() < term2.getPostlist().size()) {

t1 = term1.getPostlist().listIterator();

t2 = term2.getPostlist().listIterator();


(73)

62

t1 = term2.getPostlist().listIterator();

t2 = term1.getPostlist().listIterator();

}

Term hasil = new Term("(" + term1.getTerm() + " AND " + term2.getTerm() + ")");

hasil.setDfk(0);

System.out.println("");

System.out.println("Kata yang dicari " + "(" + term1.getTerm() + " AND " + term2.getTerm() + ")");

System.out.print(term1.getTerm() + " | " + term1.getDfk() + " | ");

/*menampilkan kata1*/

for (int i = 0; i < term1.getPostlist().size(); i++) {

System.out.print(term1.getPostlist().get(i).getJurnal().getJurnal_id() + " , " + term1.getPostlist().get(i).getTfik() + "| ");

}

System.out.println("");

/*menampilkan kata2*/

System.out.print(term2.getTerm() + " | " + term2.getDfk() + " | ");

for (int i = 0; i < term2.getPostlist().size(); i++) {

System.out.print(term2.getPostlist().get(i).getJurnal().getJurnal_id() + " , " + term2.getPostlist().get(i).getTfik() + "| ");

}

System.out.println("");

/*AND operator*/

Posting bantu1 = t1.next(); /*membuat bantu1 untuk kata t1.next*/

/*membuat penunjuk yang digunakan untuk membandingkan dokumen*/

int penunjuk = 0;

penunjuk = bantu1.getJurnal().getJurnal_id();

Posting bantu2 = t2.next(); /*membuat bantu1 untuk kata t2.next*/

t1.previous();

t2.previous();

while (t1.hasNext()) { //selama t1 mempunyai next


(74)

63

if (bantu2.getJurnal().getJurnal_id()==penunjuk) {

/*pengecekan frekuensi yg plg sedikit*/

if (bantu2.getTfik() > bantu1.getTfik()) {

hasil.getPostlist().add(bantu1);

bantu1.setW(bantu1.getW()+bantu2.getW());

hasil.setDfk(hasil.getDfk() + bantu1.getWord().getDfk());

} else {

hasil.getPostlist().add(bantu2);

bantu2.setW(bantu2.getW()+bantu1.getW());

hasil.setDfk(hasil.getDfk() + bantu2.getWord().getDfk());

}

bantu1 = t1.next(); /*bantu1 bergeser ke selanjutnya*/

penunjuk = bantu1.getJurnal().getJurnal_id();

/*jika kata kedua masi mempunyai dokumen*/

if (t2.hasNext()) {

bantu2 = t2.next(); /*kata2 kedua akan bergeser*/

/*jika tidak proses selesai*/

} else {

/*jika lokasi dok kata1 > kata2 break*/

if

(bantu1.getJurnal().getJurnal_id()>bantu2.getJurnal().getJurnal_id()) {

break;

}

}

/*jk kt2 puny nok dok < penunjuk, kt2 geser*/

} else if (bantu2.getJurnal().getJurnal_id()<penunjuk) {

if (t2.hasNext()) {

bantu2 = t2.next(); /*kata kedua akan bergeser*/

} /*jk kata2 puny no dok > penunjuk, penunjuk geser*/

} else if (bantu2.getJurnal().getJurnal_id()>penunjuk) {

bantu1 = t1.next(); /*kata pertama akan bergeser*/


(75)

64 } /*jk t1 tdk puny next*/

if (!t1.hasNext()) {

System.out.println(t1.previous()+"doesnt have next");

t1.next();

/*cek bantu1 = bantu2*/

if

(bantu1.getJurnal().getJurnal_id()==bantu2.getJurnal().getJurnal_id()) {

/*cek frekuensi bantu2 > frekuensi bantu1, tmbhkn bantu1 */

if (bantu2.getTfik() > bantu1.getTfik()) {

hasil.getPostlist().add(bantu1);

hasil.setDfk(hasil.getDfk() + bantu1.getWord().getDfk());

bantu1.setW(bantu1.getW()+bantu2.getW());

/*jk tdk tambhkn bantu2*/

} else {

hasil.getPostlist().add(bantu2);

hasil.setDfk(hasil.getDfk() + bantu2.getWord().getDfk());

bantu2.setW(bantu2.getW()+bantu1.getW());

}

} /*cek no dok kata1 > kata2*/

if

(bantu1.getJurnal().getJurnal_id()>bantu2.getJurnal().getJurnal_id()) {

/*selama no dok kata1 > kata2, t2 geser*/

while

(bantu1.getJurnal().getJurnal_id()>bantu2.getJurnal().getJurnal_id()&&t2.hasNext() ) {

bantu2 = t2.next();

/*jk nodok kata1 = kata2*/

if

(bantu2.getJurnal().getJurnal_id()==bantu1.getJurnal().getJurnal_id()) {

/*jk frek dok kt2 > k1, tmbh bantu1*/

if (bantu2.getTfik() > bantu1.getTfik()) {


(76)

65

hasil.setDfk(hasil.getDfk() +

bantu1.getWord().getDfk());

bantu1.setW(bantu1.getW()+bantu2.getW());

} /*jk tdk tmbh bantu2*/ else {

hasil.getPostlist().add(bantu2);

hasil.setDfk(hasil.getDfk() +

bantu2.getWord().getDfk());

bantu2.setW(bantu2.getW()+bantu1.getW());

}

}

}

}

}

}

return hasil;

}

4.4. Implementasi Antarmuka

4.5.3. Halaman Pencarian

Pada halaman pencarian jurnal terdapat kolom isian untuk mengisikan kata kunci pencarian. Pencarian dapat dimulai dengan menekan tombol keyboard Enter atau menekan tombol cari pada tampilan Gambar 4.3.


(77)

66

Gambar 4.3 Halaman Utama Pencarian Jurnal

4.5.4. Halaman Hasil Pencarian

Pada halaman hasil pencarian, Gambar 4.4 ditampilkan tambahan informasi waktu pencarian dan daftar dokumen yang sudah diurutkan sesuai relevansinya terhadap kata kunci pencarian. Pengguna dapat melihat isi setiap dokumen dari hasil pencarian dengan membuka link judul dokumen yang dipilih.

Gambar 4.4 Halaman Hasil Pencarian

4.5.5. Halaman Login Administrator

Halaman Login Administrator Gambar 4.5 menampilkan dua kolom isian yang diisi dengan nama pengguna dan kata sandi. Untuk melanjutkan masuk,


(78)

67

pengguna dapat menekan tombol keyboard Enter atau menekan tombol masuk pada tampilan.

Gambar 4.5 Halaman Login Administrator

4.5.6. Halaman Utama Administrator

Halaman utama administrator Gambar 4.6 terdapat menu “Kelola

Makalah” dengan submenu “Tambah Makalah” untuk menuju halaman tambah makalah dan submenu “Edit Makalah” untuk menuju halaman edit makalah.

Pengguna dapat menekan tombol beranda untuk kembali ke halaman utama

administrator. Tombol “Logout” berfungsi untuk keluar dari halaman utama


(79)

68

Gambar 4.6 Halaman Utama Administrator

4.5.7. Halaman Tambah Makalah

Pada halaman tambah makalah Gambar 4.7 administrator dapat

menambahkan dokumen makalah baru dengan memasukkan data judul, penulis, tahun pada kolom yang disediakan. Pada kolom file, administrator dapat memilih file makalah yang berformat pdf yang akan diupload. Setelah semua data lengkap administrator dapat menekan tombol simpan.


(80)

69

Gambar 4.7 Halaman Tambah Makalah

4.5.8. Halaman Kelola Jurnal

Halaman kelola jurnal ditunjukkan pada Gambar 4.8 administrator dapat melakukan pengubahan data makalah yang meliputi judul makalah, nama penulis, dan tahun dengan menekan icon edit pada baris yang sesuai dengan dokumen yang akan dirubah datanya. Sebuah form seperti pada Gambar 4.9 akan muncul saat icon edit dipilih. Administrator dapat memasukkan data-data baru pada setiap kolom dan menekan tombol simpan jika akan menyimpan perubahan tersebut.


(81)

70

Gambar 4.8 Halaman Edit Makalah

Gambar 4.9 Form Edit Data Makalah

4.5. Implementasi Control

4.4.1. Subsistem Server Pemrosesan Dokumen


(82)

71

beanEditJurnal beanEditJurnal.java

beanLogin beanLogin.java

beanTambahJurnal beanTambahJurnal.java

DocProcessing DocProcessing.java

DbConnection DbConnection.java

DocProcess DocProcess.java

JobScheduler JobScheduler.java

Tokenizer Tokenizer.java

4.4.2. Subsistem Pencarian

Tabel 4.11. Implementasi Control Subsistem Pencarian

Tokenizer Tokenizer.java

beanBuildIndex beanBuildIndex.java

beancarijurnal beancarijurnal.java

Beankelolajurnal beankelolajurnal.java

beanlogin beanlogin.java

beanTambahJurnal beanTambahJurnal.java

DatabaseConnector DatabaseConnector.java

InformationRetrieval InformationRetrieval.java

JobScheduler JobScheduler.java


(83)

72

4.6. Implementasi Model

4.5.1. Subsistem Server Pemrosesan Dokumen

Tabel 4.10. Implementasi Model Subsistem Pemrosesan Dokumen

Administrator Administrator.java

Documents.java Documents.java

Posting.java Posting.java

Stemming.java Stemming.java

Terms.java Terms.java

4.5.2. Subsistem Pencarian

DaftarJurnal DaftarJurnal.java

DocFilter DocFilter.java

InvertedIndex InvertedIndex.java

Jurnal Jurnal.java

JurnalScore JurnalScore.java

Posting Posting.java

StopList StopList.java


(84)

73

BAB V

ANALISA HASIL

5.1. Pengujian Relevance Feedback

Dari 281 dokumen yang di diproses dalam indexing dengan menggunakan jumlah kamus kata dasar 3278 dan 395 kata buang kata menghasilkan 25737 term yang digunakan dalam pengujian.

Pengujian menggunakan media kuesioner yang dibagikan kepada 4 orang mahasiswa Sanata Dharma Yogyakarta. kuesioner dibagi menjadi 2 tahap, yaitu form kuesioner precision dan form kuesioner recall. Pada tahap pertama responden diminta untuk melakukan pencarian, mencatat seluruh dokumen hasil pencarian, dan menandai dokumen yang relevan. Pada tahap kedua responden diminta untuk melihat seluruh koleksi daftar dokumen dan menandai dokumen yang relevan terhadap kata kunci yang digunakan dalam pencarian sebelumnya.

1. Kata kunci “penambangan data”

Sistem menghasilkan 2 dokumen dari kata kunci “penambangan data”. Dari 2

dokumen hasil pencarian, responden menemukan 1 dokumen yang relevan. Pada tahap kedua responden menemukan 8 dokumen yang relevan dari 281 dokumen koleksi. Perhitungan recall diperoleh. Hasil perhitungan Recall dan precision dapat dilihat padat tabel 5.1.

Berikut dokumen hasil pencarian.

1. ANALISIS ASOSIASI HASIL EVALUASI PEMBELAJARAN

MEMPERGUNAKAN ALGORITMA APRIORI

2. ARSITEKTUR DATA SPASIAL UNTUK INFORMASI TEMATIS


(85)

74

Tabel 5.1 Recal Precision query “penambangan data”

ID Relevan Recall Precision

257 R 0,125 1

115 0,125 0,5

Tabel 5.2 Interpolasi Recall Precision query “penambangan data”

Recall Precision 0% 100% 10% 100%

20% 0%

30% 0%

40% 0%

50% 0%

60% 0%

70% 0%

80% 0%

90% 0%

100% 0%

Dari tabel 5.2 dan Gambar 5.1 dapat dilihat diperoleh precision 100% dari nilai recall 0-10% dan menurun hingga 0% pada nilai recall 20-100%.. Hal ini dikarenakan dokumen relevan yang ditemukan responden yaitu 8 dokumen lebih banyak daripada dokumen relevan yang ditemukan menurut sistem yaitu 1,

dimana beberapa dari dokumen tersebut mengandung kata “data mining” yang


(86)

75

Gambar 5.1 Grafik Recall precision query “penambangan data”

Istilah “penambangan data” memiliki sinonim dalam bahasa inggris sehingga

dilakukan pengujian dengan kata kunci “data mining” untuk memberi

perbandingan.

Dokumen hasil pencarian dengan kata kunci “data mining”.

1. PERANCANGAN APLIKASI DATA MINING STUDI KASUS: ANALISIS

KEPUASAN PELANGGAN PT. XYZ

2. PENGGUNAAN ANALISA ASOSIASI (ASSOCIATION ANALYSIS)

DALAM PEMILIHAN LOKASI WISATA BERDASARKAN KARAKTERISTIK SOSIO-DEMOGRAFIS WISATAWAN

3. KLASIFIKASI EVENT PADA PROCESS LOGS MENGGUNAKAN

MODEL REGRESI LOGISTIK

4. PENERAPAN DATA MINING MENGGUNAKAN ALGORITMA

ASSOCIATION RULES UNTUK MEMPREDIKSI PILIHAN PROGRAM STUDI DI SEKOLAH TINGGI XYZ

0% 20% 40% 60% 80% 100% 120%

P

re

ci

si

o

n

Recall

Interpolasi


(87)

76

5. Market Basket Analysis Berbasis Classifier Characterictic untuk MENENTUKAN PERSENTASE MODEL DESKRIPSI MEDIA RELATIONS PERGURUAN TINGGI

6. ANALISIS ASOSIASI HASIL EVALUASI PEMBELAJARAN

MEMPERGUNAKAN ALGORITMA APRIORI

7. ANALISIS KEMUNGKINAN PENGUNDURAN DIRI CALON

MAHASISWA DI STMIK STIKOM BALI DENGAN ALGORITMA BAYESIAN CLASSIFICATION

8. PENGOLAHAN DATA WAREHOUSE AKADEMIK SEBAGAI

PENUNJANG KEPUTUSAN DI PERGURUAN TINGGI

9. PERANCANGAN e-HEALTH MANAGEMENT SYSTEM

10.CUSTOMER RELATIONSHIP MANAGEMENT (CRM) UNTUK USAHA

KECIL DAN MENENGAH

11.PEMANFAATAN BUSINESS INTELLIGENCE DALAM PERENCANAAN

PEMBANGUNAN NASIONAL: STUDI KASUS BADAN PERENCANAAN PEMBANGUNAN NASIONAL

12.PEMANFAATAN KNOWLEDGE MANAGEMENT SYSTEM BERBASIS

OPENSOURCES UNTUK INSTANSI PEMERINTAH STUDI KASUS: DIREKTORAT E-GOVERNMENT KEMENTERIAN KOMUNIKASI DAN INFORMATIKA

13.DASHBOARDING INFORMATION SYSTEMS FOR THE EDUCATION


(88)

77

14.EFISIENSI MATRIKS: PERBEDAAN SISTEM TUNGGAL DAN

CLUSTER DENGAN ALGORITMA MAPREDUCE

15.MODEL KNOWLEDGE MANAGEMENT PADA PERUSAHAAN

DISTRIBUTOR FARMASI DAN CONSUMER PRODUCT

16.SISTEM ANALISIS OPINI MICROBLOGGINGBERBAHASA INDONESIA

17.FAKTOR KONTEKSTUAL DALAM PEMANFAATAN WEB SEBAGAI

MEDIA KOMUNIKASI CSR OLEH PERUSAHAAN

18.ALGORITMA UNTUK EKSTRAKSI TABEL HTML DI WEB

19.PERBANDINGAN ALGORITMA BINERISASI PADA CITRA TULANG

ABNORMAL TELAPAK TANGAN MANUSIA

20.PENJADWALAN PERKULIAHAN DENGAN METODE COMPACT

GENETIC ALGORITHM (STUDI KASUS UNIVERSITAS WIDYATAMA)

21.PENERAPAN CRM DENGAN SISTEM INFORMASI BERBASIS WEB

UNTUK KEPUASAN PELANGGAN

22.MUSIC THERAPY ISSUES ON MUSIC INFORMATION RETRIEVAL

Sistem menghasilkan 22 dokumen dari kata kunci “data mining”. Dari 22 dokumen hasil pencarian, responden menemukan 8 dokumen yang relevan. Pada tahap kedua responden menemukan 8 dokumen yang relevan dari 281 dokumen koleksi. Perhitungan recall diperoleh. Hasil perhitungan Recall dan precision dapat dilihat padat tabel 5.4. dan tabel 5.5.

Tabel 5.4 Recal Precision query “data mining” No Urut Relevan Recall Precision


(89)

78

2 R 0,25 1

3 R 0,375 1

4 R 0,5 1

5 R 0,625 1

6 R 0,75 1

7 R 0,875 1

8 0,875 0,875

9 0,875 0,777778

10 0,875 0,7

11 0,875 0,636364

12 0,875 0,583333

13 0,875 0,538462

14 0,875 0,5

15 0,875 0,466667

16 0,875 0,4375

17 0,875 0,411765

18 0,875 0,388889

19 R 1 0,421053

20 1 0,4

21 1 0,380952

22 1 0,363636

Tabel 5.5 Interpolasi Recall Precision query “data mining” Recall Precision

0% 100% 10% 100% 20% 100% 30% 100% 40% 100% 50% 100% 60% 100% 70% 100% 80% 100% 90% 100% 100% 42%

Dapat dilihat pada gambar 5.2 precision 100% didapat pada nilai recall 0% sampai 90% dan menurun ke 42% pada nilai recal 100%. Jika dibandingkan


(90)

79

dengan grafik pada gambar 5.1 query “data mining” menghasilkan precision

yang lebih baik karena dokumen yang mengandung kata “data mining” lebih banyak jumlahnya daripada dokumen yang mengandung kata “penambangan data” .

Gambar 5.2 Grafik Recall precision query “data mining”

2. Kata kunci “pemerolehan informasi”

Sistem menghasilkan 1 dokumen dari kata kunci “pemerolehan informasi”. Dari 1 dokumen hasil pencarian, responden menemukan 1 dokumen yang relevan. Pada tahap kedua responden menemukan 5 dokumen yang relevan dari 281 dokumen koleksi. Perhitungan recall diperoleh. Hasil perhitungan Recall dan precision dapat dilihat padat tabel 5.3.

0% 20% 40% 60% 80% 100% 120%

Interpolasi


(1)

92

ResultSet resultDataPosting = getDataPostingServer(id_document); while (resultDataPosting.next()) {

Posting post=new Posting();

Term word=new Term(resultDataPosting.getString("STEMMED_WORDS")); post.setWord(word);

post.setTfik(resultDataPosting.getInt("frequency")); post.setJurnal(jurnal);

jurnal.getPostlist().add(post);

index.addWord(word.getTerm().toLowerCase(), post);

} }

System.out.println("hitung bobot"); index.IndexScoring();

System.out.println("INDEXING SELESAI");

} catch (SQLException ex) { ex.printStackTrace(); }

}

public void addWord(String term, Posting aPost) { //jika wolrdlist mengandung kata @param term if (this.wordlist.containsKey(term)) {

//jika kata yang ditambahkan sama dengan kata di wordlist if (getWordlist().get(term).getTerm().compareTo(term) == 0) {

Term freqtambah = getWordlist().get(term); //ambil Posting Listnya

ListIterator<Posting> iteratorPosting = freqtambah.getPostlist().listIterator();

//selama iterator posting punnya data berikutnya while (iteratorPosting.hasNext()) {

//jika filename Jurnal Posting sama dengan filename dari //parameter

if (iteratorPosting.next().getJurnal().getJurnal_id() == aPost.getJurnal().getJurnal_id()) {

Posting freqtambahPosting = iteratorPosting.previous();

//tambahkan frekuensi katanya saja Tfik

//freqtambahPosting.setTfik(freqtambahPosting.getTfik() + 1);

return; }

iteratorPosting.previous();

if (iteratorPosting.next().getJurnal().getJurnal_id() > aPost.getJurnal().getJurnal_id()) { //tambahkan ke posting ke index sebelum

Posting freqtambahPosting = iteratorPosting.previous(); iteratorPosting.add(aPost);

//freqtambahPosting.setTfik(freqtambahPosting.getTfik() + 1); return;


(2)

93

}

if (!iteratorPosting.hasNext()) { iteratorPosting.add(aPost);

Posting freqtambahPosting = iteratorPosting.previous(); // freqtambahPosting.setTfik(freqtambahPosting.getTfik() + 1); }

return; }

//jika tidak mengandung kata @param term } else {

Term baru = new Term(term); // aPost.setTfik(aPost.getTfik()+1); baru.getPostlist().add(aPost);

getWordlist().put(baru.getTerm(), baru);

} }

public void IndexScoring() { int n = DaftarJurnal.jurnal.size();

Enumeration<String> key = wordlist.keys(); Enumeration<Term> elements = wordlist.elements(); while (key.hasMoreElements()) {

Term word = wordlist.get(key.nextElement());

LinkedList<Jurnal> jurnaltemp = new LinkedList<Jurnal>(); LinkedList<Posting> post = word.getPostlist();

for (Posting posting : post) {

if (!jurnaltemp.contains(posting.getJurnal())) { jurnaltemp.add(posting.getJurnal()); }

}

word.setDfk(jurnaltemp.size()); double nidfk;

try {

nidfk = (Math.log10((n / word.getDfk()))) / (Math.log10(n)); } catch (ArithmeticException ex) {

nidfk = 0; }

word.setNidfk(nidfk); for (Posting posting : post) { try {

posting.setNtfik((posting.getTfik() / posting.getJurnal().getMaxtf())); } catch (ArithmeticException ex) {

posting.setNtfik(0); }

double w = (posting.getNtfik() * (float) word.getNidfk()); posting.setW((float) w);

} } }

b.

Source Code Pencarian

public class beancarijurnal extends HttpServlet { InformationRetrieval ir=new InformationRetrieval();


(3)

94

/**

* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request

* @param response servlet response

* @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs

*/

protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8"); double start = System.currentTimeMillis();

ArrayList<JurnalScore> Js=null;

String input_query = request.getParameter("txtsearch"); if(input_query.trim().isEmpty()){

Js = new ArrayList<JurnalScore>(); System.out.println("empty query"); }else{

try{

Js = ir.SearchRanked(input_query); } catch (NullPointerException ex) { ex.printStackTrace();

Js = new ArrayList<JurnalScore>(); }

}

int d = halaman(Js.size()); String e = Integer.toString(d);

double finish = System.currentTimeMillis(); time = (double) ((finish - start) / 1000.0);

NumberFormat formatter = new DecimalFormat("#.###"); formatter.format(time);

request.getSession().setAttribute("time", time); request.getSession().setAttribute("jurnalscored", Js); request.getSession().setAttribute("e", e);

RequestDispatcher rd = request.getRequestDispatcher("/hasilPencarian.jsp?page=1"); rd.forward(request, response);

}catch(Exception ex){ ex.printStackTrace(); }

}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /**

* Handles the HTTP <code>GET</code> method. * @param request servlet request

* @param response servlet response

* @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs

*/ @Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


(4)

95

}

/**

* Handles the HTTP <code>POST</code> method. * @param request servlet request

* @param response servlet response

* @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs

*/ @Override

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

processRequest(request, response); }

/**

* Returns a short description of the servlet. * @return a String containing servlet description */

@Override

public String getServletInfo() { return "Short description"; }// </editor-fold>

public static int halaman(int total) {

double a = total; double b = a / 10; double sisa=(a%10);

if(sisa>0){ return ((int) b)+1; }else{

return ((int) b); }

}

}

public ArrayList<JurnalScore> SearchRanked(String query) { ArrayList<JurnalScore> SortedJurnalScore = null; ArrayList<JurnalScore> jurnalscore = null;

if (query != null || !query.equals("")) {

Tokenizer queryTokenizer = new Tokenizer();

queryTokenizer.setData(queryTokenizer.characterCleaning(query)); queryTokenizer.makeTokens();

String[] queryToken = queryTokenizer.getTokens(); System.out.println("panjang query: " + queryToken.length); ArrayList<Term> result = new ArrayList<Term>();

for (int i = 0; i < queryToken.length; i++) { String string = queryToken[i];

if (!Stemming.cekStopwordAda(string)) { String stem1 = stem.stem(string).toString();


(5)

96

result.add(doc.index.getWordlist().get(stem1)); }

} }

System.out.println("rsult lenght " + result.size());

for (Term words : result) { Term word = words;

System.out.println(word.getTerm() + " || DFK: " + word.getDfk() + "|| NIDFK " + word.getNidfk()); LinkedList<Posting> temppost = word.getPostlist();

for (Posting posting : temppost) {

System.out.println("--- TFIK:" + posting.getTfik() + " NTFIK:" + posting.getNtfik() + " || JURNAL: " + posting.getJurnal().getFileName() + " || W :" + posting.getW());

} }

//Proses AND di sini String kueri1, kueri2; Term hasilCari = null; if (result.size() == 1) { hasilCari = result.get(0); } else {

for (int i = 0; i < result.size() - 1; i++) { if (i == 0) {

// kueri1 = result.get(i).getTerm().toLowerCase(); // kueri2 = result.get(i + 1).getTerm().toLowerCase(); // kueri1 = stem.stem(kueri1);

// kueri2 = stem.stem(kueri2);

hasilCari = AND(result.get(i), result.get(i + 1)); } else {

// kueri1 = result.get(i + 1).getTerm().toLowerCase(); //kueri1 = stem.stem(kueri1);

hasilCari = AND(hasilCari, result.get(i + 1)); }

} }

jurnalscore = new ArrayList<JurnalScore>();

int docygsama = 0;

LinkedList<Posting> postlist = hasilCari.getPostlist(); //untuk setiap posting

for (Posting posting : postlist) { if (jurnalscore.isEmpty()) {

JurnalScore jurn = new JurnalScore(); jurn.Score = jurn.Score + posting.getW(); jurn.jurnal = posting.getJurnal(); jurnalscore.add(jurn);

} else {

boolean contain = false; for (JurnalScore js : jurnalscore) {

if (js.jurnal.equals(posting.getJurnal())) { docygsama++;


(6)

97

System.out.println("sama dokumen sementara " + docygsama); js.Score = js.Score + posting.getW();

contain = true; }

}

if (contain == false) {

JurnalScore jurn = new JurnalScore(); jurn.Score = jurn.Score + posting.getW(); jurn.jurnal = posting.getJurnal(); jurnalscore.add(jurn); }

} }

JurnalSortComparator jsc = new JurnalSortComparator(); Collections.sort(jurnalscore, jsc);

}

for (int i = 0; i < jurnalscore.size(); i++) {

System.out.println(jurnalscore.get(i).jurnal.getJudul() + " score : " + jurnalscore.get(i).Score);

}

System.out.println("Sorted : " + jurnalscore.size()); if (jurnalscore == null) {

return null; } else {

return jurnalscore; }