Indexing and Retrieval Engine untuk Doku

INDEXING AND RETRIEVAL ENGINE
UNTUK DOKUMEN BERBAHASA INDONESIA
DENGAN MENGGUNAKAN INVERTED INDEX
Wahyu Hidayat1
1

Departemen Teknologi Informasi, Fakultas Ilmu Terapan, Telkom University
1
wahyuhidayat@telkomuniversity.ac.id

Abstrak
Dokumen teks tergolong dalam data tidak terstruktur. Jika dibandingkan dengan informasi yang tersimpan dalam
bentuk yang terstruktur (misalnya pada tabel dalam sebuah database), maka data tidak terstruktur relatif lebih
sulit dalam hal pengelolaan, penyimpanan, pencarian ulang maupun pengamanannya. Dalam paper ini
dipaparkan sebuah metode indexing dan retrieval yang mampu menyimpan dokumen teks sebagai inverted index
yang memiliki berbagai keunggulan penyimpanan data terstruktur.
Proses indexing melibatkan beberapa tahap yaitu parsing, stopping, stemming, sorting dan merging. Proses
indexing dilakukan terhadap 6464 buah file txt dalam Alquran Terjemahan Indonesia. Setelah itu indeks yang
dihasilkan digunakan dalam proses pencarian dokumen yang hasilnya dibandingkan dengan hasil pencarian
dokumen konvensional secara full text search. Baik hasil pencarian maupun waktu yang dibutuhkan semuanya
dicatat untuk mengukur performa retrieval engine dengan parameter precision, recall dan waktu.

Hasil pengujian menunjukkan bahwa proses indexing tidak mengurangi nilai recall, namun menurunkan nilai
precision hingga 41,88% demi meningkatkan kecepatan pencarian hingga 3800 kali lipat.
Kata kunci : inverted index, indexing and retrieval, precision, recall

1.

Pendahuluan

Informasi yang tersimpan dalam bentuk
dokumen dikategorikan sebagai informasi yang
tersimpan dalam bentuk yang tidak terstruktur. Jika
dibandingkan dengan informasi yang tersimpan
dalam bentuk yang terstruktur (misalnya pada tabel
dalam sebuah database), maka jenis informasi ini
relatif lebih sulit dalam hal pengelolaan,
penyimpanan,
pencarian
uang
maupun
pengamanannya.

Untuk mencari informasi tertentu dari
sekumpulan dokumen, biasanya dilakukan dengan
mengumpulkan
dokumen-dokumen
yang
mengandung kata kunci tertentu. Sayangnya, bila
proses ini dilakukan secara manual akan
memerlukan waktu yang cukup lama apalagi jika
jumlah dan atau ukuran dokumen cukup besar.
Pencarian data secara full text search juga
melibatkan proses pembacaan disk secara intensif
yang relatif lebih lama dibanding pembacaan pada
memory utama (RAM). Hal ini akan memperlambat
kinerja sistem.
Salah satu solusi yang dapat diterapkan untuk
menangani permasalahan tersebut adalah dengan
membuat indeks kata dari himpunan dokumen
tersebut. Dengan demikian proses pencarian cukup
dilakukan terhadap indeks sehingga dapat


menghindari proses pembacaan ke disk yang tidak
perlu.
Dalam paper ini dipaparkan tentang sebuah
indexing and retrieval engine untuk dokumen
berbahasa Indonesia. Proses indexing akan melalui
serangkaian tahap yang memungkinkan data tidak
terstruktur yang ada dalam dokumen disimpan
dalam bentuk indeks yang terstruktur dan dapat
memiliki kelebihan-kelebihan data terstruktur dalam
hal
kemudahan
pengelolaan,
penyimpanan,
pencarian uang maupun pengamanan data.
Dalam setiap tahapnya dicatat output dan
waktu yang dibutuhkan. Dua hal ini dapat
menunjukkan performa dari indexing engine dan
tahap mana yang membutuhkan waktu yang lebih
lama. Informasi ini juga akan dapat berguna bagi
penelitian lain dalam domain information retrieval,

