BAB III ANALISA DAN DESAIN SISTEM
3.1.3. Pengolahan Pertanyaan dan Pencarian Jawaban (Proses 3)
Proses pengolahan pertanyaan dan Pencarian Jawaban adalah proses utama dari Sistem tanya jawab. Proses ini berhubungan langsung dengan user, namun proses ini tidak dapat berjalan bila tidak dilakukan preproses dan
indexing. Proses ini akan dijalankan setiap user mengajukan pertanyaan. Terdapat empat sub proses dalam proses ini yang dapat dilihat pada gambar 3.1.3.a
Gambar 3.1.3.a DAD level 2 proses 3
a. Analisa Pertanyaan (Sub Proses 3.1)
Terdapat empat buah sub proses dalam proses ini yang dapat dilihat pada gambar 3.1.3.b
gambar 3.1.3.b DAD level 3 proses 3.1
1. Pengelompokan Pertanyaan (Sub Proses 3.1.1P)
Pada blok proses ini terjadi proses pengelompokan pertanyaan. Setiap pertanyaan akan dikelompokkan berdasarkan kata tanyanya :
• Apa
Mewakili pertanyaan mengenai senjata, dan hubungan Contoh pertanyaannya adalah :
Senjata apa yang Arjuna dapat dari dewa Indra? Apa hubungan Pandu dan Kunti?
• Siapa
Mewakili pertanyaan mengenai person Contoh pertanyaannya adalah :
Siapa yang menculik Sinta? Siapa ayah Gatotkaca?
• Di mana
Mewakili pertanyaan mengenai tempat / lokasi Contoh pertanyaannya adalah :
Di mana Yudhistira moksa?
• Berapa
Mewakili pertanyaan mengenai jumlah / tanggal Contoh pertanyaannya adalah :
Berapa jumlah pasukkan pandawa saat berperang di kuruksetra? Abimanyu tewas pada hari keberapa dalam perang di kuruksetra?
Bila ada pertanyaan yang tidak menggunakan kata tanya diatas maka dianggap bahwa “sistem tidak mampu atau belum mendukung pertanyaan user”.
Cara pengelompokkannya di gambarkan dalam flowchart pada gambar 3.1.3.c
gambar 3.1.3.c Flowchart pengelompokkan pertanyaan jawaban
2. Stemming (Sub Proses 3.1.2P)
Stemming pada proses ini langkah-langkahnya sama dengan proses
Stemming pada proses 1.4.1P.
3.1.2P dan output-nya adalah pertanyaan yang telah di Stemming
menuju ke proses 3.1.4P
3. Stopword removal (Sub Proses 3.1.3P)
Stopword removal dilakukan dengan cara yang sama dengan proses 1.3.3P.
Input-an proses ini adalah pertanyaan tanpa kata tanya dari proses 3.1.1P, output-nya adalah pertanyaan tanpa stopword menuju ke proses 3.1.4P
4. Pembuatan Kueri (Sub Proses 3.1.4P)
Pembuatan kueri dilakukan dengan melihat pada file sinonim kueri dan file sinonim kata. Urutan pembuatannya adalah :
1. seluruh kata kunci diberi bobot 4.
2. kemudian seluruh kata kunci dicari persamaan kuerinya dengan melihat file sinonim kueri. Kata-kata sinonim tersebut ditambahkan pada kata kunci, tetapi dengan bobot lebih kecil, yaitu 1.
3. setelah itu, dengan menggunakan sinonim kata, apakah ada kata-kata dalam pertanyaan yang memiliki sinonim, bila ada masukkan juga sinonimnya sebagai kata kunci kueri dengan bobot 1.
contohnya adalah pertanyaan “Siapa ayah gatotkaca?” Setelah dilakukan proses pengelompokan pertanyaan maka akan menjadi
“ayah gatotkaca”.
1. setelah ditambah dengan sinonim kueri maka akan menghasilkan : ayah, gatotkaca, anak.
2. kemudian dengan melihat pada sinonim kata, maka akan menjadi : ayah, gatotkaca, anak, bapak, wrekudara, putra.
b. Pencarian dan Ranking Dokumen (Sub Proses 3.2)
Terdapat dua buah sub proses dalam proses ini yang dapat dilihat pada gambar 3.1.3.c
Gambar 3.1.3.d DAD level 3 proses 3.2
1. Pencarian dokumen (Sub Proses 3.2.1P)
Proses ini menerima input-an berupa kueri dari proses 3.1, kueri tersebut kemudian di lakukan pada file index. Contoh setelah kueri dilakukan pada file index adalah sebagai berikut:
Ayah:5:2&2:2;6:3
Gatotkaca:4:3&1:2;5:1;6:1 Anak:12:3&2:3;6:7;9:2 Bapak:1:1&2:1
Putera:3:2&7:1;9:1 Putra3:1&10:3
Hasil pencarian dokumen tersebut kemudian digunakan untuk proses berikutnya
2. Ranking dokumen (Sub Proses 3.2.2P)
Setelah mendapatkan dokumen yang relevan, maka akan dibuat
ranking relevansi dari tiap dokumen. Ranking dibuat melihat jumlah kata kunci yang terdapat pada dokumen itu dan dihitung menggunakan perhitungan TF-IDF. Hasil perhitungan TF-IDF setiap kata kunci kemudian dikalikan dengan bobotnya. Setelah selesai dihuting, kemudian diurutkan yang terbersar dan diambil 10 dokumen teratas.
Output proses ini adalah urutan dokumen yang relevan terhadap pertanyaan.
c. Pencarian dan RankingPassage (Sub Proses 3.3)
Terdapat dua buah sub proses dalam proses ini yang dapat dilihat pada gambar 3.1.3.d
gambar 3.1.3.e DAD level 3 proses 3.3
1. Pencarian Passage (Sub Proses 3.3.1P)
Dalam proses ini yang dilakukan adalah sama dengan yang dilakukan pada proses 3.2.1P yaitu pencarian, bedanya pada proses ini index yang digunakan adalah index passage.
Contoh hasil dari kueri pada index passage: Ayah:2:5&2-1:2;6-1:1;6-2:3 Gatotkaca:4:4&1-1:2;5-1:1;6-1:1;6-2:1 Anak:3:12&2-1:3;6-1:7;9-1:2 Bapak:1:1&2-2:1 Wrekudara:1:1&9-3:1 Putera:2:3&7-4:1;9-3:1 Putra:1:3&10-2:3
Dari setiap kata kunci akan didapatkan baris index yang berisi
passage mana saja yang mengandung kata tersebut. Passage-passage
ini kemudian diperiksa dengan top-10 ranking dokumen hasil dari proses sebelumnya (Proses 3.2.2P). Bila ada passage yang bukan merupakan bagian dari dokumen yang masuk dalam top-10, maka
passage itu akan dibuang.
Passage-passage yang merupakan bagian dari top-10 ranking dokumen akan digunakan untuk proses selanjutnya.
2. RankingPassage (Sub Proses 3.3.2P)
Setelah mendapatkan sekumpulan passage yang mengandung kandidat jawaban, kemudian passage ini di ranking juga menggunakan metode TF-IDF yang kemudian dikalikan dengan bobot kata kuncinya. Input dari proses ini adalah kandidat passage
yang relevan. Output dari proses ini adalah urutan passage yang mengandung kandidat jawaban.
d. Ekstraksi Jawaban (Sub Proses 3.4)
Proses ini menerima input-an berupa urutan passage yang mengandung kandidat jawaban dari proses 3.3 dan jenis pertanyaan dari proses 3.1. Ekstraksi jawaban dilakukan dengan memberikan skor pada setiap
passage berdasarkan :
1. Passage akan mendapatkan skor tambahan 1, bila memiliki token yang sesuai dengan jenis pertanyaan.
gambar 3.1.3.f Flowchart skor passage 1
Contoh :
Pertanyaan : “Apa hubungan subali dan sugriwa?”
Pertanyaan diatas akan dikategorikan sebagai pertanyaan mengenai “relation”, maka QToken = “relation”.
Contoh passage yang ditemukan :
Passage 110-5 :
<?XML VERSION ="1.0" ?> <passage docno=110 no=5>
<sentence> sungguh hati <person>subal</person> <person>sugriwa</person> angkat goa
<location>kiskenda</location>..</sentence>
<sentence> mulut gua <person>subal</person> pesan <relation>adik</relation> waspada jaga
jaga..</sentence>
<sentence> apabila cair darah warna merah seluruh musuh sirna muka..</sentence>
Di mana :
QToken = token dari pengelompokan pertanyaan
Pi = Passsage ke i SPi = Skor Passage i
<sentence> apabila genang darah putih alir gua
<person>sugriwa</person> utup pintu gua..</sentence> <sentence> <person>sugriwa</person> sanggup
<person>subal</person> labrak <person>maesasura</person>
<person>lembusura</person>.</sentence> </passage>
Maka passage ini akan mendapat skor +1, Spi += 1.
2. Bila di dalam passage terdapat kata kunci kueri, maka passage akan mendapatkan skor 1 untuk setiap kata kunci yang ada.
gambar 3.1.3.g Flowchart skor passage 2
Contoh pada passage 110-5 di atas, terdapat kata “subali” dan sugriwa”, tetapi tidak terdapat kata ”hubungan”, maka passage akan mendapatkan skor +2.
Di mana :
Q = kata kunci kueri Qj = kata kunci kueri ke j Pi = Passsage ke i
SPi = Skor Passage i
3. Bila dalam satu kalimat terdapat kata kunci kueri yang berbeda, lebih dari satu, untuk setiap kalimatnya akan mendapatkan skor
1.
Di mana : P = Passage
Q = kata kunci kueri Si = Kalimat dari Passage i Sik = Kalimat ke k dari
Passage ke i
Qj = kata kunci kueri ke j SPi = Skor Passage i
gambar 3.1.3.h Flowchart skor passage 3
Contoh pada passage 110-5 di atas, pada kalimat ke-1 dan kalimat ke-5, dalam satu kalimat terdapat lebih dari 1 kata kunci kueri. Maka untuk masing-masing kalimat akan mendapat skor +1. Sehingga
passage ini mendapat skor +2.
Skor total dari passage 110-5 ini adalah 1+2+2 = 5.
Untuk setiap kandidat dalam passage juga diberi penilaian dengan ketentuan :
1. Setiap kandidat jawaban (token yang sesuai dengan jenis pertanyaan), dihitung jaraknya dengan setiap kata kunci kueri yang terdapat dalam passage tersebut. Jaraknya dihitung secara absolute (tidak ada negative). Jarak kandidat jawaban dengan setiap kata kunci dihitung dari jumlah kata yang ada diantara kandidat dan kata kunci. Jarak tersebut kemudian dibagi dengan bobot katakunci. Setelah itu dijumlah dengan seluruh jarak kata kunci yang ada, kemudian dibagi dengan kuadrat kata kunci yang ditemukan.
(
C Q BQ
)
n
DC
il mm n il im im 2 1 / / ⎟⎠⎞ ⎜ ⎝ ⎛ ∑ − = = = Di mana :DCil = Jarak kandidat dan kata kunci kueri Cil = Kandidat passage i ke l
Qim = Kata kunci kueri pada passage i ke m
BQim = Bobot kata kunci kueri pada passage i ke m
n = jumlah kata kunci kueri yang terdapat dalam passage i Contoh :
Pada passage 110-5, setelah dihilangkan tag-nya dan setiap katanya dimasukkan ke dalam array akan menjadi seperti tabel di bawah ini:
1 2 3 4 5 6 7
sungguh Hati subal sugriwa angkat goa kiskenda
8 9 10 11 12 13 14
mulut Gua subal pesan adik waspada jaga
15 16 17 18 19 20 21
jaga Apabila cair darah warna merah seluruh
22 23 24 25 26 27 28 musuh Sirna muka apabila genang darah putih
29 30 31 32 33 34 35
alir Gua sugriwa utup pintu gua sugriwa
36 37 38 39 40
sanggup Subal labrak maesasura lembusura Tabel 3.1.3 Tabel kata passage
Pada array passage 110-5 dapat dilihat bahwa kandidat jawaban yang ditemukan adalah ”adik” pada array index 12. Selain itu ditemukan juga kata kunci kueri pada array indeks 3, 4, 10, 31, 35, dan 37. Sehingga bila dimasukkan ke dalam rumus akan menjadi :
Cil = Kandidat passage i ke l
C110-5 1 = ”adik” Æ array indeks ke 12. Qim = Kata kunci kueri pada passage i ke m Q110-5 1 = ”subal” Æ array indeks ke 3. Q110-5 2 = ”sugriwa” Æ array indeks ke 4. Q110-5 3 = ”subal” Æ array indeks ke 10. Q110-5 4 = ” sugriwa” Æ array indeks ke 31. Q110-5 5 = ” sugriwa” Æ array indeks ke 35. Q110-5 6 = ” subal” Æ array indeks ke 37. BQim = Bobot kata kunci kueri pada passage i ke m
Kata kunci kueri yang terdapat pada pertanyaan akan mendapat bobot lebih dibandingkan dengan kata kunci kueri yang didapat dari
hasil pencarian sinonim, bobotnya yaitu 4. BQ110-5 1 = 4 BQ110-5 2 = 4 BQ110-5 3 = 4 BQ110-5 4 = 4 BQ110-5 5 = 4 BQ110-5 6 = 4
n = jumlah kata kunci kueri yang terdapat dalam passage i
n = 6. Sehingga : DC110-5 1 = ( (| C110-5 1 - Q110-5 1| / BQ110-5 1) + (| C110-5 1 - Q110-5 2| / BQ110-5 2) + (| C110-5 1 - Q110-5 3| / BQ110-5 3) + (| C110-5 1 - Q110-5 4| / BQ110-5 4) + (| C110-5 1 - Q110-5 5| / BQ110-5 5) + (| C110-5 1 - Q110-5 6| / BQ110-5 6)) / n2 DC110-5 1 = ( (| 12 - 3 | / 4 ) + (| 12 - 4 | / 4 ) + (| 12 - 10 | / 4 ) + (| 12 - 31 | / 4 ) + (| 12 - 35 | / 4 ) + (| 12 - 37 | / 4 )) / 62 DC110-5 1 =( (9/4) + (8/4) + (2/4) + (19/4) + (23/4) + (25/4)) / 36 DC110-5 1 =( 2.25 + 2 + 0.5 + 4.75 + 5.75 + 6.25) / 36 DC110-5 1 = 21.5 / 36 DC110-5 1 = 0.597
2. Bila dalam passage terdapat dua atau lebih kandidat jawaban yang sama, maka jarak kandidat yang sama tersebut dijumlahkan dan
dibagi dengan kuadrat jumlah kandidat jawaban sama.
Di mana :
Cij = Kandidat passage i ke j Cik = Kandidat passage i ke k
gambar 3.1.3.i Flowchart skor kandidat 1
Untuk contoh menggunakan passage 110-5, karena tidak terdapat kandidat jawaban sama, maka :
DCij = DCij DC110-5 1 = 0.597
3. Kemudian skor setiap kandidat jawaban dibagi dengan skor
passagenya.
SP
DC
SC
i il il = Di mana :SCil = Skor kandidat passage i ke l
0.597 Maka :
SC110-5 1 = 0.597 / 5 SC110-5 1 = 0.1194
4. Bila pada passage yang berbeda, terdapat kandidat jawaban yang sama, maka skor kandidat jawaban yang sama tersebut dijumlahkan dan dibagi dengan kuadrat jumlah passage yang memiliki kandidat jawaban sama. Skor baru ini akan menjadi skor kandidat sama tersebut. Kandidat jawaban yang memiliki nilai skor paling kecil akan dijadikan jawaban pertanyaan.
start end Selama Cj Selama Ck Jika Cj == Ck SCj += SCk Temp ++ n n y y Temp =0 SCj =SCj / Temp * Temp y n
Dalam flowchart ini, kandidat-kandidat dari kesepuluh passage
digabungkan, sehingga nomor
passage tidak diperhitungkan lagi. Di mana :
Cj = Kandidat ke j Ck = Kandidat k
SCj = Skor kandidat ke j
Contoh:
Untuk passage 110-5, hanya terdapat sebuah kandidat, yaitu ”adik”. Bila di passage lain (mis : 148-1) terdapat dua buah kandidat : ”kakak” dengan skor = 0.135, dan ”adik” dengan skor = 0.122, maka kandidat-kandidat ini akan digabungkan dan nomor passage tidak diperhitungkan :
C1 = ”adik” dari passage 110-5 C2 = ”kakak” dari passage 148-1 C3 = ”adik” dari passage 148-1
Dari gabungan kandidat ini, diketahui terdapat dua kandidat jawaban sama yaitu C1 dan C3, maka akan dijadikan satu pada C1.
SC1 = SC1 + SC3 / 22 SC1 = 0.1194 + 0.122 / 4 SC1 = 0.0603
Setelah dijadikan satu pada C1, maka C3 tidak ada lagi sehingga gabunfan passage akan menjadi :
C1 = ”adik” dari passage 110-5 , SC1 = 0.0603 C2 = ”kakak” dari passage 148-1, SC2 = 0.135
Setelah diurutkan dari yang paling kecil, maka yang terpilih adalah kandidat C1 yaitu ”adik” sebagai jawaban atas pertanyaan “Apa hubungan subali dan sugriwa?”.