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)

Sabtu, 30 September 2017

Sistem Temu Kembali Informasi

Makalah tentang Tokenisasi, 
Stopword Removal, dan Stemming




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

Information Retrieval

Pengertian
Information Retrieval atau Penelususran Kembali Sistem Informasi adalah bagian dari ilmu komputer yang berhubungan dengan pengambilan informasi dari dokumen-dokumen yang didasarkan pada isi dan konteks dari dokumen-dokumen itu sendiri.
Proses dalam sistem temu kembali dapat digambarkan sebagai sebuah proses untuk mendapatkan dokumen yang relevan dari koleksi dokumen melalui pencarian query yang diimputkan user.
Salton menjelaskan bahwa sistem temu kembali informasi bertujuan untuk menjembatani kebutuhan informasi user dengan sumber informasi yang tersedia dalam situasi seperti dikemukakan sebagai berikut:[Salton:1989].
  1. Mempresentasikan sekumpulan ide dalam sebuah dokumen menggunakan sekumpulan konsep.
  2. Terdapat beberapa pengguna yang memerlukan ide, tapi tidak dapat mengidentifikasikan dan menemukannya dengan baik.
  3. Sistem temu kembali informasi bertujuan untuk mempertemukan ide yang dikemukakan oleh penulis dalam dokumen dengan kebutuhan informasi pengguna yang dinyatakan dalam bentuk key word query/istilah penelusuran.

Tokenisasi

Di dalam sistem temu kembali terdapat proses text mining yang memiliki definisi menambang data yang berupa teks dimana sumber data biasanya didapat dari dokumen, dan tujuannya adalah mencari kata-kata yang dapat mewakili isi dari dokumen sehingga dapat dilakukan analisa keterhubungan antar dokumen.
Tahapan yang dilakukan secara umum dalam text mining adalah : tokenizing, filtering, stemming. Pada proses tersebut masing-masing melakukan fungsinya masing-masing. Proses tokenizing adalah tahap pemotongan string input berdasarkan tiap kata yang menyusunnya. Proses ini menghasilkan kata –kata yang berdiri sendiri.
Apakah proses tokenizing penting untuk dilakukan ?

Sangat penting, karena didalam proses ini merupakan tahap pemotongan string input berdasarkan tiap kata yang menyusunnya. Proses ini menghasilkan kata –kata yang berdiri sendiri. Dan kemudian dilakukan proses filtering. Tahap filtering mengambil kata-kata yang penting dari hasil proses token. Dan setelah itu baru dilakukan proses stemming , tagging dan analyzing. Sehingga antara tahap – tahap ini saling terkait dan berhubungan.

Stopword
Modul Pembuangan stopword (filtering). Tahap filtering adalah proses pembuangan term yang tidak memiliki arti atau tidak relevan. Term yang diperoleh pada tahap tokenisasi dicek dalam suatu daftar stopword, jika term masuk dalam daftar stopword maka term tidak akan diproses lebih lanjut, tapi jika term tidak termasuk dalam daftar stopword maka term akan diproses lebih lanjut. Contoh stopwords adalah “yang”, “dan”, “di”, “dari” dan seterusnya.

Stemmming
Stemmming merupakan salah satu proses dari pembuatan sistem temu kembali, dimana proses stemming akan dilakukan setelah proses filtering. Proses stemming ini membuat term yang ada pada tabel filtering menjadi kata dasar, dengan menghilankan semua imbuhan yang ada pada kata tersebut (imbuhan meng-, me-, kan-, di- , i, pe, peng-, a-, dll.)

Pentingnya stemming dalam proses pembuatan sistem temu kembali yakni dimana saat menghilangkan imbuhan pada sebuah kata menjadi hal yang perlu diperhatikan. Karena dalam proses stemming yang penting yakni terlebih untuk menghilangkan imbuhan pada awalan setelah itu akhiran. Apabila yang dilakukan adalah sebaliknya maka tidak akan ditemukan kata dasar yang tepat dan sesuai dengan kamus bahasa. Dimana dari hasil proses tersebut akan didapatkan sebuah informasi mengenai banyaknya term yang muncul dalam sebuah dokumen setelah dilakukan perhitungan term frequency.

Manfaat  dari proses stemming yakni :
  • Hasil pencarian  kemunculan term dapat dijadikan sebagai perhitungan dokumen.
  • Dapat meningkatkan jumlah dokumen yang terambil sebelum dilakukan pengindeksan

Lets the spirit of learning :)