khususnya bagi penelitian yang memiliki objek
penelitan berupa teks berbahasa Indonesia atau
bahasa lain yang serumpun. Berbekal informasi
tentang performa engine dalam memproses teks
berbahasa Indonesia maka penelitian lebih lanjut
akan dapat diarahkan untuk menyempurnakan tahaptahap dalam indexing and retrieval engine yang
telah diusulkan dalam penelitian ini.

2.

Tinjauan Pustaka

2.1 Indexing dan Retrieval
Information retrieval adalah proses mencari
materi (biasanya dalam bentuk dokumen) dalam
bentuk yang tidak terstruktur (biasanya dalam
bentuk teks) dari koleksi yang berukuran sangat
besar (yang biasanya tersimpan dalam bentuk
elektronik) sesuai dengan informasi yang
dibutuhkan. Tidak hanya untuk membantu proses

pencarian data dalam bentuk yang tidak terstruktur,
information retrieval juga dapat digunakan dalam
proses penelusuran dan penyaringan koleksi
dokumen untuk diproses lebih lanjut [1].
Dalam domain information retrieval, proses
indexing adalah sebuah proses yang sangat penting.
Indexing terhadap dokumen dilakukan untuk
mengubah dokumen menjadi bentuk yang lebih
terstruktur serta memungkinkan proses retrieval,
yaitu proses menampilkan dokumen yang
mengandung elemen informasi yang dicari.
Langkah-langkah dalam proses indexing adalah
sebagai berikut [1]:
1. Mengumpulkan dokumen yang akan diindeks kemudian memberikan ID yang unik
pada tiap dokumen
2. Tokenizing, yaitu proses memecah dokumen
menjadi serangkaian token atau unit-unit yang
lebih kecil
3. Normalisasi token secara linguistik, misalnya
dengan melakukan stopping (mengabaikan

stopwords) dan stemming (ekstraksi kata
dasar)
4. Mengindeks dokumen dengan struktur
inverted index yang terdiri dari dictionary dan
posting.
Proses indexing biasanya melibatkan proses
sorting dan grouping antara tiap token. Indeks yang
dihasilkan merupakan pemetaan antara token dan id
dokumen tempat token tersebut ditemukan, biasanya
disertai pula dengan frekuensi kemunculan token
pada dokumen tersebut.
Senada dengan [1], dalam [3] disebutkan
bahwa indexing dokumen dengan inverted index
dapat dilakukan melalui beberapa tahap berikut:
1. Parsing Dokumen
Dokumen dipecah-pecah menjadi kata-kata
dan tiap kata disimpan dalam tabel bersama
ID dokumen dimana kata tersebut muncul.
2. Sorting Token
Tabel diurutkan berdasarkan kata.

3. Merging Token
Kata-kata yang sama dan terdapat pada
dokumen yang sama digabungkan dalam satu
entri.
4. Hitung Frekuensi
Pada tahap ini frekuensi kemunculan kata
dihitung dan ditambahkan ke dalam tabel

Proses indexing dapat dilakukan secara
otomatis maupun secara manual. Indexing secara
otomatis (automatic indexing), umumnya meliputi
alphabet normalization, stopping dan stemming,
seperti yang dijelaskan dalam [5]
1. Alphabet Normalization
Dalam proses indexing biasanya karakter
alfabet dikonversikan ke dalam uppercase
atau lowercase sedangkan karakter-karakter
lain dapat dianggap sebagai separator atau
diabaikan. Angka dapat diabaikan atau
diikutsertakan dalam proses indexing,

tergantung pada kebutuhan sistem.
2. Stopping
Kata-kata yang sering muncul dan tidak
membantu mendeskripsikan dokumen disebut
stopwords. Proses stopping atau mengabaikan
stopwords akan dapat mengurangi daftar kata
yang diindeks. Masing-masing sistem
biasanya menentukan sendiri daftar stopwords
yang digunakan [5]
3. Stemming
Stemming adalah proses mengekstrak stem
atau kata dasar dari sebuah kata. Proses
stemming dapat memperkecil ukuran indeks
sehingga mempercepat proses pencarian.
Metode stemming yang umum digunakan
adalah stemming dengan berbasis kamus dan
aturan morfologi.
Daftar kata yang dihasilkan dari proses
stoppping dan stemming dapat digunakan untuk
mendeskripsikan isi dokumen. Salah satu cara untuk

