PEMBANGUNAN PROTOTIPE XTRACTORZ SEBAGAI TOOLS DALAM PROSES KEGIATAN WEB TABLE EXTRACTION DAN PEMBUATAN MASHUP Rudy Gultom1), Riri Fitri Sari 2), Bagio Budiardjo 3) 1,2,3) Departemen Teknik Elektro, FTUI, Jl. Kampus UI, Depok 16424 [email protected], [email protected], [email protected] ABSTRAK Dalam paper ini, kami memperkenalkan prototipe sistem aplikasi Xtractorz dengan GUI nya (Graphical User Interface) sebagai suatu “tools” atau alat bantu bagi pengguna melakukan ekstraksi tabel data dari suatu halaman web (web table extraction) diintegrasikan dengan tahapan pembuatan Mashup. Prototipe Xtractorz saat ini terus dikembangkan dengan pendekatan baru berupa algoritma berbasis rekursif dilengkapi aturan (rules) yang mengatur proses ekstraksi tabel data dalam format HTML dari suatu halaman web. Proses ekstraksi dilakukan menggunakan struktur pemodelan pohon DOM (Document Object Model-Tree), agar prototipe Xtractorz mampu secara komprehensif melakukan proses indeksing dan parsing terhadap kode-kode atau tag-tag HTML halaman web yang diekstraksi tabel datanya. Dalam proses tersebut seluruh tag-tag atau kode-kode HTML diidentifikasi siapa Node Root, Parent, Child, Sibling dan Leaf nya, kemudian dikelompokan dalam bentuk array. Proses identifikasi dan pengelompokan merupakan hal penting untuk kegiatan komputasi atribut atau tabel data, terutama data dalam jumlah besar. Sedangkan kontribusi utama prototipe Xtractorz adalah kemampuan membangun pohon DOM secara otomatis berdasarkan hasil indeksing dan parsing mengacu algoritma dan aturan yang dibuat. Sementara evaluasi prototipe Xtractorz dilakukan dengan pengujian terhadap contoh sampel target URL yang berisi tabel-tabel data hasil Pemilu 2009. Hasil pengujian menunjukkan prototype Xtractorz mampu melaksanakan proses web table extraction dan pembuatan Mashup secara komprehensif, sekaligus membuat pohon DOM nya secara otomatis, dan dapat ditampilkan pada layar GUI. Kata Kunci: Algoritma Xtractorz, Pohon DOM, Web Table Extraction, Mashup 1. Pendahuluan Dewasa ini halaman web umumnya dibuat dalam bentuk HTML tidak terstruktur, berorientasi pada tampilan presentasinya saja dan belum berbasis database. Sehingga ketika dilakukan query atau ekstraksi data dalam jumlah besar terhadap halaman web HTML akan dibutuhkan waktu dan biaya yang cukup signifikan. Hal ini dapat terjadi karena proses ekstraksi data atau tabel data (web table extraction) masih dilakukan secara manual. Oleh sebab itu, pengguna membutuhkan suatu tools untuk melakukan kegiatan web table extraction, dan sesuai tren pembuat Mashup saat ini, juga dapat diintegrasikan dengan pembuatan Mashup [5]. Mashup sendiri merupakan aplikasi berbasis web yang dapat mengintegrasikan data atau tabel data hasil ekstraksi berbagai target halaman web melalui standar tahapan pembuatan Mashup, yaitu: data retrieval, data (source) modeling, data cleaning/filtering, data integration dan data visualization [7,8]. Namun, untuk mengintegrasikan atau mengkolaborasikan kegiatan ekstraksi tabel data dengan pembuatan Mashup bukan merupakan pekerjaan mudah. Beberapa permasalahan muncul, seperti sulitnya memahami isi konten HTML yang tidak terstruktur, terdiri dari ratusan bahkan ribuan tag-tag atau kode-kode HTML yang harus dipilah serta dianalisis. Ditambah permasalahan restrukturisasi bentuk HTML tidak terstruktur dengan cara memodelkannya menjadi bentuk terstruktur, menggunakan model pohon DOM [11]. Sehingga untuk mengantisipasi permasalahan diatas, dibutuhkan algoritma yang mampu menganalisis dan mengindeksing sekaligus mengelompokkan tag-tag atau kode-kode HTML sesuai kelompok (node) nya, seperti: Root, Parent, Child, Siblings dan Leaf. Pengelompokan ini penting untuk proses pengintegrasian dan penyimpanan data di dalam Data Repository. Sementara permasalahan lainnya adalah masih dominannya interaksi faktor manusia atau pengguna di dalam proses web table extraction sehingga mengakibatkan proses menjadi tidak efektif dan efisien, terutama ekstraksi data dalam jumlah besar. Pada beberapa aplikasi sejenis yang tersedia di Internet, seperti: Mashmaker, RoboMaker, YahooPipes, Dapper, Karma dan lainnya, pengguna masih melakukan secara manual pencarian atau pemilihan tabel data dalam halaman web [5]. Hal ini tentunya menjadi kegiatan yang sangat memakan waktu dan biaya, karena dewasa ini terdapat jutaan bahkan miliaran halaman web di Internet, berisi data atau tabel data yang potensial untuk diekstraksi. Bisa dibayangkan kalau pengguna harus melakukan ekstraksi data atau tabel data terhadap puluhan, ratusan hingga ribuan halaman web yang menjadi target ekstraksi. Untuk mengatasi permasalahan interaksi manual tersebut, dalam paper ini kami mengajukan satu pendekatan baru melalui pengembangan algoritma dilengkapi aturan dalam mengekstraksi tabel data di dalam halaman web, serta mengintegrasikannya dengan pembuatan Mashup. Pendekatan baru tersebut kemudian diimplementasikan dalam satu Prototipe sistem aplikasi Xtractorz. 2. Analisis Algoritma Xtractorz Dalam paper ini kami memperkenalkan satu bentuk pengembangan algoritma, yaitu algoritma Xtractorz. Algoritma Xtractorz ini sebenarnya merupakan pengembangan algoritma rekursif terdiri dari dua bagian yaitu basis dan rekurens. Basis merupakan keadaan penghenti (kondisi stop) dari pemanggilan sendiri algoritma, sedangkan rekurens adalah pemanggilan algoritma itu sendiri. Algoritma berbasis rekursif ini memiliki fungsi yang dapat memanggil dirinya sendiri, artinya fungsi tersebut dipanggil di dalam tubuh fungsi itu sendiri. Fungsi rekursif sangat berguna apabila diimplementasikan dalam pekerjaan pengurutan data ke dalam bentuk struktur pohon (tree structure). Saat ini algoritma Xtractorz terus disempurnakan sebagai algoritma induk (core algorithm) dalam proses kegiatan web table extraction dari suatu halaman web HTML yang dikolaborasikan dengan tahapan pembuatan Mashup [9]. Pada prinsipnya, algoritma Xtractorz di disain untuk mampu melakukan analisis terhadap tag-tag atau kode-kode HTML yang berhasil diekstraksi dari suatu halaman web target sebagai sumber datanya. Bentuk pseudo algoritma Xtractorz adalah sebagai berikut: DomTree($tag,$KodeHtml,$Parent,$Index) { // Parsing $KodeHtml $HasilParsing=ParsingKode($tag,$KodeHtml); // Kondisi Rekursif Berhenti If (Node($HasilParsing)) { Exit; } Else { // Cari Tag Anak (Child) $TagAnak=Array(); $TagAnak=CariTagAnak($HasilParsing) For (i=0;i<count($TagAnak),i++) { DomTree($TagAnak[$i],$KodeHtmlTagAnak, $Index,$Index++) } } } Algoritma Xtractorz dimulai dengan proses analisa tag-tag atau kode-kode HTML yaitu dengan cara mengindeksing struktur tabel datanya dalam kelompok Node Parent, Child, Sibling Leaf. dan Setelah berhasil dikelompokkan selanjutnya algoritma Xtractorz melakukan pencarian terhadap atribut atau isi tabel data (cell) di dalam kolom-kolom. Sesuai fungsi rekursifnya, algoritma Xtractorz tidak akan pernah berhenti melakukan pencarian sekaligus mengindeksing seluruh tabel data HTML sampai menemukan kondisi stop atau suatu keadaan penghenti. Kondisi stop dalam kasus ini adalah ketika algoritma Xtractorz sudah berhasil menemukan atribut atau isi data dari Node Leaf yang merupakan simpul terakhir atau jalur terluar dalam model struktur pohon DOM (Document Object Model). Selanjutnya, seluruh node-node yang berhasil ditemukan dan diidentifikasi dari bentuk struktur HTML akan dikelompokan dalam bentuk Array. 3. Langkah Algoritma Xtractorz Berikut langkah dari algoritma Xtractorz: 3.1 Langkah Pertama Algoritma Xtractorz menentukan tag HTML awal serta kode HTML nya, dimana dalam sistem indexing nya akan dibuat pertamakali Parent: -1 dan Index: 0, dibuat sebagai urutan ke-1 karena Parent disini tidak punya orang tua diatasnya atau dengan kata lain merupakan struktur tertinggi. 3.2 Langkah Kedua Algoritma Xtractorz melakukan Parsing terhadap kode-kode HTML yang berhasil diekstraksi, agar <tag> dan </tag> yang ada di dalamnya dapat dikeluarkan, sehingga diperoleh: <head>..............</head><body></tbody> 3.3 Langkah Ketiga Algoritma Xtractorz menentukan suatu kondisi berhenti (stop) dari proses rekursif dalam algoritma, yaitu kondisi dimana jika kode HTML sudah tidak memiliki <tag> dan </tag> lagi, maka dapat dipastikan telah diperoleh Node Leaf. Selama Node Leaf belum diperoleh, algoritma rekursif akan terus melakukan pencarian terhadap tag-tag lainnya yang merupakan Child dari tag seperti di langkah pertama, dengan maksud agar diperoleh: <head></head> <body></body> 3.4.3 Proses rekursif tag bagian Table <tablewidth=”100%”border=”0”> <tbody><tr><td>...</td><td>...dst... </td></tr></tbody></table> 3.4.4 Proses rekursif tag bagian Tbody <tbody><tr><td>...</td><td>...dst.. </td></tr></tbody> 3.4.5 Proses rekursif tag bagian Tr (Tr untuk kolom header dari Table) <tr><td>No</td><td>...</td><td>...dst... </td></tr> 3.4.6 Proses rekursif tag bagian Td <td>No</td><td>...</td><td>..dst..</td> <tr><td>...</td><td>...dst..</td></tr> Seperti telah dijelaskan diatas, fungsi rekursif algoritma Xtractorz hanya akan berhenti melakukan pencarian ketika ditemukan atribut dalam Node Leaf , yang merupakan jalur Node terluar dari struktur kode HTML. Selanjutnya, seluruh rangkaian Node yang ditemukan diindeksing untuk di identifikasi atau ditentukan siapa Parent, Child, Sibling dan Leaf nya, kemudian dikelompokan dalam bentuk Array. Visualisasi algoritma Xtractorz berbasis rekursif ini muncul dalam Dashboard atau GUI Xtractorz. Pada layar GUI terlihat seluruh proses web table extraction dan tahapan pembuatan Mashup, mulai dari tahap Loading Page dan Data Retrieval dan tahap lainnya (Gambar 1). 3.4 Langkah Keempat Algoritma Xtractorz melakukan proses perulangan seperti pada langkah pertama untuk setiap Child dari tag yang ada (yang diperoleh), sehingga diperoleh: Gambar 1. Layar Dashboard GUI Xtractorz 3.4.1 Proses rekursif tag bagian Head <head><title>.........</title></head> 3.4.2 Proses rekursif tag bagian Body <body><tablewidth=”100%” border=”0”><tbody><tr><td>... </td><td>...</td><td>..dst..</td> </tr></tbody></body> 4. Aturan dalam Algoritma Xtractorz Untuk mengimplementasikan algoritma Xtractorz secara benar atau sesuai dengan keinginan pengguna, maka dibuat sekumpulan aturan (rules) sebagai acuan bagi algoritma Xtractorz melaksanakan tahapan kegiatannya, dan dibuat dalam notasi sebagai berikut: tabel data utama, sedangkan tabel data lainnya menjadi tabel data pendukung. • (1) Aturan yang mengatur bahwa setiap kode atau tag HTML harus dibuka dengan <tag> dan diakhiri dengan </tag>. • (2) • Aturan yang mengatur bahwa tabel-tabel data yang berhasil diekstraksi oleh algoritma Xtractorz akan dibentuk menjadi sebuah struktur pohon DOM. • Aturan yang mengatur bahwa tag <script> dan </script> di dalam struktur HTML halaman web dapat diabaikan. (3) Aturan yang mengatur bahwa tag-tag atau kode-kode HTML dalam halaman web target yang berisi kode CSS dapat diabaikan. • (4) Aturan yang mengatur bahwa tag-tag atau kode-kode HTML yang menjadi fokus utama dalam algoritma Xtractorz adalah tag <table></table>. • (8) Aturan yang mengatur tabel-tabel data yang diekstraksi dari target URL harus berbentuk dua dimensi dan memiliki sedikitnya dua kolom. • • (7) (9) Aturan yang mengatur bahwa isi konten (sel) atau atribut di setiap kolom tabel data yang akan diekstraksi dari halaman web target, tidak boleh lebih dari 10 kata. 4. Pohon DOM dalam Algoritma Xtractorz Untuk lebih memperjelas bagaimana konsep pohon DOM diimplementasikan dalam algoritma Xtractorz, maka digunakan satu alamat URL (http://partai.info/pemilu2009/) sebagai sampel halaman web target yang akan diekstraksi tabel datanya (lihat Gambar 2). (5) Aturan yang mengatur jika terdapat dua tabel data atau lebih, maka setiap tabel data yang memiliki atribut yang sama di masing-masing kolom tabel data akan menjadi primary key. • PrimaryTable Aturan yang dua tabel data pertama yang Xtractorz secara (6) mengatur bahwa jika terdapat atau lebih, maka tabel data ditemukan oleh Algoritma otomatis diidentifikasi sebagai Gambar 2. Tabel Data Sumber (Table 1 dan 2) Seperti diketahui, pendekatan dengan model struktur pohon DOM digunakan karena merupakan cara paling efektif mengidentifikasi tag-tag atau kode-kode HTML yang akan diekstraksi datanya. Dengan menggunakan model pohon DOM, secara mudah ditemukan jalur Xpath untuk mengidentifikasi tag-tag mulai dari jalur terdalam hingga terluar, atau mulai dari Node tertinggi Root, Parent, Child, Sibling sampai Leaf nya [2]. Sebagai contoh, dalam gambar 3 terlihat jalur XPath untuk kolom “Partai Politik” (/tbody/tr[1]/td[2]) berarti jalur path yang ada dimulai dari path: tbody, yang merupakan tag tr pertama, kemudian ke tag td kedua, dan kemudian mengambil seluruh isi atau atribut dari Node Leaf yang teridentifikasi. Xtractorz para pengguna dapat secara mudah mengekstraksi data-data atau tabel-tabel data relevan dari beragam sumber halaman web sekaligus membuat Mashup nya, tanpa dituntut keharusan memiliki keahlian di bidang pemprograman komputer. Disain arsitektur prototipe Xtractorz dapat dilihat pada Gambar 4. Gambar 4. Sistem Arsitektur Prototipe Xtractorz Gambar 3. Implementasi DOM Tree Sementara untuk menemukan jalur path yang paralel, dilakukan generalisasi path dengan cara mengabaikan jumlah Node Leaf yang ada, contohnya: /tbody/tr/td/ terdiri dari dua kelompok Node Leaf yaitu kelompok /tbody/tr[1]/td[1] dan /tbody/tr[2]/td[2]. Selanjutnya, prototipe Xtractorz melakukan ekstrakasi dari dua tabel data berisi data-data relevan sesuai keinginan pengguna, yaitu: “Nama Partai Politik”, Jumlah Suara”, “Persentase”, “Jumlah Perolehan Kursi Parlemen” dan sebagainya (Gambar 2 dan 3). Kemudian dilakukan ekstraksi pada kolom pertama dari tabel data terkait, dilanjutkan ekstraksi pada kolom-kolom berikutnya berdasarkan posisi kolom pertama tersebut. Sesuai fungsi rekursifnya, algoritma Xtractorz baru akan berhenti ketika kondisi stop telah terpenuhi, yaitu telah ditemukannya atribut dalam Node Leaf dari satu jalur XPath yang diproses. 5. Prototipe Xtractorz dan GUI Xtractorz adalah sebuah “tools” berupa prototipe sistim aplikasi dengan Graphical User Interface nya yang sedang terus dikembangkan, agar mampu mengintegrasikan proses web data extraction dan pembuatan Mashup. Prototipe Xtractorz dibuat dengan bahasa PHP dan AJAX. Diharapkan dengan menggunakan prototipe Sedangkan ruang lingkup prototipe Xtractorz dijabarkan dalam tahapan sebagai berikut: • Pada tahap awal (loading page), prototipe Xtractorz akan mencari halaman web (URL) yang dijadikan target ekstraksi oleh pengguna, kemudian dilakukan retrieval terhadap tabel data dalam format HTML yang tidak terstruktur (tahap data retrieval). • Tahap berikutnya tahap data modeling, dimana tabel data berupa tag-tag HTML hasil retrieval kemudian di restrukturisasi struktur tabelnya dengan cara di parsing setiap elemen data atau atribut yang terdapat dalam kolom tabel data tersebut menggunakan struktur model pohon DOM. • Selanjutnya, tahap data cleaning/ data filtering, yaitu tahap “pembersihan” atau “pengkoreksian” terhadap atribut-atribut yang telah berhasil retrieve, serta tersimpan dalam data repository, untuk diintegrasikan pada tahap selanjutnya. • Pada tahap data integration, terjadi proses integrasi data, dengan cara mengintegrasikan seluruh atribut tabel data hasil ekstraksi atau retrieve terdahulu dengan atribut tabel data hasil ekstraksi terbaru, kemudian dikelompokan pada satu tabel baru terstruktur dalam database MySQL. Pada tahap data integration berlaku formula [7]: (10) Dimana, V : adalah set of values dari kolom baru. S : adalah set of all available data sources dalam data repository. att(s) : adalah sebuah prosedur untuk mengembalikan set of attributes dari sumber s, dimana s S val(a,s): adalah prosedur mengembalikan set of values terkait dengan atribut a dalam sumber s. R : merupakan candidate set yang telah Diranking oleh sistem • Tahap data visualization, merupakan tahap akhir dari rangkaian tahapan pembuatan Mashup, disini seluruh tabel data dan atribut yang telah terintegrasi dalam data repository ditampilkan dalam beragam bentuk visualisasi, seperti: tabel, grafik, web browser, peta (map) halaman web dan lainnya [8]. Visualisasi prototipe Xtractorz dapat dilihat pada Gambar 5. Application Retrieval Modeling Cleaning Integration Popfly Widgets Manual Widget Widget Marmite Widgets Manual Widget Widget Yahoo’s Pipes Mashmaker Widgets Manual Widget Widget Dapper Manual Widget Expert Simile DOM Manual N/A N/A Dapper DOM Manual Manual Manual Xtractorz DOM Auto Auto Auto Apabila dibandingkan dengan sistem aplikasi sejenis lainnya (Tabel 1) [8], yang juga menggunakan konsep pohon DOM dan tahapan Mashup, seperti: Popfly, Marmite, YahooPipes, Mashmaker, Simile, Dapper dan lainnya [5], terlihat bahwa tahapan proses mulai dari data retrieval hingga data integration masih dilakukan secara manual, bahkan ada yang tidak meyediakannya sama sekali (N/A atau Not Available). Sedangkan prototipe Xtractorz, sebagai kesimpulannya, mampu melaksanakan seluruh rangkaian proses web table extraction dan pembuatan Mashup secara lengkap, sekaligus membuat pohon DOM nya secara otomatis (Gambar 1, 2 dan 5). 7. Daftar Pustaka Gambar 5. Visualisasi dalam bentuk Tabel .pdf 6. Hasil Evaluasi dan Kesimpulan Dari hasil evaluasi pengujian prototipe Xtractorz, termasuk algoritma berbasis rekursif serta aturan dan sistim pemodelan pohon DOM, prototipe Xtractorz mampu menyelesaikan secara lengkap seluruh rangkaian proses web table extraction yang terintegrasi dengan pembuatan Mashup. Hasil evaluasi terpenting adalah kemampuan prototipe Xtractorz membangun model pohon DOM secara otomatis di layar GUI berdasarkan hasil indeksing dan parsing terhadap struktur tag-tag atau kode-kode HTML halaman web yang menjadi sumber ekstraksi. Tabel 1. Hasil Evaluasi (N/A: Not Available) System Data Retrieval Data Source Data Cleaning Data Integration [1] C.A. Knoblock, K. Lerman, S. Minton, and I. Muslea, Accurately and reliably extracting data from the web: A machine learning approach, Intelligent Exploration of the Web, Springer-Verlag, Berkeley, CA, 2003. [2] HTML Dom Node Tree, http://www.w3schools.com/htmldom/ dom_nodetree.asp. [3]Jeffrey Wong, Jason I. Hong, Making Mashups with Marmite: Towards End-User Programming for the Web, Human-Computer Interaction Institute, Carnegie Mellon University, Pittsburgh, 2009. [4] Lukáš Ba inka, Ivan Jelínek, Data Extraction By Visual Matching, International Conference on Computer Systems & Technologies, CompSysTech 2009. [5] Mashup Maker Tools, http://mashable.com/2007/07/08/mashups/. [6] R.Baumgartner, S.Flesca, G.Gottlob, Visual Web Information Extraction with Lixto, Proceedings of the 27th International Conference on Very Large Data Bases, p.119-128, 11-14 September, 2001. [7] R. Tuchinda, P. Szekely, C.A. Knoblock, Building Data Integration Queries by Demonstration, In Proc. of IUI, 2007. [8] Rattapoom Tuchinda, Pedro Szekely, and Craig A. Knoblock, Building Mashup by Example, Information Science Institute, University of Southern California, IUI'08, Maspalomas, Gran Canaria, Spain, January 13-16, 2008. [9]Rudy Gultom, Riri Fitri Sari, Bagio Budiardjo, Implementing Web Data Extraction and Making Mashup with Xtractorz, Proceedings of 2010 IEEE 2nd International Advance Computing Conference, p.385-393, 2010. [10] W3C, XPath, (XML Path Language) http://www.w3.org/TR/xpath. [11] W3C DOM, Technical Committee, Document object model technical reports, http://www.w3.org/DOM/DOMTR, 2003.