Pages

Selasa, 02 Januari 2018

Analisa Sentimen Twitter



Makalah tentang
Analisa Sentiment Twitter












Oleh :


Hafiyan Nafan Kusuma Satria (16.01.63.0004)
Septina Budi Kurniawati (15.01.63.0020)





Dosen Pengampu : 

Dr. Drs. Eri Zuliarso,M.Kom











FAKULTAS TEKNOLOGI INFORMASI

UNIVERSITAS STIKUBANK

SEMARANG

2017







I. Pengertian Analisa Sentimen Twitter

Analisa Sentimen atau opinion mining adalah cara untuk memahami dan mengolah data tekstual secara otomatis agar mendapatkan informasi sentiment yang terkandung dalam suatu kalimat opini. Sentimental adalah kata yang melekat pada variabel seperti perilaku, evaluasi, dan feeling. Variabel tersebut berperan pada saat kita akan melihat suatu peristiwa dan mengambil keputusan atau opini. Analisis sentiment dilakukan untuk melihat pendapat atau kecenderungan opini terhadap sebuah masalah atau objek oleh seseorang, apakah cenderung mempunyai opini positif atau negatif. Analisis sentimen merupakan cabang penelitian daritext mining. Opinion Mining berfokus pada analisis opini dari suatu dokumen teks.

Analisis sentimen biasa digunakan untuk menilai kesukaan atau ketidaksukaan publik terhadap suatu barang atau jasa. Sentimen tersebut merupakan informasi tekstual yang bersifat subjektif dan memiliki polaritas positif dan negatif. Nilai polaritas ini dapat digunakan sebagai parameter dalam menentukan suatu keputusan.

Sebagai contoh, seorang pendatang baru di suatu daerah meminta pendapat orang di daerah tersebut tentang operator selular yang cocok digunakan untuk mengakses internet. Pendapat orang-orang terhadap operator A berbeda-beda, ada yang positif ada yang negatif. Jumlah pendapat positif dan negatif ini akan menentukan keputusan yang akan diambil pendatang baru tersebut dalam memilih operator selular. Jumlah pendapat yang sangat banyak akan membuat pengambilan keputusan menjadi tidak efisien.



II. Fungsi Analisa Sentimen Twitter

Analisis Sentimen sangat berperan pada sosial media. Perkembangan opini yang ditampung oleh media sosial terus meningkat, opini – opini yang sudah ada sangat mudah untuk disebarkan dan diakses oleh opini orang lain, di sinilah peran analisis diperlukan.


Aplikasi hasil penelitian ini sangat berguna dalam beberapa bidang, namun ada beberapa bidang yang utama, yaitu dalam dunia web-online (mengenai pelayan, maupun marketing), periklanan, bisnis, dan keamanan negara (intelligence).


III. Tahapan implementasi Analisa Sentimen Twitter

Langkah-langkah pengimplementasian dari Analisa Sentimen Twitter :

1. Buka aplikasi Rstudio Versi 1.1.383 
2. Klik File -> New File -> R Script -> simpan dengan nama yang diinginkan 
3. Masuk pada script, instal terlebih dulu paket-paket berikut,
> install.packages(“twitteR”)
> install.packages(“ROAuth”)
> install.packages(“tm”)
> install.packages(“ggplot2”)
> install.packages(“wordcloud”)
> install.packages(“sentimentr”)
> install.packages(“plyr”)
> install.packages(“RTextTools”)
> install.packages(“devtools”)
> install.packages(“e1071”)
> require(devtools) 
4. Load library yang dibutuhkan
> library(e1071)
> library(twitteR)
> library(ROAuth)
> library(tm)
> library(ggplot2)
> library(wordcloud)
> library(sentimentr)
> library(plyr)
> library(RTextTools)
> library(e1071)
> library(sentiment)
> library(Rstem) 
5. Login ke twitter.com, lalu pada beranda pilih developer atau pengembangan pada bagian kanan layar. 
6. Setelah itu, akan terbuka halaman https://dev.twitter.com/ . Pilih manage my apps pada menu tools pada bagian bawah web. 
7. Pilih create new app lalu isikan data diri and. Jika sudah, klik create your twitter application. 
8. Buka aplikasi tersebut lalu copy Consumer Key (API Key), Consumer Secret (API Secret), Acces Token, Access Token Secret. Setelah itu paste ke script line setup_twitter_oauth yang terdapat di dalam petik.
> setup_twitter_oauth("BiRUh2mx4MgiWDmBnyNYIHpgw", "55GvuDVWOaYIyp8oMCUv2j7byx9ZAf0uBQUQKF7SI1tAFvQyJx", "583359199-K0UssCcNSlQJWYYteKXcWqATijetAY2n0sXOjpSP", "xcsyHzGOPtm9C6DEt7ar6MVVk1UsdrZQNN0Uf9vENBQ7b") 
9. Harvest some tweets
> some_tweets = searchTwitter("starbucks", n=500, lang="en") 
10. Get the text
> some_txt = sapply(some_tweets, function(x) x$getText()) 