menentukan apakah sebuah kata merupakan
indikator yang baik terhadap isi dokumen adalah
dengan memperhatikan frekuensi kemunculan kata
dalam dokumen [5].
2.2 Precision dan Recall
Untuk mengukur performa sebuah retrieval
engine biasanya minimal digunakan 2 parameter
yaitu precision dan recall. Keduanya merupakan
besaran yang dapat menunjukkan performa dari
sebuah retrieval engine. Semakin tinggi nilai
keduanya maka semakin baik kinerja retrieval
engine tersebut
.
2.2.1
Precision
Precision adalah salah satu besaran yang
umum digunakan untuk mengukur performa sebuah
information retrieval engine. Precision tidak sama
dengan tingkat akurasi. Precision merupakan
persentase relevant document dari seluruh hasil

query yang ditampilkan. Semakin tinggi nilai
precision, maka semakin besar pula peluang bahwa
hasil pencarian yang ditampilkan adalah hasil
pencarian yang relevan [2].
(1)

di mana
tp = true positive
fp = false positive
Nilai precision yang tinggi menunjukkan
tingginya komposisi true positive pada hasil
pencarian. Oleh karena itu, sebuah retrieval engine
yang memiliki nilai precision yang tinggi akan
semakin jarang salah mengklaim sebuah dokumen
sebagai relevan, padahal dokumen tersebut tidak
relevan.
Recall

2.2.2


Recall
merupakan
persentase
relevant
documents yang berhasil ditampilkan dalam hasil
pencarian. Recall biasanya digunakan untuk
mengukur sensitivitas sebuah retrieval engine.
Semakin tinggi nilai recall, maka semakin besar
pula peluang bahwa dokumen yang relevan berhasil
ditampilkan dalam hasil pencarian [2]

1.

Parsing
Pada proses parsing, dokumen dipecah menjadi
token berdasarkan daftar karakter separator
yang telah ditentukan oleh user. Semua token
yang dihasilkan kemudian dikonversikan ke
dalam bentuk lowercase dan dipasangkan
dengan identifier dokumen dimana token itu
ditemukan.

2.

Stopping
Pada proses stopping, token-token yang
dihasilkan proses parsing dibandingkan dengan
daftar stopwords dan akan diabaikan bila
ternyata token tersebut ada di dalam daftar
stopwords. Proses ini bertujuan mengabaikan
token-token yang tidak perlu di-indeks. Adapun
detail dari proses stopping dapat dilihat pada
bagan berikut:

Begin

(2)
di mana:
tp = true positive
fn = false negative

Ambil 1 term
dari daftar

Nilai recall yang tinggi menunjukkan semakin
“sensitif”nya retrieval engine tersebut dalam
mendeteksi dokumen yang relevan. Oleh karena itu,
sebuah retrieval engine yang memiliki nilai recall
yang tinggi akan semakin banyak menemukan
dokumen yang relevan. Nilai recall yang tinggi juga
menunjukkan bahwa engine tersebut semakin jarang
mengklaim bahwa dokumen tersebut adalah tidak
relevan padahal sebenarnya dokumen tersebut
relevan.
3.

False

Term terdapat
dalam kamus ?

True

False

Abaikan

Masukkan ke
daftar term
penting

Cara Kerja Indexing and Retrieval Engine

Berikut ini adalah gambaran umum dalam
proses indexing dan retrieval:

Akhir daftar ?

True
Kamus
StopWords
(*.txt)

Softcopy
Dokumen
(*.txt)

Kamus
KataDasar
(*.txt)

End

Parsing

Stopping

Stemming

Sorting
&
Merging

Gambar 2. Proses Stopping
Query
Query

User
Hasil
Query

Inverted
Files

