Insya Allah ini jadi tugas besar terakhir yang aku kerjain bersama tmen-tmen seperjuangan selama kuliah. Wah, perjuangan yang berat di sela-sela harus ngerjain skripsi. Demi menjaga persahabatan dan tetep bisa meluangkan waktu bersama, di awal semester 8, aku sama sahabat2ku sepakat ngambil mata kuliah pilihan Information Retrieval(IR). Kuliahnya mendalami tentang cara kerja search engine, terutama cara kerja Google!
Nah, sebagai konsekuensinya (seperti biasa), di akhir kuliah ini, kita dikasih tugas besar yang harus dikerjain dalam waktu skitar 2 mingguan. Karena di kuliah ini kita belajar cara kerjanya Google, akhirnya tugas besarnya pun disuruh bikin search engine juga. Dulu waktu semester 6, pas ngambil kuliah Desain&Analisis Algoritma, pernah juga sih disuruh bikin search engine, tapi menggunakan algoritma-algoritma yang udah diajarin. Nah klo search engine tugas IR ini dibikin bener-bener sesuai cara kerja search engine yang seharusnya dan harus bisa berjalan online.
Tahap pembuatan search engine nya sendiri dibagi jadi dua : Indexing dan Searching
Proses yang dilakukan waktu indexing ternyata ga sederhana dan lumayan banyak, antara lain :
1. Saat ada dokumen yang masuk, dilakukan proses break into token, yaitu memecah-mecah dokumen jadi token-token alias dipecah per kata.
2. Abis itu, dilakukan stop list, yaitu menghilangkan token-token yang ga penting, misalnya kata-kata : dan, di, yang, atau, dst.
3. Proses yang ketiga yaitu stemming. Proses ini untuk menghilangkan imbuhan dan mengembalikan kata-kata ke bentuk dasarnya. Misalnya kata “mengerjakan” di-stemming menjadi kata “kerja”
4. Setelah itu, token-token yang udah lolos proses stop list dan stemming diberi bobot (weight). Sebenernya ada 2 metode term weighting yang bisa dipake yaitu term frequency (tf) dan idf (lupa idf tuh kepanjangannya apa..hehe). Cuma kmaren aku cuma bikin pembobotan token nya pke metode term frequency, yaitu dengan membari bobot pada token sesuai jumlah kemunculan token itu dalam sebuah dokumen.
5. Stelah keempat proses di atas selesai, baru deh token itu bisa masuk ke database sebagai index.
Fiuhhhhh….melelahkan bukan? padahal ini cuma untuk indexing aja. Sedangkan proses searching nya sendiri ga jauh beda sama proses indexing nya. Proses nya antara lain :
1. Parse query, yaitu memecah-mecah query (keyword) yang dimasukkan user menjadi token-token. Proses ini ga jauh beda sama proses break into token di indexing.
2. Abis itu token-token yang dipecah dari query tadi masuk ke proses stop list dan stemming. Proses ini juga ga jauh beda sama yang ada di indexing.
3. Nah proses yang ketiga ini yaitu mencari token di index database dan di document collection
4. Trus semua dokumen yang ditemukan dilakukan pe-ranking-an dulu sebelum ditampilkan. Ada beberapa metode perangkingan ini misalnya dengan menghitung nilai similarity antara dokumen dan query nya, bisa juga dengan metode page rank. tapi kmaren search engine yang aku buat cuma pke metode perankingan similarity.
5. Abis dilakukan perankingan, baru deh dokumen hasi pencarian itu ditampilkan sesuai urutan rankingnya, yaitu semakin tinggi nilai similarity sebuah dokumen dengan query nya maka semakin tinggi juga ranking nya
Lumayan bekerja keras juga nyelesain tugas besar ini. Tapi puas juga dengan hasilnya. Buat yang mw liat kya apa hasil search engine buatanku dan tmen2ku bisa diliat di :
untuk proses indexing nya di www.kitakita.co.cc/indexing2. Nanti disana silahkan masukkan dokumen (dalam format free text dokumen yang diinputkan ke text area), trus klik tombol submit, nanti kluar smua proses yang terjadi di indexing kya yg dijelasin di atas
trus, klo untuk searching nya diakses lewat www.kitakita.co.cc. Masukkan keyword di textfield yang tersedia. Klo kata-kata yang dicari ada, maka akan tampil hasilnya sekaligus muncul proses-proses searching yang dijelasin di atas. Tapi mohon maaf kalo tiba-tiba keyword yang dicari sering ga ada, karena kami bukan Google! yang punya web crawler otomatis yang bisa mengenali hampir semua halaman web yang ada di internet. Tapi yang insya Allah ada yaitu dokumen dengan keyword “internet”.
Selamat mencoba!!
eki said,
October 19, 2008 @ 10:17 am
terimakasih atas pencerahannya .. hehe
bagus said,
October 25, 2008 @ 6:54 pm
halo mbak klo boleh bisa minta bantuin gak ? kita juga di suruh bikin search engine ama pak yanuar cuma kita masih bingung proses stemmingnya . itu kira-kira gimana ya mbak caranya klo bahasa indonesia.
gita said,
November 9, 2008 @ 10:39 am
@eki
sama-sama..mudah2an bisa membantu..
@bagus
halo juga..duhhh, telat ga yah klo baru bales comment nya skarang…hehe…
klo stemming bahasa indonesia, juur aja, emang agak susah sih..hehe…karena di bahasa indonesia itu terlalu banyak aturan imbuhan..
kemaren aku buat pke cara gampangnya, pke algoritma brute force, jadi metodenya dengan memotong2 imbuhan kata sampe terbentuk kata dasarnya..klo di PHP bisa langsung pke function substr bawaan PHP..
panduan untuk memotong katanya googling aja tentang aturan imbuhan bahasa indonesia…
klo mau gampang, ga usah lengkap2 amat buat stemmingnya..pak yanuar ga masalah koq, asal kita udah buat pasti ada penilaian tersendiri juga…
klo mau buat stemming yang lengkap kya punyaku, apalagi pke algoritma brute force buatnya bisa semaleman..klo ga salah dulu aku buat stemming itu sampe 12 jam sendiri..hehehe
semoga bermanfaat yah infonya…
Riza said,
March 31, 2009 @ 12:48 pm
mbak… mau nanya… kata2 yg masuk stoplistnya apa aja… Aq dah ada tp kayakny kurang… blh d imel k tempatq… skalian algoritma stemmingny… ato link untuk nyari itu… makasih bgd mbak
gita said,
March 31, 2009 @ 9:14 pm
@riza
waduhhh…apa yah stop list nya? udah ga inget..hehehe..masih ada sih tugasnya tapi harus ngobrak ngabrik laptop dulu..soalnya udah staun yang lalu bikin tugas ini…
algoritma stemmingnya brute force koq..pke fungsi bawaan PHP, substr bwt motong imbuhannya…selengkapnya bisa baca comment di atas yah
priyo pambudi said,
April 5, 2009 @ 4:44 pm
mbak,,saya juga Tugas Akhir bikin search engine..alhamdulillah untuk proses token,stemming sama bobot udah ada..namun yg masi bingung pas bagian stoplist..
mo tanya,,waktu mbak bikin stoplist kira2 narasi prosesnya gimana y mbak??pake aljabar database biasa atau pake linked list?
trus apa ada algoritmanya??(referensi)..
mohon bantuannya..makasih y mbak
gita said,
April 6, 2009 @ 1:26 pm
@priyo
sebenernya search engine yang saya buat ini bukan Tugas Akhir, tapi hanya sekedar tugas kuliah aja, jadi mungkin segala element2&proses di dalamnya ga bisa disejajarkan dengan sebuah Tugas Akhir. Hampir semua proses algoritma nya dibuat sederhana, bahkan ada yang proses-proses yang algonya pake brute force dan ada proses yang hanya sekedar pake function bawaan PHP..hehe
Untuk Stop List nya juga dengan algo standar, hanya pake database aja. Kira-kira narasinya seperti ini :
Saya buat sebuah tabel di database yang khusus menampung stop list, dan semua kata-kata yang saya rasa itu adalah stop list saya masukkan ke dalam tabel tersebut. Nanti pada saat search engine membaca keyword dan mencari keyword tersebut di dokumen/text ada proses pengecekan kata-kata di tabel stop list. Jika kata itu ditemukan di tabel, maka kata tersebut akan dihilangkan untuk proses selanjutnya, dan jika kata itu ditemukan di tabel maka kata-kata tersebut diikutsertakan dalam proses selanjutnya.
Cuma begitu aja koq prosesnya, dan proses ini lebih gampang daripada stemming ataupun pemberian bobot, algo nya ga lebih rumit dari 2 proses tersebut.
Selamat mencoba, semoga bermanfaat
Gungz said,
June 26, 2009 @ 2:01 pm
Saya pinjem artikelnya ya…hehe…
Kebeneran di kantor lagi ada project text mining nih…
Wah, hebat udah bikin beginian di tugas kuliah…
Hff…awalnya sih bingung…tapi setelah nemu blog ini (&source2 lainnya) jadi dapet pencerahan!hehe..
Oia..utk yg pembobotan itu, IDF itu = Inverse Document Frequency
Oia…sy juga sudah menemukan daftar stoplist untuk bahasa indonesia. Bisa diunduh disini : http://fpmipa.upi.edu/staff/yudi/stop_words_list.txt
Regards…
Gungz
rajim said,
September 8, 2009 @ 2:20 am
Salam kenal ajah
Terima kasih banyak udah mau share ilmu dan pengetahuannya ttg text prepocessing ini.
gita said,
September 21, 2009 @ 10:01 am
@gungz
semoga bermafaat yah artikelnya
@rajim
sama2.semoga bermanfaat
harry said,
October 21, 2009 @ 8:55 pm
Artikel yg sgt bermanfaat sx, thx..
btw saya saat ini juga lg mengerjakan TA dgn tema yg sama, saya ada beberapa pertanyaan :
1. bagaimana mencari kata dasar dari kata yg hurufnya luluh spt menyapu -> sapu, menari -> tari ?
2. dlm tugas mbak ini apa memakai teknik similarity coefficient spt cosine, jaccard ? klo ada bisa dijelaskan ?
3. bisa lbh detail lg penjelasan mengenai term weighting ? bagaimana mengaplikasikan kata2 yg sudah distem untuk mencari nilai bobot ?
Mungkin akan lebih baik apabila mbak juga menyediakan contoh source code trutama stemming. Terimakasih sx sblumnya,,