BAB III ANALISIS DAN PERANCANGAN
3.1
Analisis Sistem
3.1.1 Deskripsi Masalah Dalam sebuah perusahaan ataupun organisasi jika ingin meningkatkan kemajuan dan pengembangannya, maka melakukan riset dan development, salah satu caranya melalui cara kuisioner yaitu membagikan kertas ke orang-orang tertentu yang berisi pertanyaan-pertanyaan seputar produk dan brand perusahaan atau organisasinya, lalu hasil kuisioner ini dianalisis apakah produk dan brand tersebut disukai atau tidak, baik atau buruk dan sebagainya. Dengan kuisioner ini perusahaan atau organisasi dapat menilai produk dan brand yang dimilikinya, dan bagaimana mengembangkan produk dan brand kedepan. Melihat dari hal diatas dapat dikatakan jika kuisioner dengan pertanyaanpertanyaan pilihan baik atau buruk, disukai atau tidak dan sebagainya, hal ini dapat dicari pada status-status yang ada di media jejaring sosial. Disadari atau tidak saat ini kebanyakan orang mengeskpresikan perasaan terhadap sesuatu dengan membuat status di situs jejaring sosial. 3.1.2 Pemecahan Masalah Dengan masalah yang telah diuraikan maka diambil sebuah solusi untuk membangun suatu sistem yang dapat mengetahui berapa besar nilai sentiment terhadap suatu brand. Selain itu, sistem memberikan output berupa jumlah data dalam bentuk statistik sentimen.
58
59
Dalam menghitung nilai sentiment setiap percakapan digunakan logika Fuzzy Mamdani agar diketahui berapa nilai sentiment tersebut dalam suatu percakapan. 3.2
Requirement Model Model representasi aliran proses yang akan rancang akan disajikan dalam
bentuk UML (Unified Model Language). UML digunakan untuk menggambarkan aliran informasi dan proses data yang bergerak dari input data hingga output. 3.2.1 Identifikasi Aktor Dalam sistem yang analisis sentiment brand pada media jejaring sosial menggunakan Fuzzy Logic, terdapat satu aktor utama yaitu user, yakni adalah orang yang menjalankan atau menggunakan sistem secara langsung. 3.2.2 Use Case Diagram Usecase diagram adalah gambaran graphical dari beberapa atau semua actor, use case, dan interaksi diantara komponen-komponen tersebut yang memperkenalkan suatu sistem yang akan dibangun. Use case diagram menjelaskan manfaat suatu sistem jika dilihat menurut pandangan orang yang berada di luar sistem. Diagram ini menunjukkan fungsionalitas suatu sistem atau kelas dan bagaimana sistem tersebut berinteraksi dengan dunia luar. Use case diagram dapat digunakan selama proses analisis untuk menangkap requirement sistem dan untuk memahami bagaimana sistem seharusnya bekerja.
60
project
statistic user
conversation
sentiment
Gambar 3.1 Use Case Diagram analisis sentiment brand pada media jejaring sosial menggunakan Fuzzy Logic
3.2.3 Skenario Diagram 1. Skenario Use Case Project. Fungsi proses project adalah agar user dapat melihat project-project yang telah dibuat user dan dapat membuat project sesuai dengan keinginan user. Nomor
:1
Nama use case: Project Aktor
: User
Tipe
: Primary dan esensial
Tujuan
: User dapat melihat keyword-keyword berdasarkan project-nya dan dapat membuat project baru.
Kondisi awal : Tampil halaman data project.
61
Kondisi akhir : Tampilan data project dalam bentuk tabel. Deskripsi
: User dapat melihat data-data proyek termasuk keyword dan topic. User dapat membuat project baru dengan cara memasukkan nama project, keyword dan topic sesuai dengan keinginan user. Hasil terakhir dari membuat project baru adalah menampilkan data statistik. Tabel 3.1 Skenario Use Case project
Actor action 1. Pilih ke menu project 3. Memilih view 5. Memilih menu add 4. Masukan nama project 5. Masukan keyword 6. Masukan topic 7. Klik submit
TIPICAL COURSE OF EVENT Main Flow of Event System action 2. Menampilkan data project dalam bentuk tabel 4. Menampilkan data project dalam bentuk tabel 5. Menampilkan form inputan 8. Sistem masukan ke database 9. Mengambil data dari sosial media twitter dan facebook 10. Cari percakapan yang mengandung sentiment. 11. Penentuan fuzzyfication, Inferensi, defuzzyfication 13. Update ke database. 14. Tampilkan hasil statistik.
Alternate course 6a. Jika inputan nama dan keyword tidak diisi maka, akan muncul peringatan
2. Skenario Use Case Statistic Fungsi proses statistic adalah agar user dapat mengetahui jumlah data dalam bentuk statistik. Nomor
:2
Nama use case: Statistic
62
Aktor
: User
Tipe
: Primary dan esensial
Tujuan
: User memperoleh informasi data dari statistik.
Kondisi awal : Menampilkan chart data statistik. Kondisi akhir : Menampilkan chart data statistik sesuai dengan proyek. Deskripsi
: User memilih menu statistik dan dapat memilih proyek yang diinginkan user, hasilnya sistem akan menampilkan data dalam bentuk statistik. Tabel 3.2 Skenario Use Case Statistic
TIPICAL COURSE OF EVENT Main flow of event Actor action System action 1. Memilih menu statistik. 2. Menampilkan statistik data 3. Memilih project 4. Menampilkan statistik yang sesuai dengan project Alternate course
3. Skenario Use Case Conversation. Fungsi proses conversation adalah agar user dapat melihat percakapan dari data jejaring sosial. Nomor
:2
Nama use case: conversation Aktor
: User
Tipe
: Primary dan esensial
Tujuan
: User dapat melihat percakapan data sosial media, dan mengetahui nilai fuzzy positif atau negatif setiap percakapan, serta user dapat
63
melihat sentimen dari percakapan itu dari hasil defuzzyfication metode mamdani. Kondisi awal :Menampilkan
data
percakapan
dan
nilai
fuzzy
setiap
percakapannya. Kondisi akhir : Menampilkan data percakapan sesuai yang pilihan user. Deskripsi
: User memilih menu conversation dan data media, keyword, topic dan sentiment yang dinginkan, sistem akan manampilkan data percakapannya. Tabel 3.3 Skenario Use Case conversation
TIPICAL COURSE OF EVENT Main Flow of Event Actor action System action 1. Memilih menu conversation 2. Menampilkan data percapakan general (default) 8. Menampilkan data percakapan sesuai dengan pilihan 3. Memilih media 4. Memilih keyword 5. Memilih topic 6. Memilih sentimen 7. Klik tombol change 9. klik defuzzy 10.menampilkan aturan defuzzyfication dan proses inferensi, serta menampilan chart fuzzy set defuzzyfication dan perhitungannya Alternate course 3a. Jika tidak memilih media, maka media umumnya ialah twitter 4a. Jika tidak memilih keyword, maka keyword umumnya ialah keyword pertama 5a. Jika tidak memilih topic, maka topic umumnya ialah topic pertama 6a. Jika tidak memilih sentimen, maka sentimen umumnya ialah positif
64
4. Skenario Use Case Sentiment. Fungsi proses sentiment adalah agar user dapat melihat kata-kata sentiment positif dan negatif untuk parameter pencarian dalam setiap percakapan, selain itu juga user dapat menambahkan kata-kata sentiment tersebut. Nomor
:2
Nama use case: Sentiment Aktor
: User
Tipe
: Primary dan esensial
Tujuan
: User dapat melihat list kata-kata positif dan negatif, serta dapat menambahkan kata-kata positif dan negatif sebagai parameter untuk menentukan sentimen percakapan.
Kondisi awal : Tampilan form berisi list kata-kata positif dan negatif dan form input untuk menambahkan kata-kata positif dan negatif. Kondisi akhir : Tampilan form berisi list kata-kata positif dan negatif dan form input untuk menambahkan kata-kata positif dan negatif. Deskripsi
: User memilih menu sentiment, sistem akan menampilan form tampilan list sentimen dan inputan untuk menambhakan kata-kata sentimen.
65
Tabel 3.4 Skenario Use Case sentiment
Actor action 1. Memilih menu sentiment 3. Memasukan kata positif 4. Memasukan kata negatif 5. Klik tombol add
TIPICAL COURSE OF EVENT Main Flow of Event System action 2. Menampilkan form input dan list sentiment 6. Memasukan data ke database 7. Mengembalikan ke menu list sentiment
Alternate course 6a. Jika data tidak valid atau sudah ada di list, maka sistem akan mengembalikan ke menu list sentiment. 3.2.4 Activity Diagram Menggambarkan rangkaian aliran dari aktivitas dari awal hingga akhir, digunakan untuk mendeskripsikan aktifitas yang dibentuk dalam suatu operasi. 1. Activity Diagram Project Menggambarkan urutan aktivitas dalam sebuah use case project. Dalam activity diagram project digambarkan dua aktivitas yaitu melihat daftar project dan membuat project. Untuk dapat melihat daftar project, user harus mengklik menu view. Sedangkan untuk membuat project, user harus mengklik menu add, kemudian mengisi form add project yang terdiri dari nama project, keyword dan topic sesuai dengan yang diinginkan user. Untuk lebih jelasnya dapat dilihat pada gambar 3.2 di bawah ini:
66
USER
memilih menu project
SYSTEM
menampilkan list project
klik menu view
menampilkan halam an list project
klik menu add
menampilkan form inputan
memasukan inputan
menerima inputan
validasi
insert ke DB
menarik data dari sosmed
search sentiment conversation
hitung nilai fuzzyfication, inferensi dan defuzzyfication
update ke DB
menampilkan statistic data
Gambar 3.2 Activity Diagram Project
67
2. Activity Diagram Statistic Menggambarkan urutan aktivitas dalam sebuah use case statistic. Dalam activity diagram statistic memiliki tujuan untuk menampilkan data statistik dari sentiment setiap brand. Dimulai dari user yang memilih menu statistic kemudian secara otomatis sistem akan menampilkan data dalam bentuk chart. Untuk lebih jelasnya dapat dilihat pada gambar 3.3 dibawah ini:
USER
pilih menu statistic
SYSTEM
menampilakan data statistic
pilih project
menampilakan data statistic sesuai project
Gambar 3.3 Activity Diagram Statistic 3. Activity Diagram Conversation Menggambarkan urutan aktivitas dalam sebuah use case conversation. Dalam activity diagram conversation memiliki tujuan untuk menampilkan percakapan yang mengandung sentiment positif atau negatif. Yang memulai aktivitas adalah user dengan mengklik menu conversation kemudian sistem menampilkan percakapan yang diinginkan user. Untuk lebih jelasnya dapat dilihat pada gambar 3.4 dibawah ini:
68
USER
memilih menu conversation
SYSTEM
menampilkan conversation default
select media, keyword,topic,sentimen
klik change
menampilkan converstion sesuai pilihan
klik defuzzy pada conversation
menampilk perhitungan defuzzyfication
Gambar 3.4 Activity Diagram Conversation 4. Activity Diagram Sentiment Menggambarkan urutan aktivitas dalam sebuah use case sentiment. Dalam activity diagram sentiment memiliki tujuan untuk melihat kata-kata sentiment yang digunakan sebagai dasar untuk menentukan nilai sentiment terhadapt percakapan. Aktivitas yang dilakukan dimulai dari user mengklik menu sentiment kemudian sistem akan menampilkan daftar kata-kata sentiment, kemudian user dapat mengnambahkan kata sentiment dengan mengklik tombol add. Untuk lebih jelasnya dapat dilihat pada gambar 3.5 dibawah ini:
69
USER
SYSTEM
memilih menu sentiment
masukan inputan
menampilkan form input
menerima inputan
validasi salah benar
simpan ke DB
Gambar 3.5 Activity Diagram Sentiment 3.2.5 Class Diagram Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi). Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain. Sehingga dengan adanya class diagram dapat memberikan pandangan umum sebuah sistem.
70
Sk_capt_twitet _id pid keyword_id topic_id sent_word_pos sent_count_word_pos sent_word_neg sent_count_word_neg fuzzyneg defuzzy sentim ent created_at fuzzypos from_user from_user_id from_user_id_str from_user_name geo id id_str iso_language_code profile_image_url profile_image_url_https source text to_user to_user_id to_user_id_str to_user_name dtime created_at_
sk_listneg _id word
sk_capt_facebook
view() insert() 1 1..* sk_keyword
0..*
1..*
_id pid keyword name topic
1..*
0..*
view() add() 1..*
1 sk_listpos _id word
_id pid keyword_id topic_id sent_word_pos sent_count_word_pos sent_word_neg sent_count_word_neg fuuzzyneg fuzzypos defuzzy sentiment id from message type application_name application_id created_time updated_time view() insert()
view() insert()
view() insert()
Gambar 3.6 Class Diagram analisidis sentiment brand pada media jejaring sosial menggunakan metode Fuzzy Logic a. Kelas Perancangan Kelas – kelas yang terbentuk dari tahap analisis, dan akan digunakan pada tahap perancangan, adalah sebagai berikut: Tabel 3.5 Kelas perancangan No 1. 2. 3. 4. 5.
Nama Kelas Perancangan Sk_ capt_twitter Sk_capt_facebook Sk_keyword Sk_listpos Sk_listneg
Nama Tabel Twitter Facebook Keyword Listpos Listneg
71
b. Atribut 1. Tabel Twitter Tabel 3.6 Atribut Twitter NAMA ATRIBUT Id Pid topic_id sent_word_pos sent_count_word_pos sent_word_neg sent_count_word_neg Fuzzyneg Defuzzy Sentiment created_at Fuzzypos from_user from_user_id from_user_id_str from_user_name Geo id_str iso_language_code profile_image_url profile_image_url_https Source Text to_user to_user_id to_user_id_str to_user_name Dtime
VISIBILITY (PUBLIC,PRIVATE) Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private
TYPE Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
72
2. Tabel Facebook Tabel 3.7 Atribut Facebook NAMA ATRIBUT Id Pid topic_id sent_word_pos sent_count_word_pos sent_word_neg sent_count_word_neg Fuzzyneg Defuzzy Sentiment Id from Message Type application_name application_id ceated_time id_str updated_time
VISIBILITY (PUBLIC,PRIVATE) Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private
TYPE Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
3. Tabel Keyword Tabel 3.8 Atribut Keyword NAMA ATRIBUT Id Pid Keyword Name Topic
VISIBILITY (PUBLIC,PRIVATE) Private Private Private Private Private
TYPE Text Text Text Text Text
73
4. Tabel Listpos Tabel 3.9 Atribut Listpos NAMA ATRIBUT _id Word
VISIBILITY (PUBLIC,PRIVATE) Private Private
TYPE Text Text
5. Tabel Listneg Tabel 3.10 Atribut Listneg NAMA ATRIBUT _id Word
VISIBILITY (PUBLIC,PRIVATE) Private Private
TYPE Text Text
3.2.6 Sequence Diagram Sequence diagram adalah suatu diagram yang menggambarkan interaksi antar obyek dan mengindikasikan komunikasi diantara obyek-obyek tersebut. Diagram ini juga menunjukkan serangkaian pesan yang dipertukarkan oleh obyekobyek yang melakukan suatu tugas atau aksi tertentu. Obyek-obyek tersebut kemudian diurutkan dari kiri ke kanan, aktor yang menginisiasi interaksi biasanya ditaruh di paling kiri dari diagram. 1. Sequence Diagram Project Menjelaskan bagaimana user melakukan interaksi dengan sistem untuk mengetahui data project yang telah dibuat dan user dapat membuat project baru. Untuk membuat project baru user harus mengisi form add yang terdiri dari nama project, keyword dan topic yang dinginkan.
74
Sequence diagram project dapat dilihat pada gambar 3.7 dibawah ini:
menu project
: user
Menu Add Project
DB
menu statistic
id project select data data project select add input data data project
insert
hitung nilai fuzzyfication, inferensi & defuzzyfication data project
Gambar 3.7 Sequence Diagram Project
2. Sequence Diagram Statistic Menjelaskan bagaimana user melakukan interaksi dengan sistem untuk mengetahui data statistic suatu project. User memulai dengan mengklik menu statistic dengan membawa pesan id project, setelah itu sistem akan langsung menampilakan data statistik setiap brand beserta jumlah sentiment-nya.
75
Sequence diagram statistic dapat dilihat pada gambar 3.8 dibawah ini:
menu statistic
: user
DB
id project id project select data data statistic
Gambar 3.8 Sequence Diagram Statistic
3. Sequence Diagram Conversation Menjelaskan bagaimana user melakukan interaksi dengan sistem untuk melihat setiap percakapan dengai nilai fuzzy dan defuzzyfication. Dimulai dengan user mengklik menu conversation dengan membawa pesan id project yang telah dipilih sebelumnya, kemudian sistem akan menampilakan percakapan. User dapat memilih media, brand dan sentiment yang diinginkan oleh user.
76
Sequence diagram conversation dapat dilihat pada gambar 3.9 dibawah ini:
menu conversation
: user
defuzzyfication
DB
id project select data data selection view conversation
select data DB
defuzzy data fuzzy count defuzzyfication
Gambar 3.9 Sequence Diagram Conversation 4. Sequence Diagram Sentiment Menjelaskan bagaimana user melakukan interaksi dengan sistem untuk mengetahui data statistic suatu project. Dimulai dari user dengan memilih menu sentiment, kemudian sistem menampilkan form input sentiment dan list sentiment, user mengisi form berupa kata sentiment, kemudian sistem akan memasukan ke database dengan pesan berupa pesan inputan dari user.
77
Sequence diagram sentiment dapat dilihat pada gambar 3.10 dibawah ini:
menu sentiment
: user
DB
pilih menu sentiment input data sentiment data input insert data input salah
tampil peringatan salah
Gambar 3.10 Sequence Diagram Sentiment
3.3
tf (Term Frequency) tf (Term Frequency) yaitu banyak kata yang dicari dalam sebuah dokumen
/ percakapan (conversation). Untuk dapat mengetahui jumlah tf per percakapan maka harus ada parameter kata-kata sentiment positif dan negatif. Dari parameter sentiment ini dicari dalam setiap percakapan dan dihitung berapa jumlah kata positif dan negatif yang ditemukan dalam setiap percakapan.
78
3.4
Aturan Sistem Fuzzy Suatu sistem berbasis aturan fuzzy yang lengkap terdiri dari tiga komponen
utama yaitu fuzzification, Inference, Defuzzification.
Gambar 3.11 Diagram blok lengkap sistem berbasis aturan fuzzy (Yogawati Wulandari, 2011). 3.4.1 Fuzzyfication (Himpunan Fuzzy) Fuzzification merupakan proses mengubah masukan-masukan yang nilai kebenarannya bersifat pasti (crisp input) ke dalam bentuk fuzzy input. Fuzzification didasarkan pada gagasan untuk memperluas jangkauan fungsi karakteristik sedemikian hingga fungsi tersebut akan mencakup bilangan real pada interval [0,1]. Nilai keanggotaannya menunjukkan bahwa suatu item tidak hanya bernilai benar atau salah. Nilai 0 menunjukkan salah, nilai 1 menunjukkan benar, dan masih ada nilai-nilai yang terletak antara benar dan salah. 1. Pembentukan Fuzzyfication. Untuk menghitung nilai sentiment percapakan diperlukan dua variabel input fuzzy, yaitu tf positif dan tf negatif, serta satu variabel output fuzzy yaitu sentiment. Untuk lebih jelasnya dapat dilihat dari tabel semesta pembicaraan variable fuzzy dibawah ini:
79
Tabel 3.11 Semesta Pembicaraan Variabel Fuzzy Fungsi Input Output
Nama Variabel tf positif tf negative Sentiment
Semesta Pembicaraan [0 s/d max(tf p) ] [0 s/d max(tf n) ] [0 s/d (max(tf) ]
Dikarenakan analisis sentiment brand ini menggunakan dynamic fuzzyfication sehingga untuk semesta pembicaraan input fuzzy berdasarkan nilai maximum tf positif dan negatif. Untuk semesta output fuzzy dilihat dari nilai maximum tf , jika yang maximum tf positif lebih besar dari pada nilai maximum tf negatif maka semesta pembicaraan didasarkan pada maximum tf positif, atau sebaliknya. Dari variabel yang telah dimunculkan, kemudian disusun domain himpunan fuzzy. Berdasarkan domain tersebut, selanjutnya ditentukan fungsi keanggotaan dari masing-masing variabel. Tabel 3.12 Fuzzyfication Variabel
Himpunan Sedikit
Positif
Sedang Banyak Sedikit
Negatif
Sedang Banyak
Sentiment
Negatif
Domain [0 s/d p
[ p
]
s/d max(tf p)
] [ p
p
]
s/d max(tf n)
]
n
s/d
[0 s/d
Segitiga kanan
[ n
Segitiga tengah
]
[0 s/d n
[ n
s/d
Fungsi Keanggotaan Segitiga kiri
]
Segitiga kiri Segitiga tengah Segitiga kanan
] Trapesium kiri
80
•
Netral
[
Positif
[
]
Trapesium tengah
s/d ]
Trapesium kanan
s/d
Fuzzyfication Positif Pada fuzzyfication positif didefinisikan tiga variable linguistik, yaitu sedikit , sedang, dan banyak. Untuk merepresentasikan variabel positif, digunakan bentuk segitiga kiri untuk himpunan fuzzy sedikit, bentuk kurva segitiga tengah untuk himpunan fuzzy sedang, dan bentuk kurva segitiga kanan untuk himpunan fuzzy banyak.
Gambar 3.12 Fuzzyfication Positif Sumbu horizontal merupakan nilai input dari variabel positif, sedangkan sumbu vertikal merupakan tingkat keanggotaan dari nilai input, dimana tingkat keanggotaan diinisialisasikan dengan tfr merupakan domain awal positif sedikit, tfs merupakan domain akhir positif sedikit dan domain awal positif sedang, tft merupakan domain akhir positif sedang yang merupakan nilai maximum tf positif dan tfx merupakan domain akhir positif banyak. Dengan fungsi keanggotaan sebagai berikut:
µSedikit =
0
X ≤ 0, X ≥ tfs
(X - 0) / (tfr - 0)
0 < X ≤ tfr
- (X - tfs) / (tfs - tfr)
tfr < X ≤ tfs
81
0
X ≤ tfr, X ≥ tft
(X - tfr) / (tfs - tfr)
tfr < X ≤ tfs
- (X - tft) / (tft - tfs)
tfs < X ≤ tft
0
X ≤ tfs, X ≥ tfx
(X - tfs) / (tft - tfs)
tfs < X ≤ tft
- (X - tfx) / (tfx - tft)
tft < X ≤ tfx
µSedang =
µBanyak =
Nilai antara 0 sampai tfs termasuk positif sedikit, nilai antara tfr sampai tft termasuk positif sedang, nilai antara dari tfs sampai tfx termasuk positif banyak, nilai antara tfr sampai tfs termasuk positif sedikit dan positif sedang, Nilai antara tfs sampai tft termasuk positif sedang dan positif banyak. •
Fuzzyfication Negatif Pada fuzzyfication negatif didefinisikan tiga variable linguistik, yaitu sedikit, sedang, dan banyak. Untuk merepresentasikan variabel negatif, digunakan bentuk segitiga kiri untuk himpunan fuzzy sedikit, bentuk kurva segitiga tengah untuk himpunan fuzzy sedang, dan bentuk kurva segitiga kanan untuk himpunan fuzzy banyak.
Gambar 3.13 Fuzzyfication Negatif
82
Sumbu horizontal merupakan nilai input dari variabel negatif, sedangkan sumbu vertikal merupakan tingkat keanggotaan dari nilai input, dimana tingkat keanggotaan diinisialisasikan dengan tfr merupakan domain awal negatif sedikit, tfs merupakan domain akhir negatif sedikit dan domain awal negatif banyak, tft ialah domain akhir negatif sedang yang merupakan nilai maximum tf negatif dan tfx
merupakan domain akhir negatif banyak. Dengan fungsi
keanggotaan sebagai berikut:
µSedikit =
µSedang =
µBanyak =
0
X ≤ 0, X ≥ tfs
(X - 0) / (tfr - 0)
0 < X ≤ tfr
- (X - tfs) / (tfs - tfr)
tfr < X ≤ tfs
0
X ≤ tfr, X ≥ tft
(X - tfr) / (tfs - tfr)
tfr < X ≤ tfs
- (X - tft) / (tft - tfs)
tfs < X ≤ tft
0
X ≤ tfs, X ≥ tfx
(X - tfs) / (tft - tfs)
tfs < X ≤ tft
- (X - tfx) / (tfx - tft)
tft < X ≤ tfx
Nilai antara 0 sampai tfs termasuk negatif sedikit, nilai antara tfr sampai tft ermasuk negatif sedang, nilai antara dari tfs sampai tfx termasuk negatif banyak, nilai antara tfr sampai tfs termasuk negatif sedikit dan negatif sedang, Nilai antara tfs sampai tft termasuk negatif sedang dan negatif banyak.
83
Pada dasarnya fuzzyfication positif dan negatif memiliki grafik yang sama, hanya yang membedakan adalah nilai tfr, tfs, tft dan tfx yang masing-masing tingkat keanggotaanya tergantung dari jumlah maximum tf. •
Fuzzyfication Sentiment Pada fuzzyfication sentiment didefinisikan tiga variable linguistik, yaitu negatif, netral, dan positif. Untuk merepresentasikan variabel sentiment, digunakan bentuk trapesium kiri untuk himpunan fuzzy negatif, bentuk kurva trapesium tengah untuk himpunan fuzzy netral, dan bentuk kurva trapesium kanan untuk himpunan fuzzy positif.
Gambar 3.14 Fuzzyfication Sentiment Sumbu horizontal merupakan nilai input dari variabel sentiment, sedangkan sumbu vertikal merupakan tingkat keanggotaan dari nilai input, dimana tingkat keanggotaan diinisialisasikan tft (term frequency maximum). Dengan fungsi keanggotaan sebagai berikut:
µNegatif =
0
X ≤ 0, X ≥ tf-b
(X - 0) / (tf-b - 0)
0 < X < tfr
1
tf-a ≤ X ≤ tf-b
- (X – tf-c) / (tf-c – tf-b)
tf-b < X ≤ tf-c
84
0
X ≤ tf-b, X ≥ tf-e
(X - tf-b) / (tf-c - tf-b)
Tf-b < X ≤ tf-c
1
tf-a ≤ X ≤ tf-b
- (X – tf-e) / (tf-e – tf-d)
Tf-d < X ≤ tf-e
µNetral =
µPositif =
0
X ≤ tf-d, X ≥ tft
(X - tf-d) / (tf-e - tf-d)
tf-d < X ≤ tf-e
1
tf-e < X ≤ tf-f
- (X – tft) / (tft – tf-f)
Tf-f < X ≤ tft
Nilai antara 0 sampai tf-c termasuk sentiment negatif, nilai antara tf-b sampai tf-e termasuk sentiment netral, nilai antara dari tf-d sampai tf-t termasuk sentiment positif, nilai antara tf-b sampai tf-c termasuk sentiment negatif dan sentiment netral, nilai antara tf-d sampai tf-e termasuk sentiment netral dan sentiment positif. 2. Inference Inference melakukan penalaran menggunakan fuzzy input dan fuzzy rules yang telah ditentukan sehingga menghasilkan fuzzy output. Secara sintaks, suatu fuzzy rule (aturan fuzzy) dituliskan sebagai: IF antecendent THEN consequent Terdapat dua model aturan fuzzy yang digunakan secara luas dalam berbagai aplikasi, yaitu Model Mamdani dan Model Sugeno. Dalam analasis sentiment ini, menggunakan aturan fuzzy model Mamdani.
85
•
Aturan Fuzzy Sentiment Untuk dapat menentukan sentiment akhir dari hasil fuzzyfication, maka harus dibentuk aturan fuzzy. Aturan - aturan dibentuk untuk menyatakan relasi antara input dan output. Tiap aturan merupakan suatu implikasi. Operator yang digunakan untuk menghubungkan antara dua input adalah operator AND, dan yang memetakan antara input-output adalah IF-THEN.Fungsi implikasi yang digunakan adalah fungsi MIN, yaitu dengan mengambil tingkat keanggotaan yang minimum dari variabel input sebagai output-nya. Aturan fuzzy ini disesuaikan dengan nilai fuzzy output. Tabel 3.13 Aturan Fuzzy sentiment
No. 1
•
Parameter Masukan (JIKA) Positif Negatif Sedikit Sedikit
2 3 4 5
Sedang Banyak Sedikit Sedang
Sedikit Sedikit Sedang Sedang
6 7 8 9
Banyak Sedikit Sedang Banyak
Sedang Banyak Banyak Banyak
Parameter Keluaran (MAKA) Sentiment Negatif jika nilai negatif > nilai positif Netral jika nilai negatif = nilai positif Positif jika nilai negatif < nilai positif Positif Positif Negatif Negatif jika nilai negatif > nilai positif Netral jika nilai negatif = nilai positif Positif jika nilai negatif < nilai positif Positif Negatif Negatif Negatif jika nilai negatif > nilai positif Netral jika nilai negatif = nilai positif Positif jika nilai negatif < nilai positif
Proses Inference Setelah aturan dibentuk, maka dilakukan aplikasi fungsi implikasi. Fungsi implikasi yang digunakan adalah MIN (Cosjunction), yang berarti tingkat keanggotaan yang didapat sebagai konsekuen dari proses ini adalah nilai
86
minimum dari variabel positif atau negatif. Sehingga didapatkan daerah fuzzy pada variabel sentiment untuk masing – masing aturan. Pada metode Mamdani, komposisi antar fungsi implikasi menggunakan fungsi MAX yaitu dengan cara mengambil nilai maksimum dari output aturan kemudian menggabungkan daerah fuzzy dari masing-masing aturan dengan menggunakan operator OR (Disjunction). µsentiment[x]= max (µsedikit [x],µsedang [x],µbanyak [x]) 3. Defuzzyfication (Penegasan) Defuzzification merupakan proses mengubah fuzzy output menjadi crisp value berdasarkan fungsi keanggotaan yang telah ditentukan. Terdapat berbagai metode defuzzification yang telah berhasil diaplikasikan untuk berbagai macam masalah, di sini metode yang digunakan yaitu metode Centroid. Metode Centroid disebut juga sebagai Center of Area atau Center of Gravity.
Metode
ini
menghitung ∗
nilai
crisp
menggunakan
rumus:
! " ! "
Dimana y* suatu nilai crisp. Fungsi integration dapat diganti dengan fungsi summation jika y bernilai diskrit, sehingga menjadi : ∗
∑ ! ∑ !
di mana y* adalah nilai crisp dan µR(y) adalah derajat keanggotaan dari y.
87
CONTOH KASUS Misal terdapat beberapa percapakan seperti dibawah ini: Tabel 3.14 Percakapan (Contoh Kasus) Dokumen User 1 ir_tox
2
3 4
5
Message PUAS : Paketan lengkap, Umb menu rapi, Anti pending dan Sinyal kuat #Puas2 @BrandA Manovtaa BrandA kalo lagi bagus sinyal kenceng tp gilirann sinyal jelek bapuk bgt! Pradaivon Baru sadar BrandA mahal (¯ ―¯ ٥) yg penting sinyal kuat NatasyaMei Sumpah jadi males banget pake BrandA. Sinyal jelek minta bayar mahal RankSykoembank knpa kok skrng jaringn internet BrandA gk sprti biasa y ?lama loadingnya, kdang gagal..? Pd hal dh beli paket OprMini
Langkah 1 : Tentukan parameter sentiment Untuk dapat menentukan suatu percakapan mengandung sentiment atau tidak, maka harus dicari menggunakan parameter sentiment. Sebagai contoh dapat dilihat pada tabel dibawah ini: Tabel 3.15 Parameter Sentiment (Contoh Kasus) No 1 2 3 4 5 6 7
Positif Lengkap Rapi Kuat Bagus Kenceng Penting Keren
Negatif bapuk mahal goblok lama gagal males jelek
88
Langkah 2 : Hitung tf (Term Frequency) TF (Term Frequency) yaitu banyak kata yang dicari dalam sebuah dokumen. Dalam contoh percakapan dengan parameter sentiment yang ditentukan, maka dihasilkan nilai TF seperti pada tabel dibawah ini: Tabel 3.16 Perhitungan tf (term frequency) (Contoh Kasus) Dokumen 1 2 3 4 5
TF Positif 4 2 1 0 0
TF Negatif 0 2 2 3 2
Langkah 3 : Tentukan Fuzzyfication dan hitung nilai fuzzy Dari nilai tf yang didapat, maka nilai tf maximum positif yaitu 4 dan nilai tf maximum negatif yaitu 3. Fungsi keangotaan positif didasarkan pada nilai maximum tf positif, dan hasilnya dapat dilihat dari gambar diawah ini:
Gambar 3.15 Fuzzyfication Positif (Contoh Kasus) T (banyak)
= max (tf positif)
T
=4
S (sedang)
= max (tf p) – (max (tf p) x 1/3)
S
= 4 – (4 x 1/3)
89
S
= 2.67
R (sedikit)
= max (tf p) – (max (tf p) x 2/3)
R
= 4 – (4 x 2/3)
R
= 1.33
Hitung nilai Fuzzy Positif pada setiap dokumen. Tabel 3.17 Perhitungan Fuzzy Positif (Contoh Kasus) Dok 1
tf Fuzzy Positif Positif 4 µSedikit = 0 , X ≤ 0 µSedang = 0 , X ≥ 0
Grafik sedikit
sedang
banyak
1.33
2.67
4
µBanyak = - (4 - 5.33) / (5.33-4) =1/1 =1 2
2
µSedikit = - (2 - 2.67) / (2.67-1.33) = 0.67 / 1.33 = 0.50 µSedang = (2 -1.33) / (2.67-1.33) = 0.67 / 1.34 = 0.50
3
1
µBanyak = 0 µSedikit = 0 µSedang = (1 - 0) / (1.33 - 0) = 1 / 1.33 = 0.75 µBanyak = 0
sedikit
0
5
0
µSedikit = 0 µSedang = 0 µBanyak = 0 µSedikit = 0 µSedang = 0 µBanyak = 0
sedang
banyak
2.67
4
0.5
1.33
sedikit
2
5.33
sedang
banyak
2.67
4
0.75
1 1.33
4
5.33
5.33
90
Untuk fungsi keanggotaan negatif, cara perhitungannya sama dengan fungsi keanggotaan positif dimana hanya nilai maximum tf positif digantikan dengan nilai maximum tf negatif. Fungsi keanggotaan negatif dapat dilihat pada gambar dibawah ini.
Gambar 3.16 Fuzzyfication Negatif (Contoh Kasus) T (banyak)
= max (TF negatif)
T
=3
S (sedang)
= max (TF negatif) – (max (TF negatif) x 1/3)
S
= 3 – (3 x 1/3)
S
=2
R (sedikit)
= max (TF negatif) – (max (TF negatif) x 2/3)
R
= 3 – (3 x 2/3)
R
=1
91
Hitung nilai Fuzzy Negatif pada setiap dokumen: Tabel 3.18 Contoh Perhitungan Fuzzy Negatif (Contoh Kasus) Dok 1
2
tf Fuzzy Negatif Negatif 0 µSedikit = 0 µSedang = 0 µBanyak = 0 2
µSedikit = 0 µSedang = (2 - 1) / (2 - 1) =1/1 =1
Grafik
sedikit
sedang
banyak
1
2
3
sedikit
sedang
banyak
1
2
3
sedikit
sedang
banyak
1
2
3
sedikit
sedang
banyak
1
2
3
µBanyak = 0 3
2
µSedikit = 0 µSedang = (2 - 1) / (2 - 1) =1/1 =1
4
µBanyak = 0 4
5
3
2
µSedikit = 0 µSedang =0 µBanyak = (3 - 2) / (3 - 2) =1/1 =1
µSedikit = 0 µSedang = (2 - 1) / (2 - 1) =1/1 =1
4
4
µBanyak = 0 4
92
Untuk lebih jelas nilai Fuzzy positif dan negatif seperti pada tabel dibawah ini: Tabel 3.19 Nilai Fuzzy positif dan negatif (Contoh Kasus) Dok 1
tf Fuzzy Positif Positif 4 µSedikit = 0 µSedang = 0 µBanyak = 1
2
2
3
1
4
0
5
0
µSedikit = 0.50 µSedang = 0.50 µBanyak = 0 µSedikit = 0 µSedang = 0.75 µBanyak = 0 µSedikit = 0 µSedang = 0 µBanyak = 0 µSedikit = 0 µSedang = 0 µBanyak = 0
tf Fuzzy Negatif Negatif 0 µSedikit = 0 µSedang = 0 µBanyak = 0 2
2
3
2
µSedikit = 0 µSedang = 1 µBanyak = 0 µSedikit = 0 µSedang =0 µBanyak = 1 µSedikit = 0 µSedang =0 µBanyak = 1 µSedikit = 0 µSedang =1 µBanyak = 0
Langkah 4 : Inference fungsi MIN (Conjunction), yaitu dengan mengambil tingkat keanggotaan yang minimum dari variabel input sebagai output-nya. Sesuai dengan aturan fuzzy analisis sentiment pada table 3.7, dan perhitungan Fuzzy positif dan negatif yang dapat masukan kedalam fungsi MIN. Tabel 3.20 Perhitungan fungsi MIN (Contoh Kasus) Dok
Fuzzy Positif
Fuzzy Negatif
Conjuction
1
µSedikit = 0 µSedang = 0 µBanyak = 1
µSedikit = 0 µSedang = 0 µBanyak = 0
α- positif1 = min (µPositifBanyak) = min (1) =1
2
µSedikit = 0.50 µSedang = 0.50 µBanyak = 0
µSedikit = 0 µSedang = 1 µBanyak = 0
α- negatif1 = min (µPositifSedikit, µNegatifSedang) = min (0.50,1) = 0.5 α- negatif2 = min (µPositifSedang, µNegatifSedang) = min (0.50,1)
93
3
4
5
µSedikit = 0 µSedang = 0.75 µBanyak = 0 µSedikit = 0 µSedang = 0 µBanyak = 0 µSedikit = 0 µSedang = 0 µBanyak = 0
µSedikit = 0 µSedang =0 µBanyak = 1 µSedikit = 0 µSedang =0 µBanyak = 1 µSedikit = 0 µSedang =1 µBanyak = 0
= 0.5 α- negatif1 = min (µPositifSedang, µNegatifBanyak) = min (0.75,1) = 0.75 α- negatif 1 = min (µNegatifBanyak) = min (1) =1 α- negatif 1 = min (µNegatifSedang) = min (1) =1
fungsi MAX (Disjunction), yaitu dengan mengambil tingkat keanggotaan yang maximum dari hasil MIN (conjunction).
maka dapat dihasilkan nilai
disjunction seperti pada perhitungan tabel dibawah ini : Tabel 3.21 Perhitungan fungsi MAX (Contoh Kasus) Dok
Conjuction
1
α- positif1 = 1
2
α- negatif1 = 0.5 α- negatif2 = 0.5
3
α- negatif1 = 0.75
4
α- negatif 1 =1
5
α- negatif 1 = 1
Disjunction µsf[positif] = max (α- positif1) = max(1) =1 µsf[negatif] = max (α- negatif1, α- negatif2) = max(0.5 , 0,5) = 0.5 µsf[negatif] = max (α- negatif1) = max(0.75) = 0.75 µsf[negatif] = max (α- negatif1) = max(1) =1 µsf[negatif] = max (α- negatif1) = max(1) =1
Langkah 5 : Defuzzyfication Fuzzification sentiment ditentukan berdasarkan nilai terbesar tf yaitu 4, maka dapat dihasilkan fuzzyfication sentiment sebagai berikut:
94
Gambar 3.17 Fuzzyfication Sentiment (Contoh Kasus) Dari gambar diatas maka dapat dihitung nilai fuzzyfication-nya. Tabel 3.22 Perhitungan Fuzzyfication Sentiment (Contoh Kasus) Dok 1
Conjuction µsf[positif] = 1
Defuzzyfication ∗ ∗ ∗ ∗
2
µsf[negatif] = 0.5
∗ ∗ ∗ ∗
∑ ∑
2.8 3.0 3.2 3.4 3.6 ∗ 1.0 1.0 ∗ 5 16 5 3.2
∑ ∑
0.4 0.6 0.8 1.0 1.2 ∗ 0.5 0.5 ∗ 5 2.0 2.5 0.8
95
3
µsf[negatif] = 0.75
∗ ∗ ∗ ∗
4
µsf[negatif] = 1
∗ ∗ ∗ ∗
5
µsf[negatif] = 1
∗ ∗ ∗ ∗
∑ ∑
0.4 0.6 0.8 1.0 1.2 ∗ 0.75 0.75 ∗ 5 3.0 3.75 0.8
∑ ∑
0.4 0.6 0.8 1.0 1.2 ∗ 1.0 1.0 ∗ 5 4.0 5.0 0.8
∑ ∑
0.4 0.6 0.8 1.0 1.2 ∗ 1.0 1.0 ∗ 5 4.0 5 0.8
96
3.5
Perancangan Tampilan
3.5.1 Perancangan Tampilan View Project Pada perancangan tampilan view project ini terdapat dua menu yaitu view dan add. Menu view digunakan untuk menampilkan data project berisi nama project, keyword dan topic yang telah di buat. Gambar perancangan tampilan view project dapat dilihat pada gambar 3.17 dibawah ini:
view add ID
Nama
Keyword
Topic
footer Gambar 3.18 Perancangan Tampilan View Project
97
3.5.2 Perancangan Tampilan Add Project Tampilan ini berada pada menu project, kemudian memilih menu add. Tampilan ini digunakan sebagai form input project baru, yang nantinya akan digunakan sebagai kata kunci pencarian data. Gambar perancangan tampilan add project dapat dilihat pada gambar 3.18 dibawah ini:
view add Project Name Keyword
Topic
footer Gambar 3.19 Perancangan Tampilan Add Project 3.5.3 Perancangan Tampilan Statistic Menampilkan data statistic dari sebuah project yang telah dibuat. Statistik yang ditampilkan mulai dati jumlah perbedaan antara media, jumlah per brand, jumlah sentiment per media dan jumlah sentiment per brand. dibuatnya statistik ini agar memudahkan dalam melihat perbedaan antara brand satu dengan yang lainnya. Gambar perancangan tampilan statistic dapat dilihat pada gambar 3.19 dibawah ini:
98
footer Gambar 3.20 Perancangan Tampilan Statistic 3.5.4 Perancangan Tampilan Conversation Menampilkan data percakapan beserta nilai fuzzy positif dan negatif. Dalam perancangan ini terdapat list box untuk memilih percakapan yang diinginkan. List box yang disediakan antara lain media, keyword, topic dan sentiment. Gambar perancangan tampilan conversation dapat dilihat pada gambar 3.20 dibawah ini:
media
keyword
created keyword user
topic
media text
change
count pos
word pos
count neg
word neg
fuzzy pos
fuzzy neg
defuzzy
footer Gambar 3.21 Perancangan Tampilan Conversation
99
3.5.5 Perancangan Tampilan Sentiment Menampilkan form untuk melihat list sentiment positif dan negatif, juga dapat menambahkan kata sentiment baru. Tombol add digunakan untuk menambahkan kata sentiment. Gambar perancangan tampilan sentiment dapat dilihat pada gambar 3.21 dibawah ini:
List sentiment positif
add sentiment positif
List sentiment negatif
add sentiment positif
add
footer Gambar 3.22 Perancangan Tampilan Sentiment