P E N Y U S U N T U G AS AK H I R
F I K R I K H AI R U L AB R O R - 5 1 0 7 1 0 0 6 1 0
KOMPUTASI PEMBOBOTAN DOKUMEN
BERBAHASA INDONESIA MENGGUNAKAN
MAPREDUCE
P E M B I M B I N G
Pendahuluan
Latar Belakang
Estimasi data elektronik mencapai 0,18 zettabyte
pada tahun 2006 dan diramalkan akan tumbuh
sepuluh kali lipat mencapai 1,8 zettabyte pada tahun
2011
Membutuhkan komputer dengan sumber daya yang
Permasalahan
1. Bagaimana implementasi pembobotan dokumen
berbahasa Indonesia dalam lingkungan Java
2. Bagaimana implementasi komputasi pembobotan
dokumen berbahasa Indonesia menggunakan
MapReduce.
Pendahuluan
Batasan Masalah
1. Data yang digunakan adalah dokumen abtraksi
tugas akhir berbahasa Indonesia.
2. Penghitungan bobot dokumen menggunakan
metode TF-IDF.
3. Komputasi bobot dokumen menggunakan
Pendahuluan
Tujuan
Tujuan dari tugas akhir ini adalah melakukan
komputasi pembobotan dokumen berbahasa
Indonesia manggunakan MapReduce.
Tinjauan Pustaka
Preprocessing
Dokumen spasi, tanda bacaPenghilangan Case folding
Penghilangan stopword Stemming
Pembobotan term
Tinjauan Pustaka
TF-IDF Weighting
(2.1)
Tinjauan Pustaka
Konsep Dasar MapReduce
Map
Input list Fungsi mapping
Tinjauan Pustaka
Konsep Dasar MapReduce
Reduce
Input list
Fungsi reducing
Tinjauan Pustaka
Tinjauan Pustaka
Hadoop
Hadoop adalah framework perangkat lunak berbasis
Java dan opensource yang berfungsi untuk mengolah
data yang sangat besar secara terdistribusi dan berjalan
di atas cluster yang terdiri dari beberapa komputer yang
saling terhubung. Hadoop dapat mengolah data dalam
jumlah yang sangat besar hingga petabyte dan dijalankan
di atas ribuan komputer. Hadoop framework mengatur
segala macam proses detail sedangkan pengembang
aplikasi hanya perlu focus pada aplikasi logiknya(White,
2009).
Tinjauan Pustaka
Hadoop
Tinjauan Pustaka
Hadoop
HDFS
Kelebihan HDFS sebagai distributed filesystem adalah:
•HDFS didesain untuk menyimpan data dengan ukuran yang sangat
besar hingga mencapai terabyte bahkan petabyte.
•HDFS menyimpan data secara reliable. Jika sebuah komputer gagal
beroperasi maka data masih tersedia pada komputer yang lain.
•HDFS didesain dapat mengakses informasi secara cepat karena harus
menangani banyak client yang terhubung.
•HDFS juga terintegrasi dengan Hadoop MapReduce sehingga
memudahkan membaca dan mengkomputasi data secara local.
Kelemahan dari HDFS adalah namenode masih bersifat Single Point of
Tinjauan Pustaka
Hadoop
Tinjauan Pustaka
Hadoop
Tinjauan Pustaka
Hadoop
MapReduce Data Flow
File loaded from local HDFS stores File loaded from local HDFS stores
file file file file Input Format Split Split RR RR map map Partiotioner (sort) reduce OutputFormat Final (k, v) pair Writeback to local HDFS store Intermediate (k,v) pairs Input (k,v pairs) RecordReader Input Format Split Split RR RR map map Partiotioner (sort) reduce
OutputFormat Writeback to local HDFS
store Final (k, v) pair Intermediate (k,v) pairs Input (k,v pairs) RecordReader “Shuffling” process Intermediate (k,v) pairs exchanged by all nodes NODE 1 NODE 2
Tinjauan Pustaka
Hadoop
Tinjauan Pustaka
Hadoop
Bagian MapReduce
Job Configuration Input Locations Map Function Number of Reduce Tasks Reduce Function Output Key Type Output Value TypeOutput Fromat Output Location
Input Splitting & Distribution
Start of Individual Map Tasks
Shuffle, Partition/Sort per Map Output Merge Sort for Map
Outputs for Each Reduce Task Start of Individual Reduce Tasks Collection of Final Output Input Format Provided by
Perancangan Perangkat Lunak
Skema Perangkat Lunak
Corpus dokumen berbahasa Indonesia Data Storing Case folding Stopword removal Stemming
TD-IDF Weighting MapReduceFunction
Hadoop FileSystem Stoplist
Kamus
Preprocessing
Perancangan Perangkat Lunak
Perancangan Data
@UJI ANALITIS DAN EMPIRIS ALGORITMA PENCOCOKAN MULTI-POLA
@Bandung Arry Sanjoyo
@Masalah pencocokan multi-pola banyak dijumpai dalam berbagai aplikasi, diantaranya adalah word processing, dan pencarian informasi dalam hal web. Ada beberapa algoritma untuk pencocokan multi-pola yang menerapkan strategi pencocokan karakter dari kanan ke kiri, diantaranya adalah algoritma A-C dan JJF. Dalam penelitian ini melakukan perbandingan kedua algoritma tersebut dengan cara melakukan analisis, baik secara analitis maupun empiris. Hasil analisis menunjukkan bahwa algoritma JJF akan lebih cepat dari algoritma A-C untuk file teks yang berukuran lebih dari 35.000 karakter. Untuk file biner algoritma A-C akan lebih cepat. Sedangkan analisis worst-case untuk kedua algoritma tersebut berada pada kelas yang sama, yaitu 0(mp+n)
Perancangan Perangkat Lunak
Perancangan Preprocessing
Start Dokumen berbahasa Indonesia Case folding Stopword removal Stemming TF-IDF Weighting Weighted term EndPerancangan Perangkat Lunak
TF-ID Weighting
Job I START Job II Job III ENDPerancangan Perangkat Lunak
TF-ID Weighting – MapReduce Job Data Flow
Distributed FS Mapper Mapper Mapper Reducer Reducer Distributed FS Tf = wordCount/wordsPerDoc Idf = log(totalDocs/docPerWord) TfIdf = Tf * Idf Job I wordCount {docId => [words]} {[word, docId] => 1} {[word, docId] => [1,1,...]}
{[word, docId] => wordCount}
Job II
wordCount per Doc{docId =>[word, wordCount]}
{docId] => [word1, wordCount1], [word2, wordCount2]}
{[word, docId] => wordCount, wordsPerDoc} {[word, docId] => wordCount}
Job III
docCount per Word
Tfidf = (wordCount/wordsPerDoc) * log(totalDocs/docsPerWord)
{word => [docId, wordCount, wordsPerDoc]}
{word => [[doc1, wc1, wpd1], [doc2, wc2, wpd2], ...] } {[word, docId] => [wordCount, wordsPerDoc, docsPerWord]}
{[word, docId] => wordCount, wordsPerDoc}
Perancangan Perangkat Lunak
TF-ID Weighting
Job I
Start Dokumen berbahasa indonesia Case folding Stopword removal Stemming Mapping Reducing Output (term@dokumen), n EndPerancangan Perangkat Lunak
TF-ID Weighting
Job II
Start (term@dokumen), n Mapping Reducing Output (term@dokumen), (n/N) EndPerancangan Perangkat Lunak
TF-ID Weighting
Job III
Start (term@dokumen), (n/N) Mapping Reducing Output term@dokumen, [d/D, n/N, tfidf] EndPerancangan Perangkat Lunak
Perancangan Deployment Environment
Datanode/ Tasktracker Datanode/ Tasktracker Datanode/ Tasktracker Namenode/ Jobtracker Slave Master
Implementasi Perangkat Lunak
Lingkungan Implementasi
Master/ Slave
Sistem Operasi dan Perangkat Lunak
Spesifikasi Hardware
Master - Linux Ubuntu 9.04 - JDK1.6.0.9 - Hadoop 0.20.2 - Procesor Intel (R) Core(TM) 2 Duo CPU E7200 @ 2.53GHz - Memori 2.0 GiB
Slave - Linux Ubuntu 9.04 - JDK1.6.0.9 - Hadoop 0.20.2 - Procesor Intel (R) Pentium(R) 4 CPU 3.00GHz - Memori 1.0 GiB
Slave - Linux Ubuntu 9.04 - JDK1.6.0.9 - Hadoop 0.20.2 - Procesor Intel (R) Pentium (R) D CPU 2.86GHz - Memori 2.0 GiB
Slave - Linux Ubuntu 9.04 - JDK1.6.0.9 - Hadoop 0.20.2
- Procesor Intel (R)
Core(TM) 2 Duo CPU T5750 @ 2.00GHz - Memori 2.0 GiB
Implementasi Perangkat Lunak
Instalasi Hadoop Cluster
Java 1.6.x
Hadoop 0.20.2
Implementasi Perangkat Lunak
Konfigurasi SSH
$ ssh-keygen –t rsa –P “”
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Created directory „/home/hadoop/.ssh‟.
Your identification has been saved in /home/hadoop/.ssh/id_rsa.pub. ...
Implementasi Perangkat Lunak
Konfigurasi Jaringan
#/etc/hosts (untuk master dan slave)
10.151.32.114 hadoop
10.151.32.148 fikri-desktop
10.151.32.138 fikri-desktop01
Implementasi Perangkat Lunak
Konfigurasi Hadoop
Konfigurasi Java Home Environment Variable
Konfigurasi yang menyatakan letak JAVA_HOME environment variable
terdapat pada file <HADOOP_INSTALL>/conf/hadoop-env.sh. Pada
implementasi ini direktori <HADOOP_INSTALL> adalah
/usr/local/hadoop/hadoop-0.20.0/.
Ubah pada bagian file tersebut:
# The java implementation to use. Required
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
Menjadi
# The java implementation to use. Required
export JAVA_HOME=/usr/lib/jdk1.6
Implementasi Perangkat Lunak
Konfigurasi Hadoop
Konfigurasi Master/Slave
Pada file <HADOOP_INSTALL>/conf/masters update isi file menjadi seperti :
hadoop
Sedangkan pada file HADOOP_INSTALL>/conf/slaves update isi file menjadi
seperti :
fikri-desktop
fikri-desktop01
fikri-laptop
Implementasi Perangkat Lunak
Konfigurasi Hadoop
Konfigurasi *-site.xml
<!-- konfigurasi conf/core-site.xml>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop:54310</value>
</property>
<!-- konfigurasi conf/mapred-site.xml>
<property>
<name>mapred.job.tracker</name>
<value>hadoop:54311</value>
</property>
Implementasi Perangkat Lunak
Konfigurasi Hadoop
Konfigurasi *-site.xml
<!-- konfigurasi conf/hdfs-site.xml>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
Implementasi Perangkat Lunak
Menjalankan Hadoop
•Format distributed filesystem yang baru:
$ bin/hadoop namenode –format
•Jalankan HDFS pada komputer master (namenode) dengan mengetikkan perintah:
$ bin/start-dfs.sh
Perintah ini juga akan mengakses file $<HADOOP_INSTALL>/conf/slaves yang terdapat
pada komputer master (namenode) dan akan menjalankan daemon datanode yang telah
terdaftar pada file $<HADOOP_INSTALL>/conf/slaves.
•Jalankan MapReduce pada komputer master (jobtracker) dengan mengetikkan:
$ bin/start-mapred.sh
Perintah ini juga akan mengakses file $<HADOOP_INSTALL>/conf/slaves yang terdapat
pada komputer master (jobtracker) dan akan menjalankan daemon tasktracker yang telah
terdaftar pada file $<HADOOP_INSTALL>/conf/slaves.
Implementasi Perangkat Lunak
Menjalankan MapReduce Job
Buatlah direktori pada HDFS yang akan menampung input file dengan perintah: bin/hadoop dfs -mkdir input
Kopikan file input ini dari Linux ke dalam HDFS dengan perintah :
bin/hadoop fs –copyFromLocal /home/fikri/input/ input Job I
$bin/hadoop jar <HADOOP_INSTALL>/TugasAkhir.jar ta.WordFrequenceInDocument Job II dengan perintah:
$bin/hadoop jar <HADOOP_INSTALL>/TugasAkhir.jar ta.WordCountInDocument Job III dengan perintah:
Implementasi Perangkat Lunak
Menjalankan MapReduce Job
•Buatlah direktori pada HDFS yang akan menampung input file dengan perintah: bin/hadoop dfs -mkdir input
Kopikan file input ini dari Linux ke dalam HDFS dengan perintah :
bin/hadoop fs –copyFromLocal /home/fikri/input/ input •Job I
$bin/hadoop jar <HADOOP_INSTALL>/TugasAkhir.jar ta.WordFrequenceInDocument •Job II dengan perintah:
$bin/hadoop jar <HADOOP_INSTALL>/TugasAkhir.jar ta.WordCountInDocument •Job III dengan perintah:
Implementasi Perangkat Lunak
Implementasi Perangkat Lunak
Implementasi Perangkat Lunak
Uji Coba dan Evaluasi
Tujuan Pengujian
Tujuan pengujian ini adalah untuk mengetahui apakah semua
fungsionalitas program sudah berjalan dengan baik. Pengujian
fungsionalitas yang dilakukan yaitu mencakup:
1. pengujian fungsi penghilangan stopword,
2. pengujian fungsi stemming,
Uji Coba dan Evaluasi
Uji Coba Fungsionalitas
Job I :
Case folding,
stopword removal,
stemming
[email protected] 8 [email protected] 3 [email protected] 2 [email protected] 1 [email protected] 1 [email protected] 1 [email protected] 1 [email protected] 1 [email protected] 1 [email protected] 1 [email protected] 4 [email protected] 2 [email protected] 2 [email protected] 1 [email protected] 1 [email protected] 2 [email protected] 1 [email protected] 1 [email protected] 2 [email protected] 1 [email protected] 1 [email protected] 3 [email protected] 3 [email protected] 1 [email protected] 1 [email protected] 1 [email protected] 1 [email protected] 1Uji Coba dan Evaluasi
Uji Coba Fungsionalitas
Job II :
Menghitung banyak term
dalam dokumen
[email protected] 1/55 [email protected] 1/55 [email protected] 1/55 [email protected] 3/55 [email protected] 3/55 [email protected] 1/55 [email protected] 1/55 [email protected] 1/55 [email protected] 4/55 [email protected] 1/55 [email protected] 1/55 [email protected] 1/55 [email protected] 1/55 [email protected] 1/55 [email protected] 2/55 [email protected] 1/55 [email protected] 1/55 [email protected] 1/55 [email protected] 1/55 [email protected] 2/55 [email protected] 2/55 [email protected] 1/55 [email protected] 1/55 [email protected] 8/55 [email protected] 2/55 [email protected] 1/55 [email protected] 1/55Uji Coba dan Evaluasi
Uji Coba Fungsionalitas
Job III :
Menghitung bobot term
TF-IDF
... [email protected][1/5 , 1/55 , 0.01270855] [email protected][2/5 , 1/55 , 0.00723527] [email protected][2/5 , 1/62 , 0.00641839] [email protected][1/5 , 1/55 , 0.01270855] [email protected] [1/5 , 1/55 , 0.01270855] [email protected] [2/5 , 1/55 , 0.00723527] [email protected] [2/5 , 1/62 , 0.00641839] [email protected] [1/5 , 1/55 , 0.01270855] [email protected] [1/5 , 1/62 , 0.01127371] [email protected] [3/5 , 1/55 , 0.00403361] [email protected] [3/5 , 2/59 , 0.0075203] [email protected] [3/5 , 1/62 , 0.00357821] [email protected] [1/5 , 2/89 , 0.01570719] [email protected] [1/5 , 1/55 , 0.01270855] [email protected] [1/5 , 1/55 , 0.01270855] [email protected] [1/5 , 1/55 , 0.01270855] [email protected] [1/5 , 2/62 , 0.02254742] [email protected] [1/5 , 1/89 , 0.0078536] ...Uji Coba dan Evaluasi
Uji Coba Performa
Data : 100, 500, 1000, 2000, 3000, 4000, 5468 dokumen
Jumlah Input Job I (detik) Jumlah Input Job II (detik) Jumlah Input Job III (detik) SA MR SA MR SA MR 100 327.77 152.00 1 26.00 23.30 1 25.05 20.53 500 1567.34 539.94 1 21.44 22.47 1 29.24 26.52 1000 3077.70 990.81 1 29.58 21.43 1 30.70 29.56 2000 6155.03 3120.55 1 29.89 30.01 1 26.66 29.71 3000 9293.00 3906.57 1 29.90 39.37 1 36.48 35.48 4000 gagal 5573.05 1 gagal 29.37 1 gagal 33.18 5468 gagal 7466.47 1 gagal 32.17 1 gagal 41.96Uji Coba dan Evaluasi
Uji Coba Performa
Job I
Job II
Kesimpulan dan Saran
Kesimpulan
1. Pada tugas akhir ini telah dibuat suatu aplikasi
pembobotan term dokumen berbahasa Indonesia
menggunakan bahasa pemrograman Java dan
framework Hadoop MapReduce.
2. Dari hasil ujicoba performa, waktu komputasi
menggunakan MapReduce lebih cepat dibandingkan
waktu komputasi pada komputer stand alone terutama
pada Job I dengan selisih waktu hingga 5386.43 detik
atau kecepatan komputasi lebih cepat hingga 137,88%.
Kesimpulan dan Saran
Saran
1. Melakukan query pencarian dokumen dengan
jumlah data yang sangat besar.
2. Klusterisasi dokumen yang biasanya memerlukan
jumlah sampel data yang sangat banyak.
Daftar Pustaka
[1] Apache Hadoop http://hadoop.apache.org/
[2] Baeza-Yates, Ricardo. Ribeiro-Neto, Berthier. 1999. Modern
Information Retrieval, New York:ACM Press New York.
[3] Jeffrey Dean & Sanjay Ghemawat. 2004. MapReduce: Simplified Data
Processing on Large Clusters. Google, Inc.
[4] Mahendra, I Putu Adhi Kerta. 2008. Enhanced Confix Stripping
Stemmer dan Algoritma Semut dalam Klasifikasi Dokumen Berbahasa
Indonesia, [Tugas Akhir], Institut Teknologi Sepuluh Nopember
Surabaya.
[5] Manning, Christopher D., Prabhakar Raghavan, Hinrich Schütze.
2009. An Introduction to Information Retrieval. Cambridge:
Daftar Pustaka
[6] Noll, G. Michael. Running Hadoop On Ubuntu Linux (Multi-Node Cluster). http://www.michael-noll.com/wiki/Running_Hadoop_On_Ubuntu_Linux_(Multi-Node_Cluster).
[7] Putri, Yosi Amelia. Stemming Untuk Teks Berbahasa Indonesia Dan Pengaruhnya Dalam Kategorisasi. IT Telkom.
http://www.ittelkom.ac.id/library/index.php?option=com_repository&Itemid=34&task=detail&nim =113050049 (7 Juni 2010).
[8] Tala, Fadillah Z. A Study of Stemming Effects on Information Retrieval in Bahasa Indonesia. http://www.illc.uva.nl/Publications/ResearchReports/MoL-2003-02.text.pdf . (7 Juni 2010) [9] Venner, Jason. 2009. Pro Hadoop. United States of America: Apress.
[10] White, Tom. 2009. HADOOP The Definitive Guide. United State of America: O’Reilly. [11] Yahoo! Hadoop Tutorial . http://developer.yahoo.com/hadoop/tutorial/