Gambar 1. Gambaran Indexing & Retrieval Engine
Berdasarkan Gambar 1, urutan langkah kerja
pada proses indexing dokumen adalah sebagai
berikut:

3.

Stemming
Token yang dihasilkan dari proses stopping
diekstrak menjadi kata dasarnya. Proses
stemming bertujuan untuk mengelompokkan
token yang memiliki kata dasar yang sama.
Algoritma
stemming
yang
digunakan
merupakan algoritma stemming berbasis aturan
morfologi. Adapun aturan morfologi yang
digunakan adalah sesuai dengan 35 kombinasi
imbuhan dalam bahasa Indonesia yang
dijelaskan dalam [4]. Detail dari proses
stemming dapat dilihat pada bagan berikut:

4.

Gambar diberi judul dengan “Gambar” dan
“Tabel” dan diberi nomor, contoh, Gambar 1,
gambar 2, tabel 1, tabel 2, dan seterusnya. Judul
Gambar ditempatkan dirata tengah bawah gambar.
Judul table ditempatkan di rata tengah atas table.
Baik gambar dan table ditempatkan di rata tengah
antara margin kanan dan kiri halaman. Table/gambar
harus ditempatkan pada halaman yang sama dengan
judul table/gambar..
4.

Ambil 1 term
dari daftar

Term ada di
kamus?
True
False
Lakukan
pembuangan
imbuhan secara
bertahap

False

Uji Performa Indexing and Retrieval Engine

4.1 Parameter dan Skenario Pengujian

Begin

Catat term
tersebut sebagai
kata dasar

Sorting & Merging

Menemukan
stem ?

True
False

Ambigu stem?

True

False

Lakukan
penanganan
ambigu stem

Catat stem yang
dihasilkan sebagai
kata dasar term

Akhir daftar ?

True

End

Gambar 3. Proses Stemming

Untuk menguji performa indexing and rerieval
engine yang dibangun maka dilakukan indexing
terhadap 6464 buah dokumen teks (*.txt) berahasa
Indonesia dalam Alquran Terjemahan Bahasa
Indonesia. Dalam proses indexing ditetapkan bahwa
tidak akan mengindex angka dan untuk setiap kata
yang diindex minimal memiliki panjang 3 karakter.
Adapun stemming yang digunakan adalah stemming
berbasis aturan morfologi dalam bahasa indonesia
yang dijelaskan dalam [4].
Untuk mengukur performa indexing engine
digunakan 2 parameter yaitu
1. Persentase penghematan ukuran index
Rasio diperoleh dari membagi jumlah token
setelah dilakukan proses stopping dan
stemming dengan jumlah token sebelum
prosesn stopping dan setemming. Hasilnya
dikali dengan 100% sehingga persentase
penghematan ukuran index dihitung dalam
satuan persen (%)
2. Waktu indexing
Waktu yang dibutuhkan untuk setiap proses
indexing akan diukur dan dicatat untuk
melihat tahap mana yang membutuhkan
waktu paling lama
Setelah index berhasil dibangun maka
sekumpulan kata kunci yang dipilih secara acak akan
digunakan sebagai kata kunci untuk pencarian
dengan menggunakan retrieval engine dan pencarian
dengan menggunakan full text search. Adapun
pencaian dengan full text search diwaliki oleh fitur
pencarian dokumen pada Microsoft Windows
dengan service indexing yang sudah dinonaktifkan.
Masing-masing hasil pencarian dan waktu yang
dibutuhkan dicatat untuk mengukur performa
retrieval engine dengan parameter berikut ini:

1.

2.

3.

