SISTEM PENGKLASIFIKASIAN ENTITAS PADA PESAN TWITTER MENGGUNAKAN EKSPRESI REGULAR DAN NAÏVE BAYES
AHMAD THORIQ ABDUL AZIZ
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2013
PERNYATAAN MENGENAI SKRIPSI DAN SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA Dengan ini saya menyatakan bahwa skripsi berjudul Sistem Pengklasifikasian Entitas pada Pesan Twitter Menggunakan Ekspresi Regular dan Naïve Bayes adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini. Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor. Bogor, Agustus 2013 Ahmad Thoriq Abdul Aziz NIM G64090008
ABSTRAK AHMAD THORIQ ABDUL AZIZ. Sistem Pengklasifikasian Entitas pada Pesan Twitter Menggunakan Ekspresi Regular dan Naïve Bayes. Dibimbing oleh AHMAD RIDHA. Makin maraknya penggunaan jejaring sosial seperti Twitter mendorong beberapa instansi untuk mengetahui entitas yang diperbincangkan dan sentimen dari entitas tersebut. Penelitian ini bertujuan membangun sistem yang dapat mengekstraksi entitas pada tweet dan mengklasifikasikan sentimen dari tweet. Proses ekstraksi entitas dilakukan menggunakan ekspresi regular. Ekspresi regular mampu menangkap penulisan entitas yang beragam. Klasifikasi sentimen dilakukan menggunakan metode klasifikasi naïve Bayes model Multinomial dan model Bernoulli. Sentimen dalam penelitian ini terdiri atas 3 kelas yaitu positif, negatif, dan netral. Sebelum masuk tahap klasifikasi, tweet dinormalisasi dengan cara mengganti kata yang tidak baku dengan kata yang baku. Hasil pengujian menunjukkan bahwa ekspresi regular cukup efektif untuk proses ekstraksi entitas. Adapun hasil klasifikasi, metode naïve Bayes memberikan nilai akurasi sebesar 96.75% untuk Multinomial dan 96.33% untuk Bernoulli. Namun, nilai akurasi yang didapatkan bergantung pada kelas netral yakni sebesar 97.88% untuk Multinomial dan 99.95% untuk Bernoulli, sedangkan kelas positif masing-masing sebesar 85.66% dan 33.13% dan kelas negatif masing-masing sebesar 33.67% dan 0%. Kata kunci: Analisis Sentimen, Ekstraksi Entitas, Sistem, Twitter.
ABSTRACT AHMAD THORIQ ABDUL AZIZ. Entity Classification System for Twitter Message Using Regular Expression and Naïve Bayes. Supervised by AHMAD RIDHA. The widespread use of social networks like Twitter encourages some institutions to find out the entities that are discussed and the sentiment toward the entities. This research aims to build a system that can extract entities in tweets and classify the sentiment from the tweets. Entity extraction process is done using regular expressions. Writing regular expressions can capture the diverse entities. Sentiment classification is performed using naïve Bayes classification with Multinomial and Bernoulli models. Sentiment in this research consists of three classes, namely positive, negative, and neutral. Before entering the classification, tweets are normalized by replacing the non-standard words with the standard ones. The test results show that regular expression is quite effective for the entity extraction process. As for the results of the classification, naïve Bayes method produces high accuracy (96.75% for Multinomial and 96.33% for Bernoulli). However, the accuracy obtained depends on the neutral class which amounts to 97.88% for Multinomial and 99.95% for Bernoulli, while the positive class are 85.66% and 33.13% and negative class are 33.67% and 0%. Key words: Entity Extraction, Sentiment Analyst, System, Twitter.
SISTEM PENGKLASIFIKASIAN ENTITAS PADA PESAN TWITTER MENGGUNAKAN EKSPRESI REGULAR DAN NAÏVE BAYES
AHMAD THORIQ ABDUL AZIZ
Skripsi sebagai salah satu syarat untuk memperoleh gelar Sarjana Ilmu Komputer pada Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2013
Penguji : 1 Dr Imas S Sitanggang, SSi MKom 2 Sony Hartono Wijaya, SKom Mkom
Judul Skripsi: Sistem Pengklasifikasian Entitas pada Pesan Twitter Menggunakan Ekspresi Regular dan Naïve Bayes Nama : Ahmad Thoriq Abdul Aziz NIM : G64090008
Disetujui oleh
Ahmad Ridha, SKom MS Pembimbing
Diketahui oleh
Dr Ir Agus Buono, MSi MKom Ketua Departemen
Tanggal Lulus:
PRAKATA Segala puji bagi Allah subhanahu wata’ala atas segala limpahan rahmat serta karunia-Nya sehingga penulis mampu menyelesaikan karya ilmiah ini dengan baik. Shalawat dan salam semoga senantiasa tercurah kepada Nabi Muhammad shallallahu ‘alaihi wasallam serta kepada keluarganya, sahabatnya, serta para pengikutnya yang selalu berpegang kepada Al-Quran dan As-Sunnah. Terima kasih penulis ucapkan kepada Bapak Ahmad Ridha, SKom MS selaku pembimbing yang telah memberikan banyak ide, saran, bantuan, serta dukungan sampai selesainya karya ilmiah ini, serta Ibu Dr Imas S Sitanggang, SSi MKom dan Bapak Sony Hartono Wijaya, SKom MKom yang telah berkenan menjadi penguji dan telah banyak memberikan saran. Ungkapan terima kasih juga disampaikan kepada ayah, ibu, adik, serta seluruh keluarga, atas doa dan kasih sayangnya. Terima kasih juga disampaikan kepada rekan satu bimbingan Galih Kenang Avianto serta rekan-rekan seperjuangan di Ilmu Komputer IPB angkatan 46 atas segala kebersamaan, bantuan, dukungan, serta kenangan bagi penulis selama menjalani masa studi. Semoga karya ilmiah ini bermanfaat. Bogor, Agustus 2013 Ahmad Thoriq Abdul Aziz
DAFTAR ISI DAFTAR TABEL
viii
DAFTAR LAMPIRAN
viii
PENDAHULUAN
1
Latar Belakang
1
Perumusan Masalah
1
Tujuan Penelitian
1
Manfaat Penelitian
2
Ruang Lingkup Penelitian
2
METODE
2
Pengumpulan Data
2
Ekstraksi Entitas Menggunakan Ekspresi Regular
3
Normalisasi Teks
3
Evaluasi Normalisasi Teks
4
Klasifikasi Menggunakan Naive Bayes
4
Evaluasi Klasifikasi Naïve Bayes
5
Lingkungan Implementasi
5
HASIL DAN PEMBAHASAN
6
Pengumpulan Data
6
Ekstraksi Entitas Menggunakan Ekspresi Regular
6
Normalisasi Teks
7
Evaluasi Normalisasi Teks
8
Klasifikasi Menggunakan Naive Bayes
8
Evaluasi Klasifikasi Naïve Bayes
9
SIMPULAN DAN SARAN
10
Simpulan
10
Saran
11
DAFTAR PUSTAKA
11
RIWAYAT HIDUP
18
DAFTAR TABEL 1 Hasil confusion matrix naive Bayes model Multinomial 2 Hasil confusion matrix naive Bayes model Bernoulli
10 10
DAFTAR LAMPIRAN 1 2 3 4 5
Contoh tabel keyword dalam ekstraksi entitas Contoh tabel kamus dalam normalisasi teks Contoh sampel hasil normalisasi teks Contoh tabel kata dan frekuensi pada tiap kelas Contoh tabel kata dan peluang pada tiap kelas
12 13 14 16 17
PENDAHULUAN Latar Belakang Situs jejaring sosial adalah layanan berbasis web yang memungkinkan individu untuk (1) membangun profil publik atau semi-publik di dalam suatu sistem yang terbatas, (2) menghubungkan para pengguna yang terdaftar dalam hubungan saling berbagi, dan (3) melihat dan melintasi hubungan-hubungan yang dibuat oleh sistem (Boyd dan Ellison 2007). Twitter merupakan salah satu situs jejaring sosial yang populer di Indonesia. Berdasarkan penelitian Semiocast, suatu lembaga riset media sosial yang berpusat di Paris, Prancis, jumlah pemilik akun Twitter yang berasal dari Indonesia sebelum tanggal 1 Januari 2012 menempati urutan kelima di dunia dengan jumlah 19.5 juta. Pemanfaatan jejaring sosial memiliki tujuan yang beragam. Ada yang menggunakan Twitter sebagai media iklan, media berniaga, sampai media mencurahkan isi perasaan. Hal ini mendorong beberapa instansi untuk mengetahui informasi yang sedang ramai diperbincangkan di media Twitter ini. Setiap harinya, ada sekitar 2 juta pesan Twitter atau tweet di Indonesia (Tempo 2012). Jumlah tweet yang banyak ini tentu membutuhkan waktu yang lama jika ingin diperiksa isi masing-masing tweet untuk mengetahui topik yang sedang ramai diperbincangkan. Hal ini dapat diatasi dengan sebuah sistem yang dapat menyaring atau mengambil entitas tertentu dalam tweet secara otomatis. Pengambilan entitas tententu dari suatu input dapat menggunakan bahasa ekspresi regular. Bahasa ekspresi regular dapat memeriksa ada atau tidaknya suatu kata pada input yang dengan jumlah sangat banyak dalam waktu yang lebih singkat. Selanjutnya, dari tweet ini juga dapat diambil informasi seperti ekspresi atau sentimen dari pengguna Twitter terhadap entitas tersebut. Namun, dalam memproses tweet untuk mendapatkan informasi tambahan seperti sentimen tentu diperlukan praproses terlebih dahulu. Hal ini disebabkan oleh banyaknya penulisan kata yang tidak baku di dalam tweet. Sehingga, diperlukan adanya normalisasi teks. Setelah tweet dinormalisasi, selanjutnya analisis sentimen dapat lebih mudah dilakukan. Analisis sentimen dapat dilakukan menggunakan klasifikasi naïve Bayes.
Perumusan Masalah Rumusan masalah dalam penelitian ini adalah cara penentuan entitas dan sentimen dalam tweet secara otomatis. Di samping itu, banyaknya kata yang tidak baku di dalam tweet membutuhkan praproses sebelum dilakukan analisis sentimen.
Tujuan Penelitian Penelitian ini bertujuan membuat sistem yang mampu menyaring adanya suatu entitas tertentu yang ada di dalam tweet dan mengklasifikasikan sentimen tweet tersebut.
2
Manfaat Penelitian Penelitian ini diharapkan dapat membantu entitas yang ingin mengetahui perbincangan tentangnya di Twitter. Selain itu, penelitian ini diharapkan dapat memberikan informasi perbincangan tersebut mengandung sentimen positif, negatif, atau netral.
Ruang Lingkup Penelitian Ruang lingkup penelitian ini menggunakan data statis dari Twitter yang berbahasa Indonesia yang telah dikumpulkan. Penyaringan keberadaan entitas tidak menangani kasus pengenalan entitas yang ambigu. Analisis sentimen hanya mencakup 3 kelas yaitu positif, negatif, dan netral.
METODE Metode yang digunakan dalam penelitian ini terdiri atas 6 tahap. Tahap pertama adalah pengumpulan data. Data yang digunakan berasal dari jejaring sosial Twitter. Setelah data didapatkan, langkah selanjutnya ialah melakukan ekstraksi entitas terhadap data tersebut. Kemudian, data dianalisis untuk mendapatkan sentimennya. Namun, sebelum dilakukan analisis sentimen, data harus masuk ke dalam tahap praproses terlebih dahulu, yaitu normalisasi teks. Normalisasi teks bertujuan mengubah tweet yang awalnya sulit dimengerti menjadi tweet yang mudah dimengerti. Untuk mengetahui tingkat efektivitas proses normalisasi teks ini, dilakukan evaluasi terhadap hasil normalisasi. Selanjutnya dilakukan analisis sentimen menggunakan klasifikasi naïve Bayes terhadap hasil normalisasi teks. Tahap terakhir adalah evaluasi hasil klasifikasi naïve Bayes. Diagram alir penelitian ini dapat dilihat pada Gambar 1.
Pengumpulan Data Tahap pertama adalah pengumpulan data. Data berupa kumpulan tweet yang sudah terklasifikasi secara manual berdasarkan entitas beserta sentimennya. Data diperoleh dari Binokular sebanyak 53 619 tweet. Tiap tweet dilengkapi dengan atribut seperti identitas, sentimen, topik, isi pesan, keyword, kode bahasa, nama pengguna Twitter, nama entitas, tanggal, jumlah dibagikan, dan identitas editor.
3
Pengumpulan Data
Ekstraksi Entitas Menggunakan Ekspresi Regular
Evaluasi Klasifikasi Naïve Bayes
Klasifikasi Menggunakan Naïve Bayes
Normalisasi Teks
Evaluasi Normalisasi Teks
Gambar 1 Metode penelitian Ekstraksi Entitas Menggunakan Ekspresi Regular Ekstraksi entitas adalah proses ekstraksi dokumen metadata dari dokumen teks yang tidak terstruktur secara otomatis. Entitas yang dimaksud dapat berupa nama orang, nama lembaga, lokasi, tanggal, dan sebagainya. Ekstraksi entitas dalam penelitian ini dilakukan menggunakan ekspresi regular dengan mengacu pada keyword atau kata kunci yang sudah ada di tabel (contoh pada Lampiran 1). Keyword didapatkan dari data yang sudah terklasifikasi. Ekspresi regular mampu menjelaskan sebuah set string tanpa menyebutkannya secara eksplisit (Yu et al. 2006). Penggunaan ekspresi regular dalam pembuatan keyword ini bertujuan menangkap (matching) entitas yang penulisannya beragam. Misalnya, entitas indosat dapat ditulis oleh pengguna Twitter dengan beragam kata seperti indosat, indosaaat, atau indosaatt. Kasus semacam ini dapat diselesaikan dengan menggunakan ekspresi regular yaitu indo.*t.*.
Normalisasi Teks Tweet hasil pengumpulan data selanjutnya dinormalisasi. Hal ini bertujuan mempermudah proses analisis sentimen terhadap entitas-entitas tadi mengingat banyaknya kata yang tidak baku di dalam tweet seperti singkatan, tanggal, jumlah mata uang, dan akronim. Kata yang tidak baku memiliki kecenderungan yang lebih tinggi dalam hal ambiguitas interpretasinya atau pelafalannya dibanding kata yang sudah baku. Misalnya, kata saya atau aku bisa ditulis dengan kata q, aq, ak, sy, gw, gue, gua, dan masih banyak lagi. Jika tidak dilakukan normalisasi, kata-kata tersebut akan berdiri sendiri. Padahal, seharusnya kata-kata tersebut terkelompokkan ke dalam konteks yang sama, yaitu saya. Kasus semacam ini dapat diselesaikan dengan normalisasi teks dengan cara mengganti kata yang tidak baku dengan kata yang sesuai konteksnya (Sproat et al. 2001). Proses normalisasi teks dilakukan menggunakan penggantian dengan kata baku dan fungsi penghilangan karakter berulang. Sebelum dilakukan penggantian dengan kata baku, harus dibuat terlebih dahulu sebuah kamus yang berisi kata yang tidak baku berikut kata bakunya (contoh pada Lampiran 2) sehingga fungsi penggantian dengan kata baku ini mencari kata yang tidak baku dan kemudian menggantinya dengan kata baku yang ada di kamus.
4
Evaluasi Normalisasi Teks Tweet hasil normalisasi teks dievaluasi secara manual. Evaluasi ini bertujuan menghitung tingkat akurasi dari hasil normalisasi. Proses evaluasi dilakukan terhadap 1000 tweet yang diambil secara acak mengingat banyaknya jumlah tweet yang ada (contoh pada Lampiran 3).
Klasifikasi Menggunakan Naive Bayes Tweet yang sudah dinormalisasi dilakukan proses klasifikasi. Klasifikasi dilakukan untuk mengelompokkan entitas berdasarkan respon terhadap entitas tersebut atau analisis sentimen. Respon atau sentimen pada penelitian ini terdiri atas 3 kelas, yaitu positif, negatif, dan netral. Tweet yang termasuk di dalam kelas positif contohnya: "Ok. Thanks! @XLCare: @fit_star Pagi mba Fitta, sudah kami follow back ya, silahkan DM :) #thanX ^DS". Adapun untuk kelas negatif contohnya: @XLCare Halooo baru isi pulsa dipake smsan aja kok bisa habis ya pulsa nya. Bisa minta detail pemakaian pulsa saya dr kmrn sore?. Kelas netral contohnya: RT @XL123: RT @XL123: RT @xlcare: Tweepscare,RIM adl jalur khusus layanan Blackberry,shg dampak maintenance tjd pd slrh pngguna Blackberry tdk hany. Sebelum diklasifikasi, data dibagi 2, yakni data latih dan data uji. Data latih digunakan untuk memberi pengetahuan kepada sistem tentang ciri-ciri suatu kelas. Untuk mengambil ciri-ciri suatu kelas, dilakukan proses ekstraksi fitur yang di dalamnya terdapat pembobotan kata berdasarkan kemunculan kata. Fungsi klasifikasi yang digunakan adalah fungsi klasifikasi dengan basis peluang yaitu naïve Bayes. Pada klasifikasi naïve Bayes terdapat 2 model, yaitu model Multinomial dan model Bernoulli. Penelitian ini mengujicobakan kedua model tersebut. Pada model Multinomial, setiap data uji dihitung frekuensi kata t pada tiap data latih kelas c (Tct). Kemudian dari data latih, jumlah kata (∑t’€vTct’) dan jumlah vocabulary (B) dihitung. Setelah frekuensi kata, jumlah kata, dan jumlah vocabulary didapatkan, akan dihitung nilai peluang untuk kata t masuk pada kelas c (𝑃(𝑡|𝑐 )). Perhitungan peluang ini dapat bernilai nol apabila frekuensi kata pada data uji di kelas c (Tct) bernilai nol. Untuk mengatasi masalah ini, dimasukkan koreksi seperti Laplace smoothing di semua probabilitas perkiraan sehingga peluang tidak bernilai nol (Manning et al. 2008). Perhitungan peluang ini dapat dilihat pada persamaan berikut: P(t|c)=
Tct+1 ( ∑t'∈V Tct')+B
(1)
Setelah didapatkan nilai peluang tiap kata, selanjutnya adalah mengalikan nilai peluang tiap kata dengan memberikan pangkat (n) sesuai nilai frekuensi kemunculan kata tersebut pada data uji. Hasilnya dikalikan kembali dengan nilai peluang tiap kelas P(c) (persamaan 2). Di sinilah hasil Laplace smoothing sangat berpengaruh karena apabila nilai peluang kata adalah nol, maka nilai peluang data uji menjadi nol juga. Hasil yang diambil adalah hasil perkalian yang terbesar.
5
N
P(c|d)= ∏ P(t|c)n *P(c)
(2)
i=1
Sementara itu, pada model Bernoulli, setiap data uji dihitung nilai peluang tiap kata terhadap masing-masing kelas. Perbedaannya dengan model yang pertama yaitu perhitungan peluang menggunakan jumlah data yang mengandung kata t (Tct), bukan frekuensi kemunculan kata t (Manning et al. 2008). Selain itu, jika model Multinomial menggunakan jumlah kata dan jumlah vocabulary, model Bernoulli menggunakan jumlah data latih tiap kelas (Tc) dan jumlah kelas (∑c). Peluang tiap kata dihitung menggunakan persamaan: P(t|c)=
Tct+1 Tc+∑c
(3)
Setelah peluang tiap kata didapatkan, nilai dari hasil perkalian invers untuk tiap peluang kata pada data latih selain kata pada data uji dihitung. Misalnya ada sekumpulan kata pada data latih D dan sekumpulan kata pada data uji T. Selanjutnya dicari kata-kata pada data latih D yang independen dengan kata-kata pada data uji T . Dari kata-kata tersebut kemudian diambil nilai peluang kata (dalam hal ini diberi simbol P(t’|c)) dan jumlah kata (M). Nilai peluang kalimat terhadap suatu kelas dihitung dengan persamaan: N
M
P(c|d)= ∏ P(t|c)*P(c)* ∏ (1-P(t' |c)) i=1
(4)
i=1
Evaluasi Klasifikasi Naïve Bayes Tahap terakhir adalah evaluasi untuk mengetahui tingkat akurasi dari hasil pengklasifikasian kelas pada data uji. Perhitungan tingkat akurasi dilakukan dengan membandingkan antara hasil pengklasifikasian menggunakan metode naïve Bayes dan pengklasifikasian secara manual.
Lingkungan Implementasi Lingkungan implementasi yang digunakan sebagai berikut: Perangkat lunak: Microsoft Windows 8 Professional 64 bit, Notepad++, dan XAMPP 1.7.4 Perangkat keras: prosesor Intel® Core™ i3-2350M CPU @ 2.30GHz, memori 8 GB, dan hard disk 500 GB.
6
HASIL DAN PEMBAHASAN Pengumpulan Data Data tweet yang sudah terklasifikasi berjumlah 53 619 data yang terdiri atas 56 atribut. Dari 56 atribut, diambil beberapa atribut yang digunakan, seperti identitas tweet, isi tweet, pengguna Twitter, nama entitas, serta sentimennya. Identitas tweet digunakan sebagai identitas data, isi tweet dan pengguna Twitter sebagai input sistem, nama entitas sebagai sumber penyusunan daftar keyword, dan sentimen dari tweet sebagai parameter pada tahap klasifikasi.
Ekstraksi Entitas Menggunakan Ekspresi Regular Proses ekstraksi entitas pada penelitian ini menggunakan ekspresi regular. Akan tetapi, sebelum dilakukan ekstraksi entitas harus dibuat sebuah daftar keyword terlebih dahulu yang terdiri atas nama entitas dan nama pelanggan dari entitas. Nama entitas berisi daftar dari pola entitas yang dibuat menggunakan ekspresi regular. Oleh karena itu, ekstraksi entitas ini hanya dilakukan untuk entitas-entitas yang sudah ada di dalam keyword. Keyword yang telah dibuat terdiri atas 131 data seperti indos.*t.*, .*ancol.*, .*kep.*seribu, sedangkan nama pelanggan dari entitas berisi daftar nama pelanggan dari masing-masing entitas, contohnya untuk entitas indos.*t.*, nama pelanggannya adalah ISAT. Setelah keyword selesai dibuat, selanjutnya adalah proses pencocokan pola entitas terhadap masing-masing tweet. Proses pencocokan ini menggunakan fungsi preg_match yang terdapat pada bahasa pemrograman PHP. Hasilnya berupa data tweet beserta entitasnya yang kemudian disimpan ke dalam tabel baru yang terdiri atas identitas tweet, isi tweet, dan nama pelanggan entitasnya. Hasil ini kemudian dibandingkan dengan data yang sudah terklasifikasi secara manual untuk mengetahui tweet yang belum terekstraksi berdasarkan pola entitas yang ada. Tweet yang belum terekstrasi ini dianalisis lagi karena bisa saja sebuah tweet masuk ke dalam sebuah entitas tertentu bukan karena terdapatnya pola entitas pada tweet, tetapi karena terdapatnya pola entitas pada pengguna Twitter. Contoh: RT @sabrinabadawi: Now singing what makes you beautiful with Umar while Izzah tgah cerita dekat pakcik makcik fasal kahwin dia. Tweet tersebut tidak mengandung satu pun entitas pada keyword, namun jika dicek pada data yang sudah terklasifikasi ternyata masuk ke dalam entitas yaris. Hal ini terjadi karena pengguna Twitter-nya bernama firdaus_yaris. Untuk itu, perlu dilakukan pemeriksaan terhadap pengguna Twitter pada tweet yang tidak terekstraksi. Dari sini dilakukan penambahan pola pada keyword entitas. Setelah itu, dilakukan proses konkatenasi atau penggabungan antara tweet dan pengguna Twitter. Hasil konkatenasi ini kemudian diekstrasi entitas kembali hingga optimal. Proses ekstraksi entitas dikatakan optimal jika tweet yang tidak terekstraksi memang karena tidak ditemukannya pola entitas baik pada tweet maupun pada pengguna Twitter. Total dari hasil ekstraksi entitas berjumlah 69 601, sedangkan total tweet yang tidak terekstraksi sebanyak 664. Penjumlahan dari tweet hasil ekstraksi entitas dan tweet yang tidak terekstraksi ini lebih besar dari data awal. Hal ini terjadi karena bisa saja sebuah tweet terekstraksi ke dalam 2 atau lebih entitas. Contohnya tweet
7
ada apa dgn sinyal @Telkomsel pagi ini? AS, @simPATI dan Halo sinyalnya SOS semua, mungkin klo 1 hp sih gpp, ini tiga-tiganya :(. Tweet tersebut terekstraksi ke dalam 3 entitas sekaligus, yaitu telkomsel, as, dan simpati.
Normalisasi Teks Banyak tweet yang mengandung kata yang tidak baku. Kata yang tidak baku dapat berupa perulangan karakter sehingga sulit dikenali maupun singkatansingkatan kata, contohnya Pgn berenang deh, pgn dufan juga, eh tp pgn puncak. Tp pgn pantai juga, eh tp...pgn kelombok bgt☹. Kasus perulangan karakter perlu dilakukan penghilangan karakter yang berulang. Penghilangan karakter hanya dilakukan pada perulangan karakter teks, bukan karakter angka, karena jika dilakukan pada angka justru membuat tweet semakin sulit dipahami atau memiliki arti yang berbeda. Contohnya pada kasus perulangan angka nomor telepon, waktu, laju kendaraan, merek kendaraan, dan sebagainya. Pada kasus singkatan-singkatan kata yang tidak baku, dibuat sebuah kamus yang berisi kata yang tidak baku beserta kata bakunya. Proses normalisasi teks melalui 3 tahap, yaitu penggantian dengan kata baku, penghilangan karakter berulang, dan penggantian dengan kata baku. Tahap pertama dilakukan penggantian dengan kata baku terlebih dahulu sebelum penghilangan karakter berulang karena terdapat kasus seperti kata agree, career, ttwa, ttng, ttd, mmuji, mmg, mmpu, dan masih banyak lagi. Jika dilakukan penghilangan karakter berulang terlebih dahulu terhadap kata-kata tersebut, arti sebenarnya akan hilang. Contohnya, untuk kata ttd jika langsung dihilangan karakter berulangnya akan menjadi td. Kata ttd yang seharusnya berarti tanda tangan, justru memiliki arti baru yaitu tadi. Pada tahap terakhir juga dilakukan penggantian dengan kata baku kembali karena terdapat kasus lain seperti pada kata prncanaan. Kata tersebut maksudnya adalah perencanaan. Untuk itu jika dilakukan proses penggantian dengan kata baku, hasilnya menjadi kata perencanaan. Namun, jika dilakukan proses penghilangan karakter berulang, kata perencanaan berubah menjadi perencanan. Maka, pada proses terakhir ditambahkan proses penggantian dengan kata baku lagi dengan catatan menambahkan ke dalam kamus yaitu jika ada kata perencanan diganti dengan kata perencanaan. Begitu juga untuk kata-kata yang lain pada kasus yang sama. Jadi, untuk input yang telah disebutkan, yakni Pgn berenang deh, pgn dufan juga, eh tp pgn puncak. Tp pgn pantai juga, eh tp...pgn kelombok bgt☹ setelah melalui tahap normalisasi berubah menjadi: ingin berenang deh, ingin dufan juga, eh tetapi ingin puncak. tetapi ingin pantai juga, eh tetapi.ingin kelombok bgt☹. Dalam normalisasi teks juga terdapat beberapa kasus kata yang tidak tertangani karena kata yang tidak baku memiliki makna ambigu yang artinya memiliki makna lebih dari satu, contohnya: bet, bkn, bwt, gws, dah, dan masih banyak lagi. Kata bet bisa berarti banget, namun bisa juga berarti nama panggilan seseorang. Begitu juga kata bwt, bisa berarti buat/membuat, namun bisa juga berarti untuk. Pada penelitian ini juga sempat digunakan fungsi jarak levenshtein pada tahap normalisasi teks. Namun, ternyata hasilnya tidak bagus. Fungsi jarak levenshtein
8
menghitung jarak kedekatan dari dua buah string melalui penambahan, penghilangan, dan penggantian karakter hingga kedua string tersebut cocok (Freeman et al. 2006). Dalam hal ini jarak yang dihitung adalah jarak kedekatan kata antara kata pada tweet dan kata pada Kamus Besar Bahasa Indonesia. Hasilnya banyak kata yang tidak sesuai harapan, seperti kata almt yang seharusnya berarti alamat namun dengan fungsi jarak levenshtein justru lebih dekat jaraknya dengan kata alit, kata alsn yang seharusnya berarti alasan namun lebih dekat jaraknya dengan kata alin, dan masih banyak lagi. Selain itu, fungsi jarak levenshtein juga membutuhkan waktu lebih lama.
Evaluasi Normalisasi Teks Selanjutnya, untuk mengetahui tingkat akurasi dari proses normalisasi teks dilakukan pengambilan sampel secara acak sebanyak 1000 data untuk dievaluasi. Evaluasi dilakukan dengan cara membandingkan antara tweet sebelum normalisasi dengan tweet hasil normalisasi. Sebuah tweet dinyatakan sukses dari tahap normalisasi teks jika hasilnya berupa tweet yang lebih mudah dimengerti. Tweet yang dianggap sukses diberi nilai 1, sedangkan tweet yang dianggap gagal diberi nilai 0. Total tweet yang bernilai 1 sebanyak 911 dari 1000 data, sehingga hasil akurasi sebesar 91.1%.
Klasifikasi Menggunakan Naive Bayes Data hasil normalisasi teks diklasifikasikan menggunakan naïve Bayes. Sebelumnya dilakukan praproses data yang bertujuan mengelompokkan data berdasarkan entitas dan kelas dan membaginya menjadi data latih dan data uji dengan proporsi pembagian 3:1. Total data latih berjumlah 40 458 yang terdiri atas 1451 dari kelas positif, 389 dari kelas negatif, dan 38 618 dari kelas netral. Total data uji berjumlah 13 161 yang terdiri atas 495 dari kelas positif, 146 dari kelas negatif, dan 12 520 dari kelas netral. Model yang pertama yaitu model Multinomial, yaitu setiap data uji dihitung nilai peluangnya terhadap tiap kelas. Nilai peluang terbesar yang diambil. Misalnya, sebuah data memliki peluang terhadap kelas positif sebesar 0.2, kelas negatif sebesar 0.2, dan kelas netral sebesar 0.25. Hal ini berarti bahwa data masuk ke dalam kelas netral. Data uji dalam penelitian ini berupa kalimat sehingga harus dipotong menjadi kata dan dihitung jumlah kata yang unik atau tidak sama (N). Dari tiap kata tersebut dihitung nilai frekuensi kemunculannya pada keseluruhan data latih di tiap kelas (Tct) dan frekuensi kemunculannya pada kalimat (n). Untuk mempermudah proses perhitungan frekuensi kemunculan kata pada keseluruhan data latih, dilakukan proses training terhadap data latih. Training ini berupa pembuatan suatu tabel yang berisi kata beserta frekuensi kemunculannya di dalam data latih (contoh pada Lampiran 4). Jadi, ketika ingin mencari frekuensi kemunculan suatu kata, yang dilakukan hanya mengecek kata tersebut ada di dalam tabel hasil training atau tidak. Jika ada, maka nilai frekuensi diambil dari nilai field frekuensi pada tabel. Jika tidak ada, maka nilai frekuensi sebesar 0 yang berarti bahwa kata tersebut tidak terdapat di dalam data latih. Selanjutnya, jumlah kata
9
pada data latih masing-masing kelas dihitung (Tct'). Total kata pada data latih kelas positif sebanyak 3795, kelas negatif sebanyak 1651, dan kelas netral sebanyak 69 004. Pada keseluruhan data latih, dihitung juga jumlah kata yang unik atau vocabulary (B) yang dalam penelitian ini berjumlah 71 178. Setelah nilai Tct, Tct', dan B didapatkan, maka nilai peluang suatu kata terhadap suatu kelas (P(t|c)) dapat dihitung menggunakan persamaan 1. Setelah nilai peluang tiap kata didapatkan, selanjutnya dicari jumlah data latih keseluruhan kelas dan jumlah data latih masing-masing kelas. Dari sini, nilai peluang tiap kelas (P(c)) dihitung dengan cara membagi jumlah data latih tiap kelas dengan jumlah data latih keseluruhan kelas. Terakhir, nilai peluang kalimat (d) terhadap suatu kelas (c) dicari menggunakan persamaan 2. Penempatan suatu data ke dalam suatu kelas dilakukan berdasarkan nilai peluang P(c|d). Nilai P(c|d) terbesar menunjukkan bahwa peluang data untuk masuk ke dalam kelas tersebut paling besar atau paling memungkinkan. Waktu eksekusi yang dibutuhkan dalam proses klasifikasi menggunakan naïve Bayes model Multinomial adalah sebesar 3.57 detik per tweet. Model kedua yaitu model Bernoulli, yaitu setiap data uji dihitung juga nilai peluangnya terhadap tiap kelas. Perbedaannya dengan model Multinomial, perhitungan peluang pada model ini menggunakan jumlah dokumen yang mengandung suatu kata. Langkah pertama, setiap data uji dipotong menjadi katakata. Tiap kata dihitung jumlah dokumen pada tiap kelas yang mengandung kata tersebut (Tct). Kemudian, total dokumen latih tiap kelas (Tc) dan jumlah kelas (∑c) dihitung juga. Selanjutnya, nilai peluang tiap kata dihitung dengan persamaan 3. Untuk mempermudah perhitungan nilai peluang tiap kata, sebelumnya dilakukan proses training seperti pada model Multinomial. Perbedaannya dengan model Multinomial, pada training kali ini dilakukan pembuatan tabel yang berisi kata, nilai peluang, dan kelas (contoh pada Lampiran 5). Perhitungan nilai peluang kata didapatkan dari tabel jika ada atau menggunakan persamaan 3 jika tidak dengan nilai Tct = 0. Setelah nilai peluang tiap kata didapatkan, selanjutnya dihitung nilai dari hasil perkalian invers untuk tiap peluang kata pada data latih selain kata pada data uji. Misalnya, ada sekumpulan kata pada data latih D, dan sekumpulan kata pada data uji T. Dari sini dicari kata-kata pada data latih D yang independen dengan kata-kata pada data uji T . Dari kata-kata tersebut diambil nilai peluang kata (dalam hal ini diberi simbol P(t’|c)) dan jumlah kata (M). Nilai peluang kalimat terhadap suatu kelas dihitung menggunakan persamaan 4. Rata-rata waktu eksekusi yang dibutuhkan dalam proses klasifikasi menggunakan naïve Bayes model Bernoulli adalah sebesar 7.14 detik per tweet.
Evaluasi Klasifikasi Naïve Bayes Tahap terakhir adalah evaluasi hasil dari klasifikasi menggunakan naïve Bayes. Evaluasi bertujuan mengetahui data yang tidak terklasifikasi secara benar dan data yang terklasifikasi secara benar, sehingga tingkat akurasi dapat dihitung. Data disebut tidak terklasifikasi secara benar jika hasil kelasnya berbeda dari kelas yang seharusnya. Total hasil klasifikasi yang salah dari model Multinomial sebanyak 428 dari 13 161 sehingga tingkat akurasi sebesar 96.75%. Hasil evaluasi model Multinomial dapat dilihat pada Tabel 1. Sementara itu, total hasil klasifikasi
10
yang salah dari model Bernoulli sebanyak 483 dari 13 161 sehingga tingkat akurasi sebesar 96.33%. Hasil evaluasi model Bernoulli ini dapat dilihat pada Tabel 2 Hasil confusion matrix naive Bayes model Bernoulli. Meskipun tingkat akurasi yang dihasilkan oleh kedua model ini cukup besar, namun jika dilihat tingkat akurasi per kelas memberikan hasil yang tidak seimbang. Pada model Multinomial, tingkat akurasi untuk kelas positif sebesar 85.66%, kelas negatif sebesar 37.67%, dan kelas netral sebesar 97.88%, sedangkan pada model Bernoulli, tingkat akurasi kelas positif sebesar 33.13%, kelas negatif sebesar 0%, dan kelas netral sebesar 99.95%. Dari sini dapat dilihat bahwa tingkat akurasi keseluruhan sangat bergantung pada tingkat akurasi salah satu kelas saja yaitu kelas netral. Hal ini terjadi karena jumlah data kelas netral yang jauh lebih banyak dibanding kelas positif dan kelas negatif. Tabel 1 Hasil confusion matrix naive Bayes model Multinomial Hasil Positif
Negatif
Netral
Positif
424
3
68
Negatif
32
55
59
Netral
201
65
12254
Dugaan
Tabel 2 Hasil confusion matrix naive Bayes model Bernoulli Hasil Positif
Negatif
Netral
Positif
164
0
331
Negatif
2
0
144
Netral
6
0
12514
Dugaan
SIMPULAN DAN SARAN Simpulan Simpulan dari penelitian ini adalah: 1 Ekspresi regular cukup efektif untuk proses ekstraksi entitas karena dapat menangkap beragam bahasa dengan menggunakan pola. 2 Proses normalisasi teks menggunakan fungsi penggantian kata baku menghasilkan akurasi yang cukup baik, yaitu sebesar 91.1 % (911 dari 1000 sampel data). Selain itu, proses normalisasi teks dengan penggantian kata baku ini juga membutuhkan waktu yang lebih cepat dibandingkan dengan menggunakan fungsi jarak levenshtein.
11
3
Sistem pengklasifikasian tweet menggunakan naïve Bayes memberikan nilai akurasi yang cukup besar yaitu sebesar 96.75% untuk model Multinomial dan 96.33% untuk model Bernoulli.
Saran 1
2
Saran untuk penelitian selanjutnya adalah: Pada tahap normalisasi teks masih terdapat kesalahan pada beberapa kata seperti bet, bkn, bwt, gws, dan dah sehingga perlu dicoba menggunakan metode normalisasi teks yang lain. Jumlah data per kelas perlu diseimbangkan.
DAFTAR PUSTAKA Boyd DM, Ellison NB. 2007. Social network sites: definition, history, and scholarship. Journal of Computer-Mediated Communication. 13(1): 11. Manning CD, Raghavan P, Schütze H. 2008. An Introduction to Information Retrieval. Cambridge (UK): Cambridge University Press. Semiocast. 2012. Twitter reaches half a billion accounts-more than 140 millions in the U.S. [internet]. [diunduh 2012 Des 09]. Tersedia dari: http://semiocast.com/publications/2012_07_30_Twitter_reaches_half_a_bill ion_accounts_140m_in_the_US. Sproat S, Black AW, Chen S, Kumar S, Ostendorf M, Richards C. 2001. Normalization of non-standard words. Computer Speech and Language. 15:287-333. doi:10.1006/csla.2001.0169. Tempo. 2012. Di Indonesia, hanya 2 juta pengguna twitter yang berkicau tiap hari [internet]. [diunduh 2012 Des 09]. Tersedia dari: http://m.bisnisaceh.com/telekomunikasi/di-indonesia-hanya-2-jutapengguna-twitter-yang-berkicau-tiap-hari/index.php. Yu F, Chen Z, Diao Y, Lakshman TV, Katz RH. 2006. Fast and memory-efficient regular expression matching for deep packet inspection. Architecture for Networking and Communications Systems; 2006 Des 3-5; California, Amerika Serikat. California (US): Association for Computing Machinery. hlm 93-102. Freman AT, Condon SL, Ackerman CM. 2006. Cross linguistic name matching in English and Arabic: a “one to many mapping” extension of the levenshtein edit distance algorithm. Proceedings of the Human Language Technology Conference of the North American Chapter of the ACL; 2006 Jun; New York, Amerika Serikat. New York (US): Association for Computational Linguistic. hlm 471-478.
12
Lampiran 1 Contoh keyword dalam ekstraksi entitas No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Keyword .*ancol.* .*android.* .*kep.*seribu .*avanza.* .*exora.* .*pulau.*seribu .*ragunan .*subaru.* .*tabloidnova.* .*vios .*volkswagen .*volvo.* hyundai tucson im3 indos.*t.* indos.*tjabar infobandung infrastruktur it matahari .*mall matahari .*store
Entitas ancol xirka pulauseribu tam proton pulauseribu ragunan subaru ancol tam volkswagen volvo hyndai isat isat isatjabar isatjabar xirka matahari matahari
13
Lampiran 2 Contoh tabel kamus dalam normalisasi teks Sebelum abis acra acrany acrnya activity ad aing aj blng blnja blom blm bnar bner bnr wis wkt wktu wtf wrn wuedan yaolo yaowoh yaud yaudah
Sesudah habis acara acaranya acaranya aktivitas ada saya saja bilang belanja belum belum benar benar benar sudah waktu waktu bangsat warna edan ya Allah ya Allah ya sudah ya sudah
14
Lampiran 3 Contoh sampel hasil normalisasi teks No 1
ID 2525117
2
2529402
3
2529443
4
2529468
5
2529469
6
2536346
7
2651991
Sebelum @xl123 tarif promo data roaming masih aktif kaga? Ato emang sampe 7 juni lalu aja? http://t.co/WJKdgrYw @anggie_mcqueen Terima kasih atas kepercayaannya dalam menggunakan produk Telkomseln, semoga dapat memenuhi harapan, tks. @novan_parisa Flash bs dgunakan utk aplikasi Router (LAN), namun memerlukan setingan khusus, silahkan kunjungi Grapari terdekat, tks. @diankrstn coba hard restart hp, jika masih kendala, silahkan mention kami kembali ya. *AS @r_indahyunita Utk Iphone bs gunakan Flash Unlimited, tersedia utk krt Simpati/As/Halo, info lengkap: http://t.co/6hH9a8JN, tks. @D4rm4nsy4h Jk sinyal tdk stabil,Cb plh jaringn manual lalu plh sinyal GSM only,matikn hp sesaat,aktifkan lgi&plh jaringan otomatis.Tks beuuh-__- wcnya kek sekalian:pRT @ehsitin: ya tau paling seluas selokan yg ada di ancol haha:p RT MFS__SFM: (cont) http://t.co/aq15ONQy
Sesudah xl123 tarif promo data roaming masih aktif tidak? atau emang sampai 7 juni lalu saja? htp: t.cowok wjkdgryw angie_mcquen terima kasih atas kepercayaannya dalam menggunakan produk telkomseln, semoga dapat memenuhi harapan, terimakasih. novan_parisa flash bisa dgunakan untuk aplikasi router (lan), namun memerlukan setingan khusus, silahkan kunjungi grapari terdekat, terimakasih. diankrstn coba hard restart hp, jika masih kendala, silahkan mention kami kembali ya. as r_indahyunita untuk iphone bisa gunakan flash unlimited, tersedia untuk kartu simpati as halo, informasi lengkap: htp: t.cowok 6h9a8jn, terimakasih. d4rm4nsy4h jika sinyal tidak stabil,coba pilih jaringan manual lalu pilih sinyal gsm only,matikan hp sesat,aktifkan lagi amp;amp;pilih jaringan otomatis.terimakasih beuh-_- wcnya seperti sekalian:prt ehsitin: ya tau paling seluas selokan yang ada di ancol haha:p rt mfs_sfm: (cont) htp: t.cowok aq15onqy
Nilai 1
1
1
1
1
0
0
15
Lampiran 3 Lanjutan No 8
ID 2652992
9
2665070
10
2655378
Sebelum RT @uypaaa: Android:D RT @JawabJUJUR Lebih milih punya HP Biasa atau BlackBerry? #JJ | @diki_of Betul itu hihi RT @yans_Shooterrzz: Kta kan android qiqiqi RT zenicristifa Emejing #info acara off air di PRJ besok dicancel yaa. Jadinya off air ditanjungan plaza surabaya.
Sesudah Nilai rt uypa: android:d rt 0 jawabjujur lebih milih punya hp biasa atau blackberry? saja | diki_of betul itu hihi rt 0 yans_shoterz: kata kan android qiqiqi rt zenicristifa emejing informasi acara of air di prj 0 besok dicancel ya. jadinya of air ditanjungan plaza surabaya.
16
Lampiran 4 Contoh tabel kata dan frekuensi pada tiap kelas No 1
Kata Kamu
2
saya
3
sekarang
4
bagaimana
5
cek
6
terimakasih
7
tidak
8
bisa
9
minta
10
telepon
Frekuensi 69 79 3432 82 98 6138 10 11 667 21 16 338 124 10 98 470 12 244 262 136 5610 229 79 1340 7 1 273 33 12 78
Tone positif negatif netral positif negatif netral positif negatif netral positif negatif netral positif negatif netral positif negatif netral positif negatif netral positif negatif netral positif negatif netral positif negatif netral
17
Lampiran 5 Contoh tabel kata dan peluang pada tiap kelas No 1
Kata kamu
2
saya
3
sekarang
4
bagaimana
5
cek
6
terimakasih
7
tidak
8
bisa
9
minta
10
telepon
Nilai Peluang 0.0457 0.2044 0.0733 0.0483 0.1921 0.1263 0.0072 0.0296 0.0166 0.0146 0.0419 0.0083 0.0775 0.0246 0.0025 0.3629 0.0320 0.0063 0.1291 0.2808 0.1258 0.1430 0.1650 0.0318 0.0053 0.0049 0.0064 0.0219 0.0296 0.0021
Tone positif negatif netral positif negatif netral positif negatif netral positif negatif netral positif negatif netral positif negatif netral positif negatif netral positif negatif netral positif negatif netral nositif negatif netral
18
RIWAYAT HIDUP Penulis dilahirkan di Kudus, Jawa Tengah pada tanggal 18 April 1991. Penulis merupakan anak pertama dari pasangan Nurhidayat dan Munawaroh. Pada tahun 2009, penulis menamatkan pendidikan di SMA Negeri 1 Bae, Kabupaten Kudus. Penulis lulus seleksi masuk Institut Pertanian Bogor (IPB) pada tahun yang sama melalui jalur Undangan Seleksi Masuk IPB dan diterima sebagai mahasiswa di Departemen Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam. Selama aktif menjadi mahasiswa, penulis pernah menjadi asisten praktikum Penerapan Komputer (2011 dan 2012). Penulis juga melaksanakan kegiatan Praktik Kerja Lapangan di PT. Navcore Nextology pada tahun 2012. Selain itu, penulis juga aktif dalam berbagai pelatihan di antaranya IT CAMPS Microsoft Indonesia 2012, Pelatihan Wirausaha Muslim CI-Best IPB 2013, dan juga berprestasi dengan meraih penghargaan setara perunggu dalam PIMNAS (Pekan Ilmiah Mahasiswa Nasional) ke-25 Yogyakarta 2012 untuk PKM-T Kategori Poster dengan Judul “Implementasi Virtual Whiteboard sebagai Alat Bantu Pembelajaran Matematika Interaktif bagi Siswa SLB B/C Tunas Kasih 2 Kota Bogor”.