11. Remove retweet entities
> some_txt = gsub("(RT|via)((?:\\b\\W*@\\w+)+)", "", some_txt)

12. Remove at people

> some_txt = gsub("@\\w+", "", some_txt)

13. Remove punctuation

> some_txt = gsub("[[:punct:]]", "", some_txt)

14. Remove numbers

> some_txt = gsub("[[:digit:]]", "", some_txt)

15. Remove html links

> some_txt = gsub("http\\w+", "", some_txt)

16. Remove unnecessary spaces

> some_txt = gsub("[ \t]{2,}", "", some_txt)

> some_txt = gsub("^\\s+|\\s+$", "", some_txt)

17. Define "tolower error handling" function

> try.error = function(x) {

# create missing value

+ y = NA

# tryCatch error

+ try_error = tryCatch(tolower(x), error=function(e) e)

# if not an error

+ if (!inherits(try_error, "error"))

+ y = tolower(x)

# result

+ return(y)}


18. Lower case using try.error with sapply

> some_txt = sapply(some_txt, try.error)

19. Remove NAs in some_txt

> some_txt = some_txt[!is.na(some_txt)]

> names(some_txt) = NULL

20. Classify emotion
> library(sentiment)

> class_emo = classify_emotion(some_txt, algorithm="bayes", prior=1.0)



21. Get emotion best fit
> emotion = class_emo[,7]



22. Substitute NA’s by "unknown"
> emotion[is.na(emotion)] = "unknown"
23. Classify polarity
> class_pol = classify_polarity(some_txt, algorithm="bayes")



24. Get polarity best fit
> polarity = class_pol[,4]


25. Data frame with results
> sent_df = data.frame(text=some_txt, emotion=emotion,
+ polarity=polarity, stringsAsFactors=FALSE)