Precision
Precision diukur dengan membagi jumlah
dokumen relevan yang ditemukan dalam hasil
pencarian dengan jumlah dokumen hasil
pencarian seperti pada persamaan (1).
Nilai precision merupakan bilangan bulat
dengan antara 0 sampai 1. Semakin tinggi
nilai precision, berarti semakin rendah tingkat
false positive nya, artinya semakin jarang
menemukan dokumen yang tidak relevan
dalam hasil pencarian.
Recall
Recall diukur dengan membagi jumlah
dokumen relevan yang ditemukan pada hasil
pencarian dengan jumlah seluruh dokumen
relevan seperti pada persamaan (2). Nilai
recall merupakan bilangan bulat dengan
antara 0 sampai 1. Semakin tinggi nilai recall,
berarti semakin tinggi tingkat sensitivitas
retreival engine tersebut, artinya semakin
besar peluang bahwa dokumen relevan
berhasil ditemukan dalam hasil pencarian.
Waktu
Waktu yang dibutuhkan untuk menampilkan
hasil
pencarian
akan
diukur
untuk
membandingkan performa indexing and
retrieval engine dengan full text search.
Waktu dihitung dalam satuan detik mulai dari
kata kunci dimasukan sampai daftar dokumen
hasil pencarian ditampilkan.

Dari proses indexing diperoleh hasil bahwa
proses stopping mengurangi jumlah token yang akan
diindeks sebesar 44,49 % dari jumlah token hasil
proses parsing. Proses stemming yang dapat
mengurangi jumlah token yang akan diindeks
sebesar 33,37% dari jumlah token hasil proses
stopping. Dengan demikian, secara keseluruhan
proses stopping dan stemming dapat mengurangi
ukuran indeks sebesar 55,51%. Detailnya adalah
sebagai sebagai berikut:
Tabel 1. Hasil Proses Indexing
Keterangan

Parsing

227.160 token

Stopping

126.094 token

Stemming

stem dari 126.094 token

Sorting dan
Merging

Tabel 2. Catatan Waktu Proses Indexing
Waktu yang
Proses

94.541 entri indeks

Penulisan

menuliskan 94.541 entri indeks ke

Indeks

disk

dibutuhkan
(detik)

Parsing

36

Stopping

22

Stemming

74

Sorting dan Merging

15

Penulisan Indeks

214

Untuk menguji performa retrieval engine
digunakan keyword-keyword yang telah diketahui
jumlah dokumen relevan nya dan dipilih secara
acak:
Tabel 3. Contoh Daftar Keyword
dan Jumlah Dokumen yang Relevan

Keyword

4.2 Hasil Pengujian

Proses

Terlihat pula bahwa waktu yang paling banyak
dibutuhkan adalah saat proses penulisan indeks,
yaitu selama 214 detik atau sekitar 59,27% dari total
waktu proses indexing. Berikut adalah detail catatan
waktu tiap tahapnya:

sekutu
mempersekutukan
mempersekutukan
tuhannya
malaikat yang terdekat
makan minum
ayah
zuhur

Jumlah
dokumen
yang relevan
45
60
4
1
21
30
1

Adapun pada saat melakukan pengujian
terhadap retrieval engine diperoleh hasil sebagai
berikut:

Tabel 4. Contoh Hasil Pencarian
dengan Retrieval Engine

Keyword

sekutu
mempersekutukan
mempersekutukan
tuhannya
malaikat yang
terdekat
makan and minum
ayah
zuhur

5.

Pencarian dengan
inverted index
Waktu
Hasil
pencarian Pencarian
(detik)
(dokumen)
0,043
130
0,042
130
0,078

305

0,061

220

0,048
0,010
0,001

152
31
1

Terlihat bahwa untuk pecarian dengan inverted
index jumlah hasil pencarian melebihi jumlah
dokumen yang relevan, hal ini menyebabkan
penurunan pada nilai precision hingga 41.88%.
Namun demikian, seluruh dokumen yang relevan
ditemukan dalam proses pencarian sehingga nilai
recallnya tetap !00%.
Sebagai pembandingnya, hasil pengujian
terhadap pencarian dengan full text search pada
Windows menunjukkan bahwa jumlah hasil
pencarian sama persis dengan jumlah dokumen yang
relevan, selain itu semua dokumen yang relevan
ditemukan dalam hasil pencarian. Hal ini
menyebabkan pencarian dengan full text search
memiliki nilai precision sebesar 100% dan nilai
recall sebanyak 100%.
Ditinjau dari sisi waktu, pencarian dengan
retrieval engine membutuhkan waktu yang jauh
lebih sedikit dibanding pencarian konvensional
dengan full text search. yaitu sekitar 3800 kali lebih
cepat. Berikut adalah detail contoh hasil pencarian
full text search:
Tabel 5. Contoh Hasil Pencarian Full text search

