DFD Level 2
3.2.2 DFD Level 2
3.2.2.1 DFD Level 2 Proses 1 Mesin Indeks
Pada Gambar 3.3 DFD Level 2 Proses 1 Mesin Indeks di bagi menjadi 4 sub proses. Akan tetapi proses utama pada mesin indeks ini hanya terdiri dari 3 proses utama yaitu :
1. Parsing
2. Penghilangan Stopwords
3. Penghitungan bobot
Ketiga proses tersebut yang akan digunakan oleh sistem temu-kembali informasi untuk mengubah teks menjadi indeks istilah untuk digunakan dalam proses pencarian dokumen.
File Storage
Dokumen Teks
Administrator Parsing
Dokumen yang
Index
dipilih
Array Kata
1.3 Penghilangan Stopwords
Indeks Istilah
Gambar 3.3 Data Flow Diagram Level 2 Proses 1 Mesin Indeks
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.
Mulai
Case Folding
Penghilangan
tanda baca
Pembentukan
array Kata
Selesai
Gambar 3.4 Bagan Alir Proses 1.2 Parsing
3.2.2.1.2 Proses 1.3 Penghilangan Stopwords
Proses penghilangan stopwords ini berfungsi sebagai penyaring kata-kata umum yang hampir selalu ada pada dokumen dan tidak signifikan untuk dijadikan indeks suatu dokumen. Kata-kata umum ini telah didefinisikan sebelumnya sehingga pada proses ini hanya membandingkan kata yang merupakan hasil proses parsing dengan stopwords.
Input pada proses 1.2 Penghilangan Stopwords (Gambar 3.5) adalah array kata hasil dari proses parsing. Algoritmanya adalah sebagai berikut :
1. Baca array kata yang didapat dari proses parsing.
2. Ambil daftar stopwords
3. Bandingkan array kata dengan daftar stopwords
Jika kata termasuk ke dalam daftar stopwords, maka buang kata dari array.
4. Ulangi ke langkah no.3 sampai array kata paling terakhir.
Mulai
Array Kata
sebuah dokumen
i=0
Daftar
Bandingkan isi
stopwords
array ke-i dengan
daftar stopwords
i=i+1
Isi array ke-I =
frekuensi token
Ya
Tidak
Hapus data array
ke-i
i = jumlah array
Ya
Pembuatan array Token
selesai
Gambar 3.5 Bagan Alir Proses 1.3 Penghilangan Stopwords
Hasil dari proses ini berupa array token yang berwujud dua dimensi dengan format : Array ( Array ( kata → banyaknya kata , kata → posisi kata dalam dokumen ) , kata → banyaknya kata )). Array pada dimensi yang pertama 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
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.
Array token Dokumen ke-i
Array token ke-j
j=0
dokumen ke-i
Tidak
sudah ada
i=i+1
Tambah data token ke-j ke
Tabel t_terms
Ya
term
Penghitungan tf
j=j+1
Tambah data indeks ke tabel
indeks
Basis
t_index
data
Tidak
j= jumlah array
Tidak
i=0 Ambil term dari tabel t_term
Ya
i=jumlah dokumen
Hitung idf
term
term ke-i
i=i+1
Update tabel t_term
Tidak
i=jumlah term
Ya
Selesai
Gambar 3.6 Bagan Alir Proses 1.4 Penghitungan Bobot
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.
3.2.2.2 DFD Level 2 Proses 2 Proses Cari
2.2 User
2.1 Array
Kata Kunci
Parsing
Kata
Penghilangan Stopwords
Token Query
2.3 cek Frasa
Vektor Dokumen
2.4 Fungsi kesamaan
Query Pencarian
Database Penyimpanan Data
Gambar 3.7 DFD Level 2 Proses 2 Proses Cari
Pada DFD Level 2 (Gambar 3.7), Proses 2 Proses Cari di pecah menjadi 4 buah subproses. Proses Cari ini merupakan proses pengubahan kata kunci menjadi query pencarian yang akan diproses untuk mencari dokumen berdasarkan kata kunci yang dimasukan oleh pengguna. Dua subproses awal pada proses cari sama dengan subproses pada pengindeksan dokumen yaitu parsing, penghilangan stopwordsI, cek frasa dan fungsi kesamaan.
Algoritma subproses penghilangan stopwords dan parsing pada Proses Cari ini sama dengan algoritma subproses pada proses Mesin Indeks, sehingga tidak akan dijelaskan lagi.
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”
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.
Id_data
Mulai Match = false
id_term posisi
Array token
i=0 j=0
letak = posisi token-j ke i
j=j+1
i=i+1 j=0
k=0
Tidak
k=k+1
Tidak
letak+j = nilai
k= jumlah
posisi
Tidak
posisi Tidak
token-j ke-k
j= jumlah token
i = jumlah posisi token ke-0
Ya
Ya
Match=true
Add id_data
if match = true
Ya ke dalam Vektor Dokumen
Tidak
Selesai
Gambar 3.8 Bagan Alir Proses 2.3 Cek Frasa
Algoritma Proses 2.3 Cek Frasa (Gambar 3.8) adalah sebagai berikut :
1. set status match=false.
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 :
w qj ⋅ w ∑ ij
sim ( Q , D i ) = t
ij ) × ( w qj ∑ )
Mulai
Vektor Dokumen
i=0
Array Token
j=0
Ambil nilai tf dan idf
Basis
dari t_term dan
data
t_index berdasarkan id_data dokumen ke i
dan token ke j
j=j+1 i=i+1
wij = tf·idf
atas = atas+(w ij *w qj ) bawah = bawah + (w ij *w ij ) qvektor = qvektor + (w qj *w qj )
Tidak
j= jumlah array
sqrt(bawah*qvektor)
i= jumlah vektor dokumen
Ya Urutkan Array
sim
Selesai
Gambar 3.9 Bagan Alir Proses 2.4 Fungsi Kesamaan
Algoritma dari Proses 2.4 Fungsi Kesamaan (Gambar 3.9) adalah sebagai berikut :
1. Ambil array vektor dokumen.
2. Ambil array token.
3. Ambil nilai tf dan idf dari tabel tbl_index dan t_term berdasarkan dokumen dan token. Hitung nilai w ij =tf·idf.
4. Set atas = atas + (w ij *w qj ), set bawah = bawah+(w ij *w ij ), set qvektor = qvektor + (w qj *w qj )
5. Ulangi dari nomor 2 sampai array token terakhir
atas
6. Hitung nilai : dan simpan nilainya ke dalam array sim.
bawah × qvektor
7. Ulangi dari nomor 1 sampai vektor dokumen terakhir.
8. Urutkan nilai di dalam array sim.