26. Sort data frame
> sent_df = within(sent_df,
+ emotion <- decreasing="TRUE))))</span" emotion="" factor="" levels="names(sort(table(emotion),">



27. Plot distribution of emotions
> ggplot(sent_df, aes(x=emotion)) +
+ geom_bar(aes(y=..count.., fill=emotion)) +
+ scale_fill_brewer(palette="Dark2") +
+ labs(x="emotion categories", y="number of tweets")


28. Plot distribution of polarity
> ggplot(sent_df, aes(x=polarity)) +
+ geom_bar(aes(y=..count.., fill=polarity)) +
+ scale_fill_brewer(palette="RdGy") +
+ labs(x="polarity categories", y="number of tweets")



29. Separating text by emotion
> emos = levels(factor(sent_df$emotion))
> nemo = length(emos)
> emo.docs = rep("", nemo)
> for (i in 1:nemo) {
+ tmp = some_txt[emotion == emos[i]]
+ emo.docs[i] = paste(tmp, collapse=" ") }
30. Remove stopwords
> emo.docs = removeWords(emo.docs, stopwords("english"))
31. Create corpus
> corpus = Corpus(VectorSource(emo.docs))
> tdm = TermDocumentMatrix(corpus)
> tdm = as.matrix(tdm)
> colnames(tdm) = emos
32. Comparison word cloud
> comparison.cloud(tdm, colors = brewer.pal(nemo, "Dark2"),
+ scale = c(3,.5), random.order = FALSE, title.size = 1.5)

Program Recommender Movie

Makalah tentang Sistem Recommender




Oleh :
Hafiyan Nafan Kusuma Satria (16.01.63.0004)
Septina Budi Kurniawati (15.01.63.0020)

Dosen Pengampu : 
Dr. Drs. Eri Zuliarso,M.Kom


FAKULTAS TEKNOLOGI INFORMASI
UNIVERSITAS STIKUBANK
SEMARANG
2017



I. Pengertian Recommender System

Recommender system atau Sistem Rekomender merupakan bagian dari information filtering systems yang memprediksi tingkat atau kecenderungan pengguna. Recommender System sangat umum diaplikasikan pada tahun – tahun terakhir  pada berbagai bidang, yang paling populer ada pada bidang film, musik, berita, buku, artikel penelitian, query pencarian, social tags, dan produk secara umum.

Recommender system menghasilkan daftar rekomendasi dalam satu atau dua cara, yaitu melalui penyaringan konten yang kolaboratif. Pendekatan penyaringan kolaboratif membangun model dari perilaku pengguna dimasa lampau  lalu menggunakan model tersebut untuk memprediksi item yang mungkin diminati oleh pengguna. Pendekatan content-based filtering menggunakan serangkaian karakteristik diskrit dari item untuk merekomendasikan item tambahan dengan properti yang sama. Perbedaan antara Collaborative Filtering dengan Content Based Filtering dapat digambarkan dalam kasus pandora dan last.fm sebagai aplikasi perekomendasi musik.

Collaborative Filtering

Metode Collaborative Filtering ini didasarkan pada pengumpulan dan analisa informasi dalam jumlah besar.  Baik mengenai perilaku, aktivitas, dan kecenderungan pengguna dalam rangka untuk memprediksi apa yang disukai oleh pengguna berdasarkan kemiripan dengan pengguna lainnya. Keuntungan utama dari pendekatan collaborative filtering ini adalah tidak membutuhkan mesin untuk menganalisa konten. sehingga handal dalam merekomendasikan item yang kompleks secara akurat. Seperti contoh, ada satu film tanpa perlu memahami item film itu sendiri. Banyak algoritma yang digunakan untuk mengukur kesamaan pengguna atau kesamaan item dalam system rekomendasi. sebagai cointohnya pendekatan collaborative filtering berdasarkan asumsi bahwa orang yang setuju dengan yang lampau akan menyetujui di masa depan dan mereka akan menyukai item dengan jenis yang sama dengan yang lampau. Collaborative Filtering memiliki 3 masalah utama, antara lain :
  • Cold Start (Sistem ini sering membutuhkan data yang tersedia dalam jumlah besar untuk dapat menghasilkan rekomendasi yang akurat).
  • Scalability (Terdapat jutaan pengguna dan produk yang tersedia, sehingga membutuhkan kekuatan komputasi yang sangat besar untuk mengkalkulasi rekomendasi).
  • Sparsity (Ada kemungkinan item yang benar – benar dibutuhkan oleh pengguna yang memiliki rating kecil dikarenakan tertutupi oleh item lain).


Content Based Filtering

Metode ini didasarkan pada deskripsi dari item dan profil kecenderungan pengguna. Pada metode Content Based Filtering ini memiliki kata kunci tersendiri dan digunakan untuk mendeskripsikan item, sedangkan profil pengguna dibangun untuk mengingikasikan item yang disukai oleh pengguna. Dengan kata lain, algorutma ini mencoba untuk merekomendasikan item yang sama dengan apa yang disukai pengguna pada masa lampau atau memeriksa kecenderungan saat ini. Secara khusus, kandidat item yang bermacam – macam dibandingkan dengan item berdasarkan pada pengambilan informasi dan penyaringan informasi.

Untuk menciptakan profil pengguna, sistem berfokus pada 2 tipe informasi, yaitu model kecenderungan pengguna dan riwayar interaksi pengguna pada sistem rekomendasi. Pada dasarnya metode ini menggunakan profil item (sejumlah atribut dan fitur diskrit) yang mengkarakterisasi item dalam sistem. Sistem membuat profil berbasis konten dari pengguna berdasarkan fitur item pada vektor yang dibobotkan. Bobot menandakan pentingnya setiap fitur pada pengguna dan dapat dihitung secara individual menggunakan berbagai teknik. Pendekatan sederhana menggunakan nilai rata – rata dari nilai vector item menggunakan metode machine learning seperti Bayesian Classifier, CLuster Analysis, Decission Trees, dan Artifical Neural Networks untuk mengestimasi kemungkinan bahwa user akan menyukai item.

Feedback langsung dari pengguna menggunakan tombol suka atau tidak suka, dapat digunakan untuk menentukan bobot yang lebih tinggi atau lebih dari beberapa atribut penting. Isu penting dari content ini adalah apakah sistem ini dapat mempelajari kecenderungan dari aksi pengguna yang berhubungan dengan 1 sumber konten dan menggunakannya disemua tipe konten.

Hybrid Recommender Systems

Berdasarkan penelitian yang telah didemondtrasikan adalah pendekatan hybrid yang menggabungkan collaborative filtering dan content based filtering dapat lebih efektif pada beberapa kasus. Pendekatan hybrid dapat diimplementasikan pada beberapa cara, antara lain :
  • Membuat prediksi berbasis konten dan kolaborasi secara terpisah lalu mengkombinasikannya.
  • Menambahkan kapabilitas berbasis konten pada pendekatan berbasis kolaborasi ataupun sebaliknya.
  • Menyatukaan pendekatan menjadi sebuah model.
Hybrid Recommender System ini menggabungkan berbagai teknik untuk mencapai sinergi dalam teknik tersebut, berikut tekniknya :
  1. Collaborative (Sistem yang menghasilkan rekomendasi hanya dengan menggunakan informasi mengenai rating profil dari berbagai user).
  2. Content Based (Sistem yang menghasilkan dari 2 sumber, fitur yang berhubungan dengan produk dan rating yang diberikan pengguna pada mereka).
  3. Demografi (Sistem rekomendasi ini berdasarkan pada demografi profil pengguna. Produk yang direkomendasikan dari berbagai ceruk demografis dengan cara mengkombinasikan rating user pada ceruk tersebut).
  4. Knowledge Based (Sistem ini menyarankan produk berdasarkan kesimpulan mengenai kebutuhan dan kecenderungan pengguna).

II. Fungsi Recommender System
Berikut adalah fungsi dari Recommender System :
  1. Memberikan solusi atau referensi tentang apa saja yang paling banyak diminati/disukai oleh customer.
  2. Bisa untuk strategi marketing.
  3. Meningkatkan loyalitas customer karena sebagai contoh dengan mengetahui apa saja produk yang diminati kebanyakan dari customer akan di sediakan lebih banyak pada toko.
  4. Memberikan peluang baik di dunia bisnis dan ilmu pengetahuan.


III. Tahapan implementasi Recommender System
Langkah-langkah pengimplementasian dari Recommender System :
1. Buka aplikasi Rstudio Versi 1.1.383
2. Klik File -> New File -> R Script -> simpan dengan nama yang diinginkan
3. Masuk pada script,  instal terlebih dulu recommenderlab 
> install.packages(‘recommenderlab’)
4. Load library yang dibutuhkan
> library(datasets)
> library(recommenderlab)
> library(ggplot2)
5. Load data yang akan di gunakan
> data(MovieLense)
> MovieLense
sehingga hasilnya akan seperti dibawah


6.  Visualisasi contoh
> image(sample(MovieLense, 500), main = ‘Raw ratings’)

7. Visualisasi rating
> qplot(getRatings(MovieLense), binwidth = 1,
+ main = ‘Histogram of ratings’, xlab = ‘Rating’)

8. Miring ke kanan
> summary(getRatings(MovieLense))
maka hasilnya seperti berikut,


9. Rata-rata berapa banyak orang yang menonton film
>    qplot(rowCounts(MovieLense), binwidth = 10,
+    main = ‘Movies Rated on average’,
+    xlab = ‘# of users’,
+    ylab = ‘# of movies rated’)    


     10. Rating film dengan kecepatan logaritmik
> recommenderRegistry$get_entries(dataType = ‘realRatingMatrix’)
    maka hasilnya seperti berikut,
    
    
    11. Untuk Algoritma lainnya
>  scheme <- evaluationscheme="" method="‘split’," ovielense="" train=".9,<br"> + k = 1, given = 10, goodRating = 4)
> scheme
hasilnya seperti berikut,

12. Selanjutnya setelah script “scheme” diatas maka ketikkan lagi script dibawah, 
> algorithms <- items="" list="" name="’RANDOM’," nbsp="" param="list(normalize" random="" score="" span="">
+ ‘popular items’ = list(name=’POPULAR’, param=list(normalize = ‘Z-score’)), 
+ ‘user-based CF’ = list(name=’UBCF’, param=list(normalize = ‘Z-score’, 
method=’Cosine’,
+ nn=50, minRating=3)))

13. Kemudian jalankan algoritmanya untuk memprediksi film berikutnya
results <- 10="" 15="" 20="" 3="" 5="" algorithms="" br="" evaluate="" n="c(1," scheme=""> maka hasilnya seperti berikut,

14. Lihat hasil plot nya
> plot(results, annotate = 1:4, legend=’topleft’)

15. Untuk melihat presisinya
> plot(results, ‘prec/rec’, annotate=3)

Lets the spirit of learning :)