Keyword

sekutu
mempersekutukan
mempersekutukan
tuhannya
Malaikat yang
terdekat
makan minum
ayah
zuhur

Pencarian dengan
fasilitas search pada
Windows
Waktu
Hasil
pencarian Pencarian
(detik)
(dokumen)
21,13
45
21,09
60
20,51

4

20,43

1

20,36
20,95
22,85

21
30
45

Kesimpulan
Dari uraian sebelumnya maka dapat
disimpulkan bahwa proses indexing memakan waktu
paling lama saat proses penulisan indeks yaitu
sekitar 59,27% dari total waktu indexing. Namun
demikian, saat dilakukan pencarian, index tersebut
dapat mempercepat proses pencarian hingga 3800
kali lipat dibandingkan dengan pencarian
konvensional dengan menggunakan full text search.
Adapun performa retrieval engine ditinjau dari
parameter recall adalah 100%, setara dengan
pencarian dengan full text search, Namun demikian,
ditinjau dari parameter precision, pencarian dengan
retrieval engine mengalami penurunan precision
hingga 41,88%.
Akhirnya dapat disimpulkan bahwa proses
indexing tidak mengurangi nilai recall, namun
menurunkan nilai precision hingga 41,88% demi
meningkatkan kecepatan pencarian hingga 3800 kali
lipat.
Daftar Pustaka:
[1]

[2]
[3]

[4]
[5]

Manning, C.D., Raghavan, P., and Schutze, H.
2009, An Introduction to Information
Retrieval, Cambridge University Press
Olson, David L.; Delen, Dursun, 2008
Advanced Data Mining Techniques, Springer
Ramakhrishnan Raghu and Gehrke Johannes,
2000
Database
Management
System,
NewYork, McGraw Hill
Suhendar and Supinah, 1995, Mata Kuliah
Dasar Umum Bahasa Indonesia, Balai Pustaka
Wilkinson, Ross, 1997 Document Database,
RIST University Australia

Dokumen yang terkait

Analisis Komparasi Internet Financial Local Government Reporting Pada Website Resmi Kabupaten dan Kota di Jawa Timur The Comparison Analysis of Internet Financial Local Government Reporting on Official Website of Regency and City in East Java

19 819 7

Analisis terhadap hapusnya hak usaha akibat terlantarnya lahan untuk ditetapkan menjadi obyek landreform (studi kasus di desa Mojomulyo kecamatan Puger Kabupaten Jember

1 88 63

ANTARA IDEALISME DAN KENYATAAN: KEBIJAKAN PENDIDIKAN TIONGHOA PERANAKAN DI SURABAYA PADA MASA PENDUDUKAN JEPANG TAHUN 1942-1945 Between Idealism and Reality: Education Policy of Chinese in Surabaya in the Japanese Era at 1942-1945)

1 29 9

IbM Pemanfaatan Biopestisida untuk Mengendalikan Hama Uret (Lepidiota stigma) Pada Tanaman Tebu

8 129 1

Improving the Eighth Year Students' Tense Achievement and Active Participation by Giving Positive Reinforcement at SMPN 1 Silo in the 2013/2014 Academic Year

7 202 3

The Correlation between students vocabulary master and reading comprehension

16 145 49

Improping student's reading comprehension of descriptive text through textual teaching and learning (CTL)

8 140 133

The correlation between listening skill and pronunciation accuracy : a case study in the firt year of smk vocation higt school pupita bangsa ciputat school year 2005-2006

9 128 37

Aplikasi forecasting untuk memprediksi kepadatan penduduk di Dinas Kependudkan dan Catatan Sipil Kabupaten Aceh Timur

9 92 261

Transmission of Greek and Arabic Veteri

